1 /*
2 * Copyright (c) 2023-2024 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 "core/interfaces/native/node/node_text_input_modifier.h"
16 #include <string>
17
18 #include "core/components/text_field/textfield_theme.h"
19 #include "core/components_ng/pattern/text_field/text_field_model_ng.h"
20 #include "base/utils/utf_helper.h"
21 #include "bridge/common/utils/utils.h"
22 #include "core/components/common/properties/text_style_parser.h"
23 #include "core/interfaces/arkoala/arkoala_api.h"
24 #include "interfaces/native/node/node_model.h"
25
26 namespace OHOS::Ace::NG {
27 namespace {
28 const uint32_t MAX_LINES = 3;
29 constexpr uint32_t DEFAULT_CARE_POSITION = 0;
30 constexpr CopyOptions DEFAULT_TEXT_INPUT_COPY_OPTION = CopyOptions::Local;
31 constexpr bool DEFAULT_SHOW_PASSWORD_ICON_VALUE = true;
32 constexpr TextAlign DEFAULT_TEXT_ALIGN_VALUE = TextAlign::START;
33 constexpr InputStyle DEFAULT_INPUT_STYLE = InputStyle::DEFAULT;
34 constexpr bool DEFAULT_SELECTION_MENU_HIDDEN = false;
35 constexpr bool DEFAULT_SHOW_UNDER_LINE = false;
36 constexpr bool DEFAULT_ENABLE_AUTO_FILL = true;
37 constexpr bool DEFAULT_ENABLE_AUTO_FILL_ANIMATION = true;
38 constexpr bool DEFAULT_REQUEST_KEYBOARD_ON_FOCUS = true;
39 constexpr DisplayMode DEFAULT_BAR_STATE = DisplayMode::AUTO;
40 constexpr FontWeight DEFAULT_FONT_WEIGHT = FontWeight::NORMAL;
41 constexpr Ace::FontStyle DEFAULT_FONT_STYLE = Ace::FontStyle::NORMAL;
42 constexpr int16_t DEFAULT_ALPHA = 255;
43 constexpr double DEFAULT_OPACITY = 0.2;
44 const std::vector<std::string> DEFAULT_FONT_FAMILY = { "HarmonyOS Sans" };
45 const std::vector<TextAlign> TEXT_ALIGNS = { TextAlign::START, TextAlign::CENTER, TextAlign::END, TextAlign::JUSTIFY };
46 const std::vector<EllipsisMode> ELLIPSIS_MODALS = { EllipsisMode::HEAD, EllipsisMode::MIDDLE, EllipsisMode::TAIL };
47 constexpr float DEFAULT_MIN_FONT_SCALE = 0.0f;
48 constexpr float DEFAULT_MAX_FONT_SCALE = static_cast<float>(INT32_MAX);
49 const uint32_t ERROR_UINT_CODE = -1;
50 const float ERROR_FLOAT_CODE = -1.0f;
51 const int32_t ERROR_INT_CODE = -1;
52 constexpr TextDecoration DEFAULT_TEXT_DECORATION = TextDecoration::NONE;
53 constexpr Color DEFAULT_DECORATION_COLOR = Color(0xff000000);
54 constexpr TextDecorationStyle DEFAULT_DECORATION_STYLE = TextDecorationStyle::SOLID;
55 constexpr int CALL_ARG_0 = 0;
56 constexpr int CALL_ARG_1 = 1;
57 constexpr int CALL_ARG_2 = 2;
58 constexpr int CALL_ARG_3 = 3;
59 constexpr int32_t DEFAULT_GROUP_UNDERLINE_COLOR_VALUES_COUNT = 4;
60 constexpr bool DEFAULT_SELECT_ALL = false;
61 constexpr bool DEFAULT_ENABLE_PREVIEW_TEXT_VALUE = true;
62 constexpr bool DEFAULT_ENABLE_HAPTIC_FEEDBACK_VALUE = true;
63 thread_local std::string g_strValue;
64 constexpr int32_t ELLIPSIS_MODE_TAIL = 2;
65
SetTextInputCaretColor(ArkUINodeHandle node,ArkUI_Uint32 color,void * colorRawPtr)66 void SetTextInputCaretColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* colorRawPtr)
67 {
68 auto *frameNode = reinterpret_cast<FrameNode *>(node);
69 CHECK_NULL_VOID(frameNode);
70 TextFieldModelNG::SetCaretColor(frameNode, Color(color));
71 if (SystemProperties::ConfigChangePerform()) {
72 auto pattern = frameNode->GetPattern();
73 CHECK_NULL_VOID(pattern);
74 if (colorRawPtr) {
75 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(colorRawPtr));
76 pattern->RegisterResource<Color>("caretColor", resObj, Color(color));
77 } else {
78 pattern->UnRegisterResource("caretColor");
79 }
80 }
81 }
82
ResetTextInputCaretColor(ArkUINodeHandle node)83 void ResetTextInputCaretColor(ArkUINodeHandle node)
84 {
85 auto *frameNode = reinterpret_cast<FrameNode *>(node);
86
87 CHECK_NULL_VOID(frameNode);
88 TextFieldModelNG::ResetCaretColor(frameNode);
89 if (SystemProperties::ConfigChangePerform()) {
90 auto pattern = frameNode->GetPattern();
91 CHECK_NULL_VOID(pattern);
92 pattern->UnRegisterResource("caretColor");
93 }
94 }
95
SetTextInputType(ArkUINodeHandle node,ArkUI_Int32 value)96 void SetTextInputType(ArkUINodeHandle node, ArkUI_Int32 value)
97 {
98 auto *frameNode = reinterpret_cast<FrameNode *>(node);
99 CHECK_NULL_VOID(frameNode);
100 TextFieldModelNG::SetType(frameNode, CastToTextInputType(value));
101 }
102
ResetTextInputType(ArkUINodeHandle node)103 void ResetTextInputType(ArkUINodeHandle node)
104 {
105 auto *frameNode = reinterpret_cast<FrameNode *>(node);
106 CHECK_NULL_VOID(frameNode);
107 TextFieldModelNG::SetType(frameNode, TextInputType::UNSPECIFIED);
108 return;
109 }
110
SetTextInputMaxLines(ArkUINodeHandle node,ArkUI_Int32 value)111 void SetTextInputMaxLines(ArkUINodeHandle node, ArkUI_Int32 value)
112 {
113 auto *frameNode = reinterpret_cast<FrameNode *>(node);
114 CHECK_NULL_VOID(frameNode);
115 if (value <= 0) {
116 TextFieldModelNG::SetMaxViewLines(frameNode, MAX_LINES);
117 return;
118 }
119
120 TextFieldModelNG::SetMaxViewLines(frameNode, value);
121 }
122
ResetTextInputMaxLines(ArkUINodeHandle node)123 void ResetTextInputMaxLines(ArkUINodeHandle node)
124 {
125 auto *frameNode = reinterpret_cast<FrameNode *>(node);
126 CHECK_NULL_VOID(frameNode);
127 TextFieldModelNG::SetMaxViewLines(frameNode, MAX_LINES);
128 }
129
SetTextInputPlaceholderColor(ArkUINodeHandle node,ArkUI_Uint32 color,void * colorRawPtr)130 void SetTextInputPlaceholderColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* colorRawPtr)
131 {
132 auto *frameNode = reinterpret_cast<FrameNode *>(node);
133 CHECK_NULL_VOID(frameNode);
134 TextFieldModelNG::SetPlaceholderColor(frameNode, Color(color));
135 if (SystemProperties::ConfigChangePerform()) {
136 auto pattern = frameNode->GetPattern();
137 CHECK_NULL_VOID(pattern);
138 if (colorRawPtr) {
139 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(colorRawPtr));
140 pattern->RegisterResource<Color>("placeholderColor", resObj, Color(color));
141 } else {
142 pattern->UnRegisterResource("placeholderColor");
143 }
144 }
145 }
146
ResetTextInputPlaceholderColor(ArkUINodeHandle node)147 void ResetTextInputPlaceholderColor(ArkUINodeHandle node)
148 {
149 auto *frameNode = reinterpret_cast<FrameNode *>(node);
150 CHECK_NULL_VOID(frameNode);
151 TextFieldModelNG::ResetPlaceholderColor(frameNode);
152 if (SystemProperties::ConfigChangePerform()) {
153 auto pattern = frameNode->GetPattern();
154 CHECK_NULL_VOID(pattern);
155 pattern->UnRegisterResource("placeholderColor");
156 }
157 }
158
SetTextInputCaretPosition(ArkUINodeHandle node,ArkUI_Int32 caretPosition)159 void SetTextInputCaretPosition(ArkUINodeHandle node, ArkUI_Int32 caretPosition)
160 {
161 auto *frameNode = reinterpret_cast<FrameNode *>(node);
162 CHECK_NULL_VOID(frameNode);
163 TextFieldModelNG::SetCaretPosition(frameNode, caretPosition);
164 }
165
ResetTextInputCaretPosition(ArkUINodeHandle node)166 void ResetTextInputCaretPosition(ArkUINodeHandle node)
167 {
168 auto *frameNode = reinterpret_cast<FrameNode *>(node);
169 CHECK_NULL_VOID(frameNode);
170 TextFieldModelNG::SetCaretPosition(frameNode, DEFAULT_CARE_POSITION);
171 }
172
SetTextInputCopyOption(ArkUINodeHandle node,ArkUI_Int32 copyOption)173 void SetTextInputCopyOption(ArkUINodeHandle node, ArkUI_Int32 copyOption)
174 {
175 auto *frameNode = reinterpret_cast<FrameNode *>(node);
176 CHECK_NULL_VOID(frameNode);
177 TextFieldModelNG::SetCopyOption(frameNode, static_cast<CopyOptions>(copyOption));
178 }
179
ResetTextInputCopyOption(ArkUINodeHandle node)180 void ResetTextInputCopyOption(ArkUINodeHandle node)
181 {
182 auto *frameNode = reinterpret_cast<FrameNode *>(node);
183 CHECK_NULL_VOID(frameNode);
184 TextFieldModelNG::SetCopyOption(frameNode, DEFAULT_TEXT_INPUT_COPY_OPTION);
185 }
186
SetTextInputShowPasswordIcon(ArkUINodeHandle node,ArkUI_Uint32 value)187 void SetTextInputShowPasswordIcon(ArkUINodeHandle node, ArkUI_Uint32 value)
188 {
189 auto *frameNode = reinterpret_cast<FrameNode *>(node);
190 CHECK_NULL_VOID(frameNode);
191 TextFieldModelNG::SetShowPasswordIcon(frameNode, static_cast<bool>(value));
192 }
193
ResetTextInputShowPasswordIcon(ArkUINodeHandle node)194 void ResetTextInputShowPasswordIcon(ArkUINodeHandle node)
195 {
196 auto *frameNode = reinterpret_cast<FrameNode *>(node);
197 CHECK_NULL_VOID(frameNode);
198 TextFieldModelNG::SetShowPasswordIcon(frameNode, DEFAULT_SHOW_PASSWORD_ICON_VALUE);
199 }
200
SetTextInputPasswordIcon(ArkUINodeHandle node,const struct ArkUIPasswordIconType * value)201 void SetTextInputPasswordIcon(ArkUINodeHandle node, const struct ArkUIPasswordIconType* value)
202 {
203 auto *frameNode = reinterpret_cast<FrameNode *>(node);
204 CHECK_NULL_VOID(frameNode);
205 PasswordIcon passwordIcon;
206 if (value->showResult != nullptr && std::string(value->showResult) != "") {
207 passwordIcon.showResult = value->showResult;
208 } else {
209 if (value->showBundleName != nullptr && std::string(value->showBundleName) != "") {
210 passwordIcon.showBundleName = value->showBundleName;
211 }
212 if (value->showModuleName != nullptr && std::string(value->showModuleName) != "") {
213 passwordIcon.showModuleName = value->showModuleName;
214 }
215 }
216 if (value->hideResult != nullptr && std::string(value->hideResult) != "") {
217 passwordIcon.hideResult = value->hideResult;
218 } else {
219 if (value->hideBundleName != nullptr && std::string(value->hideBundleName) != "") {
220 passwordIcon.hideBundleName = value->hideBundleName;
221 }
222 if (value->hideModuleName != nullptr && std::string(value->hideModuleName) != "") {
223 passwordIcon.hideModuleName = value->hideModuleName;
224 }
225 }
226 TextFieldModelNG::SetPasswordIcon(frameNode, passwordIcon);
227 }
228
ResetTextInputPasswordIcon(ArkUINodeHandle node)229 void ResetTextInputPasswordIcon(ArkUINodeHandle node)
230 {
231 auto *frameNode = reinterpret_cast<FrameNode *>(node);
232 CHECK_NULL_VOID(frameNode);
233 PasswordIcon passwordIcon;
234 passwordIcon.showResult = "";
235 passwordIcon.hideResult = "";
236 TextFieldModelNG::SetPasswordIcon(frameNode, passwordIcon);
237 }
238
SetTextInputTextAlign(ArkUINodeHandle node,ArkUI_Int32 value)239 void SetTextInputTextAlign(ArkUINodeHandle node, ArkUI_Int32 value)
240 {
241 auto *frameNode = reinterpret_cast<FrameNode *>(node);
242 CHECK_NULL_VOID(frameNode);
243 if (value >= 0 && value < static_cast<int32_t>(TEXT_ALIGNS.size())) {
244 TextFieldModelNG::SetTextAlign(frameNode, TEXT_ALIGNS[value]);
245 } else {
246 TextFieldModelNG::SetTextAlign(frameNode, DEFAULT_TEXT_ALIGN_VALUE);
247 }
248 }
249
ResetTextInputTextAlign(ArkUINodeHandle node)250 void ResetTextInputTextAlign(ArkUINodeHandle node)
251 {
252 auto *frameNode = reinterpret_cast<FrameNode *>(node);
253 CHECK_NULL_VOID(frameNode);
254 TextFieldModelNG::SetTextAlign(frameNode, DEFAULT_TEXT_ALIGN_VALUE);
255 }
256
SetTextInputStyle(ArkUINodeHandle node,ArkUI_Int32 style)257 void SetTextInputStyle(ArkUINodeHandle node, ArkUI_Int32 style)
258 {
259 auto *frameNode = reinterpret_cast<FrameNode *>(node);
260 CHECK_NULL_VOID(frameNode);
261 TextFieldModelNG::SetInputStyle(frameNode, static_cast<InputStyle>(style));
262 }
263
GetTextInputStyle(ArkUINodeHandle node)264 ArkUI_Int32 GetTextInputStyle(ArkUINodeHandle node)
265 {
266 auto *frameNode = reinterpret_cast<FrameNode *>(node);
267 CHECK_NULL_RETURN(frameNode, 0);
268 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetInputStyle(frameNode));
269 }
270
ResetTextInputStyle(ArkUINodeHandle node)271 void ResetTextInputStyle(ArkUINodeHandle node)
272 {
273 auto *frameNode = reinterpret_cast<FrameNode *>(node);
274 CHECK_NULL_VOID(frameNode);
275 TextFieldModelNG::SetInputStyle(frameNode, DEFAULT_INPUT_STYLE);
276 }
277
GetTextInputContentRect(ArkUINodeHandle node,ArkUI_Float32 (* values)[4])278 void GetTextInputContentRect(ArkUINodeHandle node, ArkUI_Float32 (*values)[4])
279 {
280 auto *frameNode = reinterpret_cast<FrameNode *>(node);
281 CHECK_NULL_VOID(frameNode);
282 auto textFieldController = TextFieldModelNG::GetOrCreateController(frameNode);
283 auto rect = textFieldController->GetTextContentRect();
284 (*values)[CALL_ARG_0] = rect.Left();
285 (*values)[CALL_ARG_1] = rect.Top();
286 (*values)[CALL_ARG_2] = rect.Width();
287 (*values)[CALL_ARG_3] = rect.Height();
288 }
289
GetTextInputContentLinesNum(ArkUINodeHandle node)290 ArkUI_Int32 GetTextInputContentLinesNum(ArkUINodeHandle node)
291 {
292 auto *frameNode = reinterpret_cast<FrameNode *>(node);
293 CHECK_NULL_RETURN(frameNode, 0);
294 auto textFieldController = TextFieldModelNG::GetOrCreateController(frameNode);
295 return static_cast<ArkUI_Int32>(textFieldController->GetTextContentLinesNum());
296 }
297
SetTextInputSelectionMenuHidden(ArkUINodeHandle node,ArkUI_Uint32 menuHiddenValue)298 void SetTextInputSelectionMenuHidden(ArkUINodeHandle node, ArkUI_Uint32 menuHiddenValue)
299 {
300 auto *frameNode = reinterpret_cast<FrameNode *>(node);
301 CHECK_NULL_VOID(frameNode);
302 TextFieldModelNG::SetSelectionMenuHidden(frameNode, static_cast<bool>(menuHiddenValue));
303 }
304
ResetTextInputSelectionMenuHidden(ArkUINodeHandle node)305 void ResetTextInputSelectionMenuHidden(ArkUINodeHandle node)
306 {
307 auto *frameNode = reinterpret_cast<FrameNode *>(node);
308 CHECK_NULL_VOID(frameNode);
309 TextFieldModelNG::SetSelectionMenuHidden(frameNode, DEFAULT_SELECTION_MENU_HIDDEN);
310 }
311
SetTextInputShowUnderline(ArkUINodeHandle node,ArkUI_Uint32 showUnderLine)312 void SetTextInputShowUnderline(ArkUINodeHandle node, ArkUI_Uint32 showUnderLine)
313 {
314 auto *frameNode = reinterpret_cast<FrameNode *>(node);
315 CHECK_NULL_VOID(frameNode);
316 TextFieldModelNG::SetShowUnderline(frameNode, static_cast<bool>(showUnderLine));
317 }
318
ResetTextInputShowUnderline(ArkUINodeHandle node)319 void ResetTextInputShowUnderline(ArkUINodeHandle node)
320 {
321 auto *frameNode = reinterpret_cast<FrameNode *>(node);
322 CHECK_NULL_VOID(frameNode);
323 TextFieldModelNG::SetShowUnderline(frameNode, DEFAULT_SHOW_UNDER_LINE);
324 }
325
SetTextInputPasswordRules(ArkUINodeHandle node,ArkUI_CharPtr passwordRules)326 void SetTextInputPasswordRules(ArkUINodeHandle node, ArkUI_CharPtr passwordRules)
327 {
328 auto *frameNode = reinterpret_cast<FrameNode *>(node);
329 CHECK_NULL_VOID(frameNode);
330 std::string strValue = passwordRules;
331 TextFieldModelNG::SetPasswordRules(frameNode, strValue);
332 }
333
GetTextInputPasswordRules(ArkUINodeHandle node)334 ArkUI_CharPtr GetTextInputPasswordRules(ArkUINodeHandle node)
335 {
336 auto *frameNode = reinterpret_cast<FrameNode *>(node);
337 CHECK_NULL_RETURN(frameNode, "");
338 g_strValue = TextFieldModelNG::GetPasswordRules(frameNode);
339 return g_strValue.c_str();
340 }
341
ResetTextInputPasswordRules(ArkUINodeHandle node)342 void ResetTextInputPasswordRules(ArkUINodeHandle node)
343 {
344 auto *frameNode = reinterpret_cast<FrameNode *>(node);
345 CHECK_NULL_VOID(frameNode);
346 TextFieldModelNG::SetPasswordRules(frameNode, "");
347 }
348
SetTextInputEnableAutoFill(ArkUINodeHandle node,ArkUI_Uint32 enableAutoFill)349 void SetTextInputEnableAutoFill(ArkUINodeHandle node, ArkUI_Uint32 enableAutoFill)
350 {
351 auto *frameNode = reinterpret_cast<FrameNode *>(node);
352 CHECK_NULL_VOID(frameNode);
353 TextFieldModelNG::SetEnableAutoFill(frameNode, static_cast<bool>(enableAutoFill));
354 }
355
GetTextInputEnableAutoFill(ArkUINodeHandle node)356 ArkUI_Int32 GetTextInputEnableAutoFill(ArkUINodeHandle node)
357 {
358 auto *frameNode = reinterpret_cast<FrameNode *>(node);
359 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
360 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetEnableAutoFill(frameNode));
361 }
362
ResetTextInputEnableAutoFill(ArkUINodeHandle node)363 void ResetTextInputEnableAutoFill(ArkUINodeHandle node)
364 {
365 auto *frameNode = reinterpret_cast<FrameNode *>(node);
366 CHECK_NULL_VOID(frameNode);
367 TextFieldModelNG::SetEnableAutoFill(frameNode, DEFAULT_ENABLE_AUTO_FILL);
368 }
369
SetTextInputEnableAutoFillAnimation(ArkUINodeHandle node,ArkUI_Uint32 enableAutoFillAnimation)370 void SetTextInputEnableAutoFillAnimation(ArkUINodeHandle node, ArkUI_Uint32 enableAutoFillAnimation)
371 {
372 auto *frameNode = reinterpret_cast<FrameNode *>(node);
373 CHECK_NULL_VOID(frameNode);
374 TextFieldModelNG::SetEnableAutoFillAnimation(frameNode, static_cast<bool>(enableAutoFillAnimation));
375 }
376
GetTextInputEnableAutoFillAnimation(ArkUINodeHandle node)377 ArkUI_Int32 GetTextInputEnableAutoFillAnimation(ArkUINodeHandle node)
378 {
379 auto *frameNode = reinterpret_cast<FrameNode *>(node);
380 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
381 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetEnableAutoFillAnimation(frameNode));
382 }
383
ResetTextInputEnableAutoFillAnimation(ArkUINodeHandle node)384 void ResetTextInputEnableAutoFillAnimation(ArkUINodeHandle node)
385 {
386 auto *frameNode = reinterpret_cast<FrameNode *>(node);
387 CHECK_NULL_VOID(frameNode);
388 TextFieldModelNG::SetEnableAutoFillAnimation(frameNode, DEFAULT_ENABLE_AUTO_FILL_ANIMATION);
389 }
390
GetTextInputSelectAll(ArkUINodeHandle node)391 ArkUI_Int32 GetTextInputSelectAll(ArkUINodeHandle node)
392 {
393 auto *frameNode = reinterpret_cast<FrameNode *>(node);
394 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
395 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetSelectAllValue(frameNode));
396 }
397
SetTextInputInputFilter(ArkUINodeHandle node,ArkUI_CharPtr inputFilter)398 void SetTextInputInputFilter(ArkUINodeHandle node, ArkUI_CharPtr inputFilter)
399 {
400 auto *frameNode = reinterpret_cast<FrameNode *>(node);
401 CHECK_NULL_VOID(frameNode);
402 TextFieldModelNG::SetInputFilter(frameNode, inputFilter);
403 }
404
GetTextInputInputFilter(ArkUINodeHandle node)405 ArkUI_CharPtr GetTextInputInputFilter(ArkUINodeHandle node)
406 {
407 auto *frameNode = reinterpret_cast<FrameNode *>(node);
408 CHECK_NULL_RETURN(frameNode, "");
409 g_strValue = TextFieldModelNG::GetInputFilter(frameNode);
410 return g_strValue.c_str();
411 }
412
ResetTextInputInputFilter(ArkUINodeHandle node)413 void ResetTextInputInputFilter(ArkUINodeHandle node)
414 {
415 auto *frameNode = reinterpret_cast<FrameNode *>(node);
416 CHECK_NULL_VOID(frameNode);
417 TextFieldModelNG::SetInputFilter(frameNode, "");
418 }
419
GetTextInputCaretIndex(ArkUINodeHandle node)420 ArkUI_Int32 GetTextInputCaretIndex(ArkUINodeHandle node)
421 {
422 auto *frameNode = reinterpret_cast<FrameNode *>(node);
423 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
424 auto textFieldController = TextFieldModelNG::GetOrCreateController(frameNode);
425 return textFieldController->GetCaretIndex();
426 }
427
GetTextInputCaretOffset(ArkUINodeHandle node,ArkUI_Float32 (* values)[2])428 void GetTextInputCaretOffset(ArkUINodeHandle node, ArkUI_Float32 (*values)[2])
429 {
430 auto *frameNode = reinterpret_cast<FrameNode *>(node);
431 CHECK_NULL_VOID(frameNode);
432 auto textFieldController = TextFieldModelNG::GetOrCreateController(frameNode);
433 auto offset = textFieldController->GetCaretPosition();
434 (*values)[0] = offset.GetX();
435 (*values)[1] = offset.GetY();
436 }
437
SetTextInputContentType(ArkUINodeHandle node,ArkUI_Uint32 contentType)438 void SetTextInputContentType(ArkUINodeHandle node, ArkUI_Uint32 contentType)
439 {
440 auto *frameNode = reinterpret_cast<FrameNode *>(node);
441 CHECK_NULL_VOID(frameNode);
442 if (contentType < 0 || contentType > static_cast<ArkUI_Uint32>(TextContentType::END)) {
443 contentType = -1;
444 TAG_LOGW(AceLogTag::ACE_TEXT_FIELD, "TextInput content type is invalid");
445 }
446 TextFieldModelNG::SetContentType(frameNode, static_cast<NG::TextContentType>(contentType));
447 }
448
GetTextInputContentType(ArkUINodeHandle node)449 ArkUI_Int32 GetTextInputContentType(ArkUINodeHandle node)
450 {
451 auto *frameNode = reinterpret_cast<FrameNode *>(node);
452 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
453 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetContentType(frameNode));
454 }
455
ResetTextInputContentType(ArkUINodeHandle node)456 void ResetTextInputContentType(ArkUINodeHandle node)
457 {
458 auto *frameNode = reinterpret_cast<FrameNode *>(node);
459 CHECK_NULL_VOID(frameNode);
460 TextFieldModelNG::SetContentType(frameNode, static_cast<NG::TextContentType>(TextContentType::UNSPECIFIED));
461 }
462
SetTextInputCaretStyle(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit,ArkUI_Uint32 caretColor,void * widthRawPtr,void * colorRawPtr)463 void SetTextInputCaretStyle(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit, ArkUI_Uint32 caretColor,
464 void* widthRawPtr, void* colorRawPtr)
465 {
466 auto *frameNode = reinterpret_cast<FrameNode *>(node);
467 CHECK_NULL_VOID(frameNode);
468 CaretStyle caretStyle;
469 caretStyle.caretWidth = CalcDimension(value, (DimensionUnit)unit);
470 TextFieldModelNG::SetCaretStyle(frameNode, caretStyle);
471 TextFieldModelNG::SetCaretColor(frameNode, Color(caretColor));
472 if (SystemProperties::ConfigChangePerform()) {
473 auto pattern = frameNode->GetPattern();
474 CHECK_NULL_VOID(pattern);
475 if (widthRawPtr) {
476 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(widthRawPtr));
477 pattern->RegisterResource<CalcDimension>("caretWidth", resObj, CalcDimension(value, (DimensionUnit)unit));
478 } else {
479 pattern->UnRegisterResource("caretWidth");
480 }
481 if (colorRawPtr) {
482 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(colorRawPtr));
483 pattern->RegisterResource<Color>("caretColor", resObj, Color(caretColor));
484 } else {
485 pattern->UnRegisterResource("caretColor");
486 }
487 }
488 }
489
ResetTextInputCaretStyle(ArkUINodeHandle node)490 void ResetTextInputCaretStyle(ArkUINodeHandle node)
491 {
492 auto *frameNode = reinterpret_cast<FrameNode *>(node);
493 CHECK_NULL_VOID(frameNode);
494
495 auto pipeline = frameNode->GetContext();
496 CHECK_NULL_VOID(pipeline);
497 auto theme = pipeline->GetThemeManager()->GetTheme<TextFieldTheme>();
498 CHECK_NULL_VOID(theme);
499
500 CaretStyle caretStyle;
501 caretStyle.caretWidth = theme->GetCursorWidth();
502 uint32_t caretColor = theme->GetCursorColor().GetValue();
503 TextFieldModelNG::SetCaretStyle(frameNode, caretStyle);
504 TextFieldModelNG::SetCaretColor(frameNode, Color(caretColor));
505 if (SystemProperties::ConfigChangePerform()) {
506 auto pattern = frameNode->GetPattern();
507 CHECK_NULL_VOID(pattern);
508 pattern->UnRegisterResource("caretWidth");
509 pattern->UnRegisterResource("caretColor");
510 }
511 }
512
SetTextInputEnableKeyboardOnFocus(ArkUINodeHandle node,ArkUI_Uint32 value)513 void SetTextInputEnableKeyboardOnFocus(ArkUINodeHandle node, ArkUI_Uint32 value)
514 {
515 auto *frameNode = reinterpret_cast<FrameNode *>(node);
516 CHECK_NULL_VOID(frameNode);
517 TextFieldModelNG::RequestKeyboardOnFocus(frameNode, static_cast<bool>(value));
518 }
519
ResetTextInputEnableKeyboardOnFocus(ArkUINodeHandle node)520 void ResetTextInputEnableKeyboardOnFocus(ArkUINodeHandle node)
521 {
522 auto *frameNode = reinterpret_cast<FrameNode *>(node);
523 CHECK_NULL_VOID(frameNode);
524 TextFieldModelNG::RequestKeyboardOnFocus(frameNode, DEFAULT_REQUEST_KEYBOARD_ON_FOCUS);
525 }
526
SetTextInputBarState(ArkUINodeHandle node,ArkUI_Int32 value)527 void SetTextInputBarState(ArkUINodeHandle node, ArkUI_Int32 value)
528 {
529 auto *frameNode = reinterpret_cast<FrameNode *>(node);
530 CHECK_NULL_VOID(frameNode);
531 TextFieldModelNG::SetBarState(frameNode, static_cast<DisplayMode>(value));
532 }
533
ResetTextInputBarState(ArkUINodeHandle node)534 void ResetTextInputBarState(ArkUINodeHandle node)
535 {
536 auto *frameNode = reinterpret_cast<FrameNode *>(node);
537 CHECK_NULL_VOID(frameNode);
538 TextFieldModelNG::SetBarState(frameNode, DEFAULT_BAR_STATE);
539 }
540
SetTextInputEnterKeyType(ArkUINodeHandle node,ArkUI_Int32 value)541 void SetTextInputEnterKeyType(ArkUINodeHandle node, ArkUI_Int32 value)
542 {
543 auto *frameNode = reinterpret_cast<FrameNode *>(node);
544 CHECK_NULL_VOID(frameNode);
545 TextFieldModelNG::SetEnterKeyType(frameNode, static_cast<TextInputAction>(value));
546 }
547
SetTextInputAutoCapitalizationMode(ArkUINodeHandle node,ArkUI_Int32 value)548 void SetTextInputAutoCapitalizationMode(ArkUINodeHandle node, ArkUI_Int32 value)
549 {
550 auto *frameNode = reinterpret_cast<FrameNode *>(node);
551 CHECK_NULL_VOID(frameNode);
552 TextFieldModelNG::SetAutoCapitalizationMode(frameNode, CastToAutoCapitalizationMode(value));
553 }
554
ResetTextInputAutoCapitalizationMode(ArkUINodeHandle node)555 void ResetTextInputAutoCapitalizationMode(ArkUINodeHandle node)
556 {
557 auto *frameNode = reinterpret_cast<FrameNode *>(node);
558 CHECK_NULL_VOID(frameNode);
559 TextFieldModelNG::SetAutoCapitalizationMode(frameNode, AutoCapitalizationMode::NONE);
560 }
561
ResetTextInputEnterKeyType(ArkUINodeHandle node)562 void ResetTextInputEnterKeyType(ArkUINodeHandle node)
563 {
564 auto *frameNode = reinterpret_cast<FrameNode *>(node);
565 CHECK_NULL_VOID(frameNode);
566 TextFieldModelNG::SetEnterKeyType(frameNode, TextInputAction::DONE);
567 }
568
SetTextInputFontWeightStr(ArkUINodeHandle node,ArkUI_CharPtr fontWeight,void * fontWeightRawPtr)569 void SetTextInputFontWeightStr(ArkUINodeHandle node, ArkUI_CharPtr fontWeight, void* fontWeightRawPtr)
570 {
571 auto *frameNode = reinterpret_cast<FrameNode *>(node);
572 CHECK_NULL_VOID(frameNode);
573 TextFieldModelNG::SetFontWeight(frameNode, Framework::ConvertStrToFontWeight(fontWeight));
574 if (SystemProperties::ConfigChangePerform()) {
575 auto pattern = frameNode->GetPattern();
576 CHECK_NULL_VOID(pattern);
577 if (fontWeightRawPtr) {
578 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(fontWeightRawPtr));
579 pattern->RegisterResource<std::string>("fontWeight", resObj, fontWeight);
580 } else {
581 pattern->UnRegisterResource("fontWeight");
582 }
583 }
584 }
585
SetTextInputFontWeight(ArkUINodeHandle node,ArkUI_Int32 fontWeight)586 void SetTextInputFontWeight(ArkUINodeHandle node, ArkUI_Int32 fontWeight)
587 {
588 auto *frameNode = reinterpret_cast<FrameNode *>(node);
589 CHECK_NULL_VOID(frameNode);
590 TextFieldModelNG::SetFontWeight(frameNode, static_cast<FontWeight>(fontWeight));
591 }
592
ResetTextInputFontWeight(ArkUINodeHandle node)593 void ResetTextInputFontWeight(ArkUINodeHandle node)
594 {
595 auto *frameNode = reinterpret_cast<FrameNode *>(node);
596 CHECK_NULL_VOID(frameNode);
597 TextFieldModelNG::SetFontWeight(frameNode, FontWeight::NORMAL);
598 if (SystemProperties::ConfigChangePerform()) {
599 auto pattern = frameNode->GetPattern();
600 CHECK_NULL_VOID(pattern);
601 pattern->UnRegisterResource("fontWeight");
602 }
603 }
604
SetTextInputFontSize(ArkUINodeHandle node,const struct ArkUILengthType * value,void * resRawPtr)605 void SetTextInputFontSize(ArkUINodeHandle node, const struct ArkUILengthType *value, void* resRawPtr)
606 {
607 auto *frameNode = reinterpret_cast<FrameNode *>(node);
608 CHECK_NULL_VOID(frameNode);
609 CalcDimension fontSize;
610 if (value->string != nullptr) {
611 fontSize.SetCalcValue(value->string);
612 } else {
613 fontSize.SetValue(value->number);
614 }
615 fontSize.SetUnit(static_cast<DimensionUnit>(value->unit));
616 TextFieldModelNG::SetFontSize(frameNode, fontSize);
617 if (SystemProperties::ConfigChangePerform()) {
618 auto pattern = frameNode->GetPattern();
619 CHECK_NULL_VOID(pattern);
620 if (resRawPtr) {
621 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
622 pattern->RegisterResource<CalcDimension>("fontSize", resObj, fontSize);
623 } else {
624 pattern->UnRegisterResource("fontSize");
625 }
626 }
627 }
628
ResetTextInputFontSize(ArkUINodeHandle node)629 void ResetTextInputFontSize(ArkUINodeHandle node)
630 {
631 auto *frameNode = reinterpret_cast<FrameNode *>(node);
632 CHECK_NULL_VOID(frameNode);
633 auto pipeline = frameNode->GetContext();
634 CHECK_NULL_VOID(pipeline);
635 auto theme = pipeline->GetThemeManager()->GetTheme<TextFieldTheme>();
636 CHECK_NULL_VOID(theme);
637 TextFieldModelNG::SetFontSize(frameNode, theme->GetFontSize());
638 if (SystemProperties::ConfigChangePerform()) {
639 auto pattern = frameNode->GetPattern();
640 CHECK_NULL_VOID(pattern);
641 pattern->UnRegisterResource("fontSize");
642 }
643 }
644
SetTextInputMinFontScale(ArkUINodeHandle node,ArkUI_Float32 number,void * resRawPtr)645 void SetTextInputMinFontScale(ArkUINodeHandle node, ArkUI_Float32 number, void* resRawPtr)
646 {
647 auto* frameNode = reinterpret_cast<FrameNode*>(node);
648 CHECK_NULL_VOID(frameNode);
649 TextFieldModelNG::SetMinFontScale(frameNode, number);
650 if (SystemProperties::ConfigChangePerform()) {
651 auto pattern = frameNode->GetPattern();
652 CHECK_NULL_VOID(pattern);
653 if (resRawPtr) {
654 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
655 pattern->RegisterResource<float>("minFontScale", resObj, number);
656 } else {
657 pattern->UnRegisterResource("minFontScale");
658 }
659 }
660 }
661
ResetTextInputMinFontScale(ArkUINodeHandle node)662 void ResetTextInputMinFontScale(ArkUINodeHandle node)
663 {
664 auto* frameNode = reinterpret_cast<FrameNode*>(node);
665 CHECK_NULL_VOID(frameNode);
666 TextFieldModelNG::SetMinFontScale(frameNode, DEFAULT_MIN_FONT_SCALE);
667 if (SystemProperties::ConfigChangePerform()) {
668 auto pattern = frameNode->GetPattern();
669 CHECK_NULL_VOID(pattern);
670 pattern->UnRegisterResource("minFontScale");
671 }
672 }
673
SetTextInputMaxFontScale(ArkUINodeHandle node,ArkUI_Float32 number,void * resRawPtr)674 void SetTextInputMaxFontScale(ArkUINodeHandle node, ArkUI_Float32 number, void* resRawPtr)
675 {
676 auto* frameNode = reinterpret_cast<FrameNode*>(node);
677 CHECK_NULL_VOID(frameNode);
678 TextFieldModelNG::SetMaxFontScale(frameNode, number);
679 if (SystemProperties::ConfigChangePerform()) {
680 auto pattern = frameNode->GetPattern();
681 CHECK_NULL_VOID(pattern);
682 if (resRawPtr) {
683 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
684 pattern->RegisterResource<float>("maxFontScale", resObj, number);
685 } else {
686 pattern->UnRegisterResource("maxFontScale");
687 }
688 }
689 }
690
ResetTextInputMaxFontScale(ArkUINodeHandle node)691 void ResetTextInputMaxFontScale(ArkUINodeHandle node)
692 {
693 auto* frameNode = reinterpret_cast<FrameNode*>(node);
694 CHECK_NULL_VOID(frameNode);
695 TextFieldModelNG::SetMaxFontScale(frameNode, DEFAULT_MAX_FONT_SCALE);
696 if (SystemProperties::ConfigChangePerform()) {
697 auto pattern = frameNode->GetPattern();
698 CHECK_NULL_VOID(pattern);
699 pattern->UnRegisterResource("maxFontScale");
700 }
701 }
702
SetTextInputMaxLength(ArkUINodeHandle node,ArkUI_Uint32 value)703 void SetTextInputMaxLength(ArkUINodeHandle node, ArkUI_Uint32 value)
704 {
705 auto *frameNode = reinterpret_cast<FrameNode *>(node);
706 CHECK_NULL_VOID(frameNode);
707 TextFieldModelNG::SetMaxLength(frameNode, value);
708 }
709
ResetTextInputMaxLength(ArkUINodeHandle node)710 void ResetTextInputMaxLength(ArkUINodeHandle node)
711 {
712 auto *frameNode = reinterpret_cast<FrameNode *>(node);
713 CHECK_NULL_VOID(frameNode);
714 TextFieldModelNG::ResetMaxLength(frameNode);
715 }
716
SetTextInputSelectedBackgroundColor(ArkUINodeHandle node,ArkUI_Uint32 color,void * resRawPtr)717 void SetTextInputSelectedBackgroundColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* resRawPtr)
718 {
719 auto *frameNode = reinterpret_cast<FrameNode *>(node);
720 CHECK_NULL_VOID(frameNode);
721 TextFieldModelNG::SetSelectedBackgroundColor(frameNode, Color(color));
722 if (SystemProperties::ConfigChangePerform()) {
723 auto pattern = frameNode->GetPattern();
724 CHECK_NULL_VOID(pattern);
725 if (resRawPtr) {
726 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
727 pattern->RegisterResource<Color>("selectedBackgroundColor", resObj, Color(color));
728 } else {
729 pattern->UnRegisterResource("selectedBackgroundColor");
730 }
731 }
732 }
733
ResetTextInputSelectedBackgroundColor(ArkUINodeHandle node)734 void ResetTextInputSelectedBackgroundColor(ArkUINodeHandle node)
735 {
736 auto *frameNode = reinterpret_cast<FrameNode *>(node);
737 CHECK_NULL_VOID(frameNode);
738 Color selectedColor;
739 auto pipeline = frameNode->GetContext();
740 CHECK_NULL_VOID(pipeline);
741 auto theme = pipeline->GetThemeManager()->GetTheme<TextFieldTheme>();
742 CHECK_NULL_VOID(theme);
743 selectedColor = theme->GetSelectedColor();
744 if (selectedColor.GetAlpha() == DEFAULT_ALPHA) {
745 // Default setting of 20% opacity
746 selectedColor = selectedColor.ChangeOpacity(DEFAULT_OPACITY);
747 }
748 TextFieldModelNG::SetSelectedBackgroundColor(frameNode, selectedColor);
749 if (SystemProperties::ConfigChangePerform()) {
750 auto pattern = frameNode->GetPattern();
751 CHECK_NULL_VOID(pattern);
752 pattern->UnRegisterResource("selectedBackgroundColor");
753 }
754 }
755
SetTextInputShowError(ArkUINodeHandle node,ArkUI_CharPtr error,ArkUI_Uint32 visible,void * resRawPtr)756 void SetTextInputShowError(ArkUINodeHandle node, ArkUI_CharPtr error, ArkUI_Uint32 visible, void* resRawPtr)
757 {
758 auto *frameNode = reinterpret_cast<FrameNode *>(node);
759 CHECK_NULL_VOID(frameNode);
760 TextFieldModelNG::SetShowError(frameNode, UtfUtils::Str8ToStr16(std::string(error)), static_cast<bool>(visible));
761 if (SystemProperties::ConfigChangePerform()) {
762 auto pattern = frameNode->GetPattern();
763 CHECK_NULL_VOID(pattern);
764 if (resRawPtr) {
765 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
766 pattern->RegisterResource<std::u16string>("errorString", resObj, UtfUtils::Str8ToStr16(std::string(error)));
767 } else {
768 pattern->UnRegisterResource("errorString");
769 }
770 }
771 }
772
ResetTextInputShowError(ArkUINodeHandle node)773 void ResetTextInputShowError(ArkUINodeHandle node)
774 {
775 auto *frameNode = reinterpret_cast<FrameNode *>(node);
776 CHECK_NULL_VOID(frameNode);
777 TextFieldModelNG::SetShowError(frameNode, u"", false);
778 if (SystemProperties::ConfigChangePerform()) {
779 auto pattern = frameNode->GetPattern();
780 CHECK_NULL_VOID(pattern);
781 pattern->UnRegisterResource("errorString");
782 }
783 }
784
SetTextInputPlaceholderFont(ArkUINodeHandle node,const struct ArkUIPlaceholderFontType * placeholderFont,void * fontSizeRawPtr,void * fontfamilyRawPtr)785 void SetTextInputPlaceholderFont(ArkUINodeHandle node, const struct ArkUIPlaceholderFontType* placeholderFont,
786 void* fontSizeRawPtr, void* fontfamilyRawPtr)
787 {
788 auto *frameNode = reinterpret_cast<FrameNode *>(node);
789 CHECK_NULL_VOID(frameNode);
790 Font font;
791 CalcDimension fontSize;
792 if (placeholderFont->size != nullptr) {
793 if (placeholderFont->size->string != nullptr) {
794 fontSize.SetCalcValue(placeholderFont->size->string);
795 } else {
796 fontSize.SetValue(placeholderFont->size->number);
797 }
798 fontSize.SetUnit(static_cast<DimensionUnit>(placeholderFont->size->unit));
799 }
800 font.fontSize = fontSize;
801 if (placeholderFont->weight != nullptr && !std::string(placeholderFont->weight).empty()) {
802 font.fontWeight = Framework::ConvertStrToFontWeight(placeholderFont->weight);
803 } else if (placeholderFont->weightEnum > -1) {
804 font.fontWeight = static_cast<FontWeight>(placeholderFont->weightEnum);
805 }
806 if (placeholderFont->fontFamilies != nullptr && placeholderFont->length > 0) {
807 for (uint32_t i = 0; i < placeholderFont->length; i++) {
808 const char* family = *(placeholderFont->fontFamilies + i);
809 if (family != nullptr) {
810 font.fontFamilies.emplace_back(std::string(family));
811 }
812 }
813 }
814 if (placeholderFont->style >= 0) {
815 font.fontStyle = static_cast<Ace::FontStyle>(placeholderFont->style);
816 }
817 TextFieldModelNG::SetPlaceholderFont(frameNode, font);
818 if (SystemProperties::ConfigChangePerform()) {
819 auto pattern = frameNode->GetPattern();
820 CHECK_NULL_VOID(pattern);
821 if (fontSizeRawPtr) {
822 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(fontSizeRawPtr));
823 pattern->RegisterResource<CalcDimension>("placeholderFontSize", resObj, fontSize);
824 } else {
825 pattern->UnRegisterResource("placeholderFontSize");
826 }
827 if (fontfamilyRawPtr) {
828 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(fontfamilyRawPtr));
829 pattern->RegisterResource<std::vector<std::string>>("placeholderFontFamily", resObj, font.fontFamilies);
830 } else {
831 pattern->UnRegisterResource("placeholderFontFamily");
832 }
833 }
834 }
835
ResetTextInputPlaceholderFont(ArkUINodeHandle node)836 void ResetTextInputPlaceholderFont(ArkUINodeHandle node)
837 {
838 auto *frameNode = reinterpret_cast<FrameNode *>(node);
839 CHECK_NULL_VOID(frameNode);
840 Font font;
841 auto pipeline = frameNode->GetContext();
842 CHECK_NULL_VOID(pipeline);
843 auto theme = pipeline->GetThemeManager()->GetTheme<TextFieldTheme>();
844 CHECK_NULL_VOID(theme);
845 font.fontSize = theme->GetFontSize();
846 font.fontWeight = DEFAULT_FONT_WEIGHT;
847 font.fontStyle = DEFAULT_FONT_STYLE;
848 TextFieldModelNG::SetPlaceholderFont(frameNode, font);
849 if (SystemProperties::ConfigChangePerform()) {
850 auto pattern = frameNode->GetPattern();
851 CHECK_NULL_VOID(pattern);
852 pattern->UnRegisterResource("placeholderFontSize");
853 pattern->UnRegisterResource("fontFamily");
854 }
855 }
856
SetTextInputFontColor(ArkUINodeHandle node,ArkUI_Uint32 color,void * resRawPtr)857 void SetTextInputFontColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* resRawPtr)
858 {
859 auto *frameNode = reinterpret_cast<FrameNode *>(node);
860 CHECK_NULL_VOID(frameNode);
861 TextFieldModelNG::SetTextColor(frameNode, Color(color));
862 if (SystemProperties::ConfigChangePerform()) {
863 auto pattern = frameNode->GetPattern();
864 CHECK_NULL_VOID(pattern);
865 if (resRawPtr) {
866 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
867 pattern->RegisterResource<Color>("fontColor", resObj, Color(color));
868 } else {
869 pattern->UnRegisterResource("fontColor");
870 }
871 }
872 }
873
ResetTextInputFontColor(ArkUINodeHandle node)874 void ResetTextInputFontColor(ArkUINodeHandle node)
875 {
876 auto *frameNode = reinterpret_cast<FrameNode *>(node);
877 CHECK_NULL_VOID(frameNode);
878 TextFieldModelNG::ResetTextColor(frameNode);
879 if (SystemProperties::ConfigChangePerform()) {
880 auto pattern = frameNode->GetPattern();
881 CHECK_NULL_VOID(pattern);
882 pattern->UnRegisterResource("fontColor");
883 }
884 }
885
SetTextInputFontStyle(ArkUINodeHandle node,ArkUI_Uint32 value)886 void SetTextInputFontStyle(ArkUINodeHandle node, ArkUI_Uint32 value)
887 {
888 auto *frameNode = reinterpret_cast<FrameNode *>(node);
889 CHECK_NULL_VOID(frameNode);
890 TextFieldModelNG::SetFontStyle(frameNode, static_cast<Ace::FontStyle>(value));
891 }
892
ResetTextInputFontStyle(ArkUINodeHandle node)893 void ResetTextInputFontStyle(ArkUINodeHandle node)
894 {
895 auto *frameNode = reinterpret_cast<FrameNode *>(node);
896 CHECK_NULL_VOID(frameNode);
897 TextFieldModelNG::SetFontStyle(frameNode, DEFAULT_FONT_STYLE);
898 }
899
SetTextInputFontFamily(ArkUINodeHandle node,ArkUI_CharPtr * fontFamilies,ArkUI_Uint32 length,void * resRawPtr)900 void SetTextInputFontFamily(ArkUINodeHandle node, ArkUI_CharPtr* fontFamilies, ArkUI_Uint32 length, void* resRawPtr)
901 {
902 CHECK_NULL_VOID(fontFamilies);
903 if (length <= 0) {
904 return;
905 }
906 auto *frameNode = reinterpret_cast<FrameNode *>(node);
907 CHECK_NULL_VOID(frameNode);
908 std::vector<std::string> families;
909 for (uint32_t i = 0; i < length; i++) {
910 const char* family = *(fontFamilies + i);
911 if (family != nullptr) {
912 families.emplace_back(std::string(family));
913 }
914 }
915 TextFieldModelNG::SetFontFamily(frameNode, families);
916 if (SystemProperties::ConfigChangePerform()) {
917 auto pattern = frameNode->GetPattern();
918 CHECK_NULL_VOID(pattern);
919 if (resRawPtr) {
920 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
921 pattern->RegisterResource<std::vector<std::string>>("fontFamily", resObj, families);
922 } else {
923 pattern->UnRegisterResource("fontFamily");
924 }
925 }
926 }
927
ResetTextInputFontFamily(ArkUINodeHandle node)928 void ResetTextInputFontFamily(ArkUINodeHandle node)
929 {
930 auto *frameNode = reinterpret_cast<FrameNode *>(node);
931 CHECK_NULL_VOID(frameNode);
932 TextFieldModelNG::SetFontFamily(frameNode, DEFAULT_FONT_FAMILY);
933 if (SystemProperties::ConfigChangePerform()) {
934 auto pattern = frameNode->GetPattern();
935 CHECK_NULL_VOID(pattern);
936 pattern->UnRegisterResource("fontFamily");
937 }
938 }
939
SetTextInputPlaceholderString(ArkUINodeHandle node,ArkUI_CharPtr value)940 void SetTextInputPlaceholderString(ArkUINodeHandle node, ArkUI_CharPtr value)
941 {
942 auto *frameNode = reinterpret_cast<FrameNode *>(node);
943 CHECK_NULL_VOID(frameNode);
944 std::string placeholderStr(value);
945 TextFieldModelNG::SetTextFieldPlaceHolder(frameNode, UtfUtils::Str8DebugToStr16(placeholderStr));
946 }
947
SetTextInputTextString(ArkUINodeHandle node,ArkUI_CharPtr value)948 void SetTextInputTextString(ArkUINodeHandle node, ArkUI_CharPtr value)
949 {
950 auto *frameNode = reinterpret_cast<FrameNode *>(node);
951 CHECK_NULL_VOID(frameNode);
952 std::string textStr(value);
953 TextFieldModelNG::SetTextFieldText(frameNode, UtfUtils::Str8DebugToStr16(textStr));
954 }
955
StopTextInputTextEditing(ArkUINodeHandle node)956 void StopTextInputTextEditing(ArkUINodeHandle node)
957 {
958 auto *frameNode = reinterpret_cast<FrameNode *>(node);
959 CHECK_NULL_VOID(frameNode);
960 TextFieldModelNG::StopTextFieldEditing(frameNode);
961 }
962
SetTextInputCancelButton(ArkUINodeHandle node,ArkUI_Int32 style,const struct ArkUISizeType * size,ArkUI_Uint32 color,ArkUI_CharPtr src,ArkUIImageIconRes * imageIconRes)963 void SetTextInputCancelButton(ArkUINodeHandle node, ArkUI_Int32 style, const struct ArkUISizeType* size,
964 ArkUI_Uint32 color, ArkUI_CharPtr src, ArkUIImageIconRes* imageIconRes)
965 {
966 auto *frameNode = reinterpret_cast<FrameNode *>(node);
967 CHECK_NULL_VOID(frameNode);
968 TextFieldModelNG::SetCleanNodeStyle(frameNode, static_cast<CleanNodeStyle>(style));
969 TextFieldModelNG::SetIsShowCancelButton(frameNode, true);
970 TextFieldModelNG::SetCancelSymbolIcon(frameNode, nullptr);
971 TextFieldModelNG::SetCancelButtonSymbol(frameNode, false);
972 // set icon size
973 CalcDimension iconSize = CalcDimension(size->value, static_cast<DimensionUnit>(size->unit));
974 if (LessNotEqual(iconSize.Value(), 0.0)) {
975 auto pipeline = frameNode->GetContext();
976 CHECK_NULL_VOID(pipeline);
977 auto theme = pipeline->GetThemeManager()->GetTheme<TextFieldTheme>();
978 iconSize = theme->GetCancelIconSize();
979 }
980 TextFieldModelNG::SetCancelIconSize(frameNode, iconSize);
981 // set icon src
982 std::string iconSrc(src);
983 TextFieldModelNG::SetCanacelIconSrc(frameNode, iconSrc);
984 // set icon color
985 Color iconColor(color);
986 TextFieldModelNG::SetCancelIconColor(frameNode, iconColor);
987 if (SystemProperties::ConfigChangePerform()) {
988 auto pattern = frameNode->GetPattern();
989 CHECK_NULL_VOID(pattern);
990 if (imageIconRes && imageIconRes->sizeObj) {
991 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(imageIconRes->sizeObj));
992 pattern->RegisterResource<CalcDimension>("cancelButtonIconSize", resObj, iconSize);
993 } else {
994 pattern->UnRegisterResource("cancelButtonIconSize");
995 }
996 if (imageIconRes && imageIconRes->colorObj) {
997 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(imageIconRes->colorObj));
998 pattern->RegisterResource<Color>("cancelButtonIconColor", resObj, iconColor);
999 } else {
1000 pattern->UnRegisterResource("cancelButtonIconColor");
1001 }
1002 if (imageIconRes && imageIconRes->srcObj) {
1003 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(imageIconRes->srcObj));
1004 pattern->RegisterResource<std::string>("cancelButtonIconSrc", resObj, iconSrc);
1005 } else {
1006 pattern->UnRegisterResource("cancelButtonIconSrc");
1007 }
1008 }
1009 }
1010
resetTextInputCancelButton(ArkUINodeHandle node)1011 void resetTextInputCancelButton(ArkUINodeHandle node)
1012 {
1013 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1014 CHECK_NULL_VOID(frameNode);
1015 TextFieldModelNG::SetCleanNodeStyle(frameNode, CleanNodeStyle::INPUT);
1016 TextFieldModelNG::SetIsShowCancelButton(frameNode, false);
1017 TextFieldModelNG::SetCancelSymbolIcon(frameNode, nullptr);
1018 TextFieldModelNG::SetCancelButtonSymbol(frameNode, true);
1019 if (SystemProperties::ConfigChangePerform()) {
1020 auto pattern = frameNode->GetPattern();
1021 CHECK_NULL_VOID(pattern);
1022 pattern->UnRegisterResource("cancelButtonIconSize");
1023 pattern->UnRegisterResource("cancelButtonIconColor");
1024 pattern->UnRegisterResource("cancelButtonIconSrc");
1025 }
1026 }
1027
SetTextInputCancelSymbolIcon(ArkUINodeHandle node,ArkUI_Int32 style,void * symbolFunction)1028 void SetTextInputCancelSymbolIcon(ArkUINodeHandle node, ArkUI_Int32 style, void* symbolFunction)
1029 {
1030 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1031 CHECK_NULL_VOID(frameNode);
1032 TextFieldModelNG::SetCleanNodeStyle(frameNode, static_cast<CleanNodeStyle>(style));
1033 TextFieldModelNG::SetIsShowCancelButton(frameNode, true);
1034 if (symbolFunction) {
1035 auto symbolCallback = reinterpret_cast<std::function<void(WeakPtr<NG::FrameNode>)>*>(symbolFunction);
1036 TextFieldModelNG::SetCancelSymbolIcon(frameNode, std::move(*symbolCallback));
1037 } else {
1038 TextFieldModelNG::SetCancelSymbolIcon(frameNode, nullptr);
1039 }
1040 TextFieldModelNG::SetCancelButtonSymbol(frameNode, true);
1041 }
1042
ResetTextInputCancelSymbolIcon(ArkUINodeHandle node)1043 void ResetTextInputCancelSymbolIcon(ArkUINodeHandle node)
1044 {
1045 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1046 CHECK_NULL_VOID(frameNode);
1047 TextFieldModelNG::SetCleanNodeStyle(frameNode, CleanNodeStyle::INPUT);
1048 TextFieldModelNG::SetIsShowCancelButton(frameNode, false);
1049 TextFieldModelNG::SetCancelSymbolIcon(frameNode, nullptr);
1050 TextFieldModelNG::SetCancelButtonSymbol(frameNode, true);
1051 }
1052
GetTextInputPlaceholder(ArkUINodeHandle node)1053 ArkUI_CharPtr GetTextInputPlaceholder(ArkUINodeHandle node)
1054 {
1055 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1056 CHECK_NULL_RETURN(frameNode, "");
1057 g_strValue = UtfUtils::Str16DebugToStr8(TextFieldModelNG::GetPlaceholderText(frameNode));
1058 return g_strValue.c_str();
1059 }
1060
GetTextInputText(ArkUINodeHandle node)1061 ArkUI_CharPtr GetTextInputText(ArkUINodeHandle node)
1062 {
1063 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1064 CHECK_NULL_RETURN(frameNode, "");
1065 g_strValue = UtfUtils::Str16DebugToStr8(TextFieldModelNG::GetTextFieldText(frameNode));
1066 return g_strValue.c_str();
1067 }
1068
GetTextInputCaretColor(ArkUINodeHandle node)1069 ArkUI_Uint32 GetTextInputCaretColor(ArkUINodeHandle node)
1070 {
1071 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1072 CHECK_NULL_RETURN(frameNode, ERROR_UINT_CODE);
1073 return TextFieldModelNG::GetCaretColor(frameNode).GetValue();
1074 }
1075
GetTextInputCaretStyle(ArkUINodeHandle node,ArkUI_Int32 unit)1076 ArkUI_Float32 GetTextInputCaretStyle(ArkUINodeHandle node, ArkUI_Int32 unit)
1077 {
1078 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1079 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
1080 return TextFieldModelNG::GetCaretStyle(frameNode).GetNativeValue(static_cast<DimensionUnit>(unit));
1081 }
1082
GetTextInputShowUnderline(ArkUINodeHandle node)1083 ArkUI_Bool GetTextInputShowUnderline(ArkUINodeHandle node)
1084 {
1085 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1086 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1087 return static_cast<ArkUI_Bool>(TextFieldModelNG::GetShowUnderline(frameNode));
1088 }
1089
GetTextInputMaxLength(ArkUINodeHandle node)1090 ArkUI_Uint32 GetTextInputMaxLength(ArkUINodeHandle node)
1091 {
1092 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1093 CHECK_NULL_RETURN(frameNode, ERROR_UINT_CODE);
1094 return TextFieldModelNG::GetMaxLength(frameNode);
1095 }
1096
GetTextInputEnterKeyType(ArkUINodeHandle node)1097 ArkUI_Int32 GetTextInputEnterKeyType(ArkUINodeHandle node)
1098 {
1099 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1100 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1101 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetEnterKeyType(frameNode));
1102 }
1103
GetTextInputPlaceholderColor(ArkUINodeHandle node)1104 ArkUI_Uint32 GetTextInputPlaceholderColor(ArkUINodeHandle node)
1105 {
1106 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1107 CHECK_NULL_RETURN(frameNode, ERROR_UINT_CODE);
1108 return TextFieldModelNG::GetPlaceholderColor(frameNode).GetValue();
1109 }
1110
GetTextInputPlaceholderFont(ArkUINodeHandle node,ArkUITextFont * font)1111 void GetTextInputPlaceholderFont(ArkUINodeHandle node, ArkUITextFont* font)
1112 {
1113 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1114 CHECK_NULL_VOID(frameNode);
1115 Font value = TextFieldModelNG::GetPlaceholderFont(frameNode);
1116 if (value.fontSize.has_value()) {
1117 font->fontSize = value.fontSize.value().GetNativeValue(static_cast<DimensionUnit>(font->fontSizeUnit));
1118 }
1119 if (value.fontWeight.has_value()) {
1120 font->fontWeight = static_cast<ArkUI_Int32>(value.fontWeight.value());
1121 }
1122 if (!value.fontFamilies.empty()) {
1123 std::string families;
1124 uint32_t index = 0;
1125 for (auto& family : value.fontFamilies) {
1126 families += family;
1127 if (index != value.fontFamilies.size() - 1) {
1128 families += ",";
1129 }
1130 index ++;
1131 }
1132 g_strValue = families;
1133 font->fontFamilies = g_strValue.c_str();
1134 }
1135 if (value.fontStyle.has_value()) {
1136 font->fontStyle = static_cast<ArkUI_Int32>(value.fontStyle.value());
1137 }
1138 }
1139
GetTextInputRequestKeyboardOnFocus(ArkUINodeHandle node)1140 ArkUI_Bool GetTextInputRequestKeyboardOnFocus(ArkUINodeHandle node)
1141 {
1142 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1143 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1144 return static_cast<ArkUI_Bool>(TextFieldModelNG::GetRequestKeyboardOnFocus(frameNode));
1145 }
1146
GetTextInputType(ArkUINodeHandle node)1147 ArkUI_Int32 GetTextInputType(ArkUINodeHandle node)
1148 {
1149 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1150 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1151 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetType(frameNode));
1152 }
1153
GetTextInputSelectedBackgroundColor(ArkUINodeHandle node)1154 ArkUI_Uint32 GetTextInputSelectedBackgroundColor(ArkUINodeHandle node)
1155 {
1156 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1157 CHECK_NULL_RETURN(frameNode, ERROR_UINT_CODE);
1158 return TextFieldModelNG::GetSelectedBackgroundColor(frameNode).GetValue();
1159 }
1160
GetTextInputShowPasswordIcon(ArkUINodeHandle node)1161 ArkUI_Bool GetTextInputShowPasswordIcon(ArkUINodeHandle node)
1162 {
1163 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1164 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1165 return TextFieldModelNG::GetShowPasswordIcon(frameNode);
1166 }
1167
GetTextInputEditing(ArkUINodeHandle node)1168 ArkUI_Bool GetTextInputEditing(ArkUINodeHandle node)
1169 {
1170 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1171 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1172 return TextFieldModelNG::GetTextFieldEditing(frameNode);
1173 }
1174
GetTextInputShowCancelButton(ArkUINodeHandle node)1175 ArkUI_Bool GetTextInputShowCancelButton(ArkUINodeHandle node)
1176 {
1177 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1178 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1179 return TextFieldModelNG::GetShowCancelButton(frameNode);
1180 }
1181
GetTextInputCancelButtonStyle(ArkUINodeHandle node)1182 ArkUI_Int32 GetTextInputCancelButtonStyle(ArkUINodeHandle node)
1183 {
1184 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1185 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1186 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetCleanNodeStyle(frameNode));
1187 }
1188
GetTextInputCancelIconSize(ArkUINodeHandle node,ArkUI_Int32 unit)1189 ArkUI_Float32 GetTextInputCancelIconSize(ArkUINodeHandle node, ArkUI_Int32 unit)
1190 {
1191 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1192 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
1193 return TextFieldModelNG::GetCancelIconSize(frameNode).GetNativeValue(static_cast<DimensionUnit>(unit));
1194 }
1195
getTextInputTextCancelIconSrc(ArkUINodeHandle node)1196 ArkUI_CharPtr getTextInputTextCancelIconSrc(ArkUINodeHandle node)
1197 {
1198 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1199 CHECK_NULL_RETURN(frameNode, "");
1200 g_strValue = TextFieldModelNG::GetCanacelIconSrc(frameNode);
1201 return g_strValue.c_str();
1202 }
1203
getTextInputTextCancelIconColor(ArkUINodeHandle node)1204 ArkUI_Uint32 getTextInputTextCancelIconColor(ArkUINodeHandle node)
1205 {
1206 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1207 CHECK_NULL_RETURN(frameNode, ERROR_UINT_CODE);
1208 return TextFieldModelNG::GetCancelIconColor(frameNode).GetValue();
1209 }
1210
GetTextInputTextAlign(ArkUINodeHandle node)1211 ArkUI_Int32 GetTextInputTextAlign(ArkUINodeHandle node)
1212 {
1213 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1214 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1215 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetTextAlign(frameNode));
1216 }
1217
GetTextInputFontColor(ArkUINodeHandle node)1218 ArkUI_Uint32 GetTextInputFontColor(ArkUINodeHandle node)
1219 {
1220 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1221 CHECK_NULL_RETURN(frameNode, ERROR_UINT_CODE);
1222 return TextFieldModelNG::GetTextColor(frameNode).GetValue();
1223 }
1224
GetTextInputFontStyle(ArkUINodeHandle node)1225 ArkUI_Int32 GetTextInputFontStyle(ArkUINodeHandle node)
1226 {
1227 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1228 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1229 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetFontStyle(frameNode));
1230 }
1231
GetTextInputFontWeight(ArkUINodeHandle node)1232 ArkUI_Int32 GetTextInputFontWeight(ArkUINodeHandle node)
1233 {
1234 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1235 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1236 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetFontWeight(frameNode));
1237 }
1238
GetTextInputFontSize(ArkUINodeHandle node,ArkUI_Int32 unit)1239 ArkUI_Float32 GetTextInputFontSize(ArkUINodeHandle node, ArkUI_Int32 unit)
1240 {
1241 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1242 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
1243 return TextFieldModelNG::GetFontSize(frameNode).GetNativeValue(static_cast<DimensionUnit>(unit));
1244 }
1245
SetTextInputBackgroundColor(ArkUINodeHandle node,ArkUI_Uint32 color,void * resRawPtr)1246 void SetTextInputBackgroundColor(ArkUINodeHandle node, ArkUI_Uint32 color, void* resRawPtr)
1247 {
1248 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1249 CHECK_NULL_VOID(frameNode);
1250 TextFieldModelNG::SetBackgroundColor(frameNode, Color(color));
1251 if (SystemProperties::ConfigChangePerform()) {
1252 auto pattern = frameNode->GetPattern();
1253 CHECK_NULL_VOID(pattern);
1254 if (resRawPtr) {
1255 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1256 pattern->RegisterResource<Color>("backgroundColor", resObj, Color(color));
1257 } else {
1258 pattern->UnRegisterResource("backgroundColor");
1259 }
1260 }
1261 }
1262
SetTextInputBackgroundColorWithColorSpace(ArkUINodeHandle node,ArkUI_Uint32 color,ArkUI_Int32 colorSpace,void * resRawPtr)1263 void SetTextInputBackgroundColorWithColorSpace(ArkUINodeHandle node, ArkUI_Uint32 color,
1264 ArkUI_Int32 colorSpace, void* resRawPtr)
1265 {
1266 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1267 CHECK_NULL_VOID(frameNode);
1268 Color backgroundColor { color };
1269 if (ColorSpace::DISPLAY_P3 == colorSpace) {
1270 backgroundColor.SetColorSpace(ColorSpace::DISPLAY_P3);
1271 } else {
1272 backgroundColor.SetColorSpace(ColorSpace::SRGB);
1273 }
1274 TextFieldModelNG::SetBackgroundColor(frameNode, backgroundColor);
1275 if (SystemProperties::ConfigChangePerform()) {
1276 auto pattern = frameNode->GetPattern();
1277 CHECK_NULL_VOID(pattern);
1278 if (resRawPtr) {
1279 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1280 pattern->RegisterResource<Color>("backgroundColor", resObj, backgroundColor);
1281 } else {
1282 pattern->UnRegisterResource("backgroundColor");
1283 }
1284 }
1285 }
1286
ResetTextInputBackgroundColor(ArkUINodeHandle node)1287 void ResetTextInputBackgroundColor(ArkUINodeHandle node)
1288 {
1289 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1290 CHECK_NULL_VOID(frameNode);
1291 TextFieldModelNG::ResetBackgroundColor(frameNode);
1292 if (SystemProperties::ConfigChangePerform()) {
1293 auto pattern = frameNode->GetPattern();
1294 CHECK_NULL_VOID(pattern);
1295 pattern->UnRegisterResource("backgroundColor");
1296 }
1297 }
1298
SetTextInputTextSelection(ArkUINodeHandle node,ArkUI_Int32 start,ArkUI_Int32 end)1299 void SetTextInputTextSelection(ArkUINodeHandle node, ArkUI_Int32 start, ArkUI_Int32 end)
1300 {
1301 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1302 CHECK_NULL_VOID(frameNode);
1303 TextFieldModelNG::SetTextSelection(frameNode, start, end);
1304 }
1305
GetTextInputTextSelectionIndex(ArkUINodeHandle node,ArkUI_Bool isEnd)1306 ArkUI_Int32 GetTextInputTextSelectionIndex(ArkUINodeHandle node, ArkUI_Bool isEnd)
1307 {
1308 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1309 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1310 return TextFieldModelNG::GetTextSelectionIndex(frameNode, isEnd);
1311 }
1312
RegisterPaddingResource(FrameNode * frameNode,const struct ArkUISizeType * top,const struct ArkUISizeType * right,const struct ArkUISizeType * bottom,const struct ArkUISizeType * left,ArkUIPaddingRes * paddingRes)1313 void RegisterPaddingResource(FrameNode* frameNode, const struct ArkUISizeType* top, const struct ArkUISizeType* right,
1314 const struct ArkUISizeType* bottom, const struct ArkUISizeType* left, ArkUIPaddingRes* paddingRes)
1315 {
1316 CHECK_NULL_VOID(SystemProperties::ConfigChangePerform());
1317 auto pattern = frameNode->GetPattern();
1318 CHECK_NULL_VOID(pattern);
1319 if (paddingRes && paddingRes->topObj) {
1320 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(paddingRes->topObj));
1321 pattern->RegisterResource<CalcDimension>("paddingTop", resObj,
1322 CalcDimension(top->value, static_cast<DimensionUnit>(top->unit)));
1323 } else {
1324 pattern->UnRegisterResource("paddingTop");
1325 }
1326 if (paddingRes && paddingRes->bottomObj) {
1327 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(paddingRes->bottomObj));
1328 pattern->RegisterResource<CalcDimension>("paddingBottom", resObj,
1329 CalcDimension(bottom->value, static_cast<DimensionUnit>(bottom->unit)));
1330 } else {
1331 pattern->UnRegisterResource("paddingBottom");
1332 }
1333 if (paddingRes && paddingRes->leftObj) {
1334 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(paddingRes->leftObj));
1335 pattern->RegisterResource<CalcDimension>("paddingLeft", resObj,
1336 CalcDimension(left->value, static_cast<DimensionUnit>(left->unit)));
1337 } else {
1338 pattern->UnRegisterResource("paddingLeft");
1339 }
1340 if (paddingRes && paddingRes->rightObj) {
1341 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(paddingRes->rightObj));
1342 pattern->RegisterResource<CalcDimension>("paddingRight", resObj,
1343 CalcDimension(right->value, static_cast<DimensionUnit>(right->unit)));
1344 } else {
1345 pattern->UnRegisterResource("paddingRight");
1346 }
1347 }
1348
SetTextInputPadding(ArkUINodeHandle node,const struct ArkUISizeType * top,const struct ArkUISizeType * right,const struct ArkUISizeType * bottom,const struct ArkUISizeType * left,ArkUIPaddingRes * paddingRes)1349 void SetTextInputPadding(ArkUINodeHandle node, const struct ArkUISizeType* top, const struct ArkUISizeType* right,
1350 const struct ArkUISizeType* bottom, const struct ArkUISizeType* left, ArkUIPaddingRes* paddingRes)
1351 {
1352 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1353 CHECK_NULL_VOID(frameNode);
1354 CalcLength topDimen;
1355 CalcLength rightDimen;
1356 CalcLength bottomDimen;
1357 CalcLength leftDimen;
1358 if (top->string != nullptr) {
1359 topDimen = CalcLength(top->string);
1360 } else {
1361 topDimen = CalcLength(top->value, static_cast<DimensionUnit>(top->unit));
1362 }
1363 if (right->string != nullptr) {
1364 rightDimen = CalcLength(right->string);
1365 } else {
1366 rightDimen = CalcLength(right->value, static_cast<DimensionUnit>(right->unit));
1367 }
1368 if (bottom->string != nullptr) {
1369 bottomDimen = CalcLength(bottom->string);
1370 } else {
1371 bottomDimen = CalcLength(bottom->value, static_cast<DimensionUnit>(bottom->unit));
1372 }
1373 if (left->string != nullptr) {
1374 leftDimen = CalcLength(left->string);
1375 } else {
1376 leftDimen = CalcLength(left->value, static_cast<DimensionUnit>(left->unit));
1377 }
1378 NG::PaddingProperty paddings;
1379 paddings.top = std::optional<CalcLength>(topDimen);
1380 paddings.bottom = std::optional<CalcLength>(bottomDimen);
1381 paddings.left = std::optional<CalcLength>(leftDimen);
1382 paddings.right = std::optional<CalcLength>(rightDimen);
1383 TextFieldModelNG::SetPadding(frameNode, paddings);
1384 RegisterPaddingResource(frameNode, top, right, bottom, left, paddingRes);
1385 }
1386
ResetTextInputPadding(ArkUINodeHandle node)1387 void ResetTextInputPadding(ArkUINodeHandle node)
1388 {
1389 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1390 TextFieldModelNG::ResetTextInputPadding(frameNode);
1391 if (SystemProperties::ConfigChangePerform()) {
1392 auto pattern = frameNode->GetPattern();
1393 CHECK_NULL_VOID(pattern);
1394 pattern->UnRegisterResource("paddingTop");
1395 pattern->UnRegisterResource("paddingBottom");
1396 pattern->UnRegisterResource("paddingLeft");
1397 pattern->UnRegisterResource("paddingRight");
1398 }
1399 }
1400
SetTextInputFontFeature(ArkUINodeHandle node,ArkUI_CharPtr value)1401 void SetTextInputFontFeature(ArkUINodeHandle node, ArkUI_CharPtr value)
1402 {
1403 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1404 CHECK_NULL_VOID(frameNode);
1405 std::string strValue = value;
1406 TextFieldModelNG::SetFontFeature(frameNode, ParseFontFeatureSettings(strValue));
1407 }
1408
ResetTextInputFontFeature(ArkUINodeHandle node)1409 void ResetTextInputFontFeature(ArkUINodeHandle node)
1410 {
1411 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1412 std::string strValue = "";
1413 TextFieldModelNG::SetFontFeature(frameNode, ParseFontFeatureSettings(strValue));
1414 }
1415
SetTextInputDecoration(ArkUINodeHandle node,ArkUI_Int32 decoration,ArkUI_Uint32 color,ArkUI_Int32 style,void * resRawPtr)1416 void SetTextInputDecoration(ArkUINodeHandle node, ArkUI_Int32 decoration, ArkUI_Uint32 color,
1417 ArkUI_Int32 style, void* resRawPtr)
1418 {
1419 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1420 CHECK_NULL_VOID(frameNode);
1421 TextFieldModelNG::SetTextDecoration(frameNode, static_cast<TextDecoration>(decoration));
1422 TextFieldModelNG::SetTextDecorationColor(frameNode, Color(color));
1423 TextFieldModelNG::SetTextDecorationStyle(frameNode, static_cast<TextDecorationStyle>(style));
1424 if (SystemProperties::ConfigChangePerform()) {
1425 auto pattern = frameNode->GetPattern();
1426 CHECK_NULL_VOID(pattern);
1427 if (resRawPtr) {
1428 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1429 pattern->RegisterResource<Color>("decorationColor", resObj, Color(color));
1430 } else {
1431 pattern->UnRegisterResource("decorationColor");
1432 }
1433 }
1434 }
1435
ResetTextInputDecoration(ArkUINodeHandle node)1436 void ResetTextInputDecoration(ArkUINodeHandle node)
1437 {
1438 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1439 CHECK_NULL_VOID(frameNode);
1440 TextFieldModelNG::SetTextDecoration(frameNode, DEFAULT_TEXT_DECORATION);
1441 TextFieldModelNG::SetTextDecorationColor(frameNode, DEFAULT_DECORATION_COLOR);
1442 TextFieldModelNG::SetTextDecorationStyle(frameNode, DEFAULT_DECORATION_STYLE);
1443 if (SystemProperties::ConfigChangePerform()) {
1444 auto pattern = frameNode->GetPattern();
1445 CHECK_NULL_VOID(pattern);
1446 pattern->UnRegisterResource("decorationColor");
1447 }
1448 }
1449
SetTextInputLetterSpacing(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit,void * resRawPtr)1450 void SetTextInputLetterSpacing(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit, void* resRawPtr)
1451 {
1452 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1453 CHECK_NULL_VOID(frameNode);
1454 TextFieldModelNG::SetLetterSpacing(frameNode, CalcDimension(value, (DimensionUnit)unit));
1455 if (SystemProperties::ConfigChangePerform()) {
1456 auto pattern = frameNode->GetPattern();
1457 CHECK_NULL_VOID(pattern);
1458 if (resRawPtr) {
1459 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1460 pattern->RegisterResource<CalcDimension>(
1461 "letterSpacing", resObj, CalcDimension(value, (DimensionUnit)unit));
1462 } else {
1463 pattern->UnRegisterResource("letterSpacing");
1464 }
1465 }
1466 }
1467
ResetTextInputLetterSpacing(ArkUINodeHandle node)1468 void ResetTextInputLetterSpacing(ArkUINodeHandle node)
1469 {
1470 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1471 CHECK_NULL_VOID(frameNode);
1472 CalcDimension value;
1473 value.Reset();
1474 TextFieldModelNG::SetLetterSpacing(frameNode, value);
1475 if (SystemProperties::ConfigChangePerform()) {
1476 auto pattern = frameNode->GetPattern();
1477 CHECK_NULL_VOID(pattern);
1478 pattern->UnRegisterResource("letterSpacing");
1479 }
1480 }
1481
GetTextInputLetterSpacing(ArkUINodeHandle node)1482 ArkUI_Float32 GetTextInputLetterSpacing(ArkUINodeHandle node)
1483 {
1484 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1485 CHECK_NULL_RETURN(frameNode, 0.0f);
1486 return TextFieldModelNG::GetLetterSpacing(frameNode).ConvertToFp();
1487 }
1488
SetTextInputLineHeight(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit,void * resRawPtr)1489 void SetTextInputLineHeight(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit, void* resRawPtr)
1490 {
1491 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1492 CHECK_NULL_VOID(frameNode);
1493 TextFieldModelNG::SetLineHeight(frameNode, CalcDimension(value, (DimensionUnit)unit));
1494 if (SystemProperties::ConfigChangePerform()) {
1495 auto pattern = frameNode->GetPattern();
1496 CHECK_NULL_VOID(pattern);
1497 if (resRawPtr) {
1498 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1499 pattern->RegisterResource<CalcDimension>("lineHeight", resObj, CalcDimension(value, (DimensionUnit)unit));
1500 } else {
1501 pattern->UnRegisterResource("lineHeight");
1502 }
1503 }
1504 }
1505
ResetTextInputLineHeight(ArkUINodeHandle node)1506 void ResetTextInputLineHeight(ArkUINodeHandle node)
1507 {
1508 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1509 CHECK_NULL_VOID(frameNode);
1510 CalcDimension value;
1511 value.Reset();
1512 TextFieldModelNG::SetLineHeight(frameNode, value);
1513 if (SystemProperties::ConfigChangePerform()) {
1514 auto pattern = frameNode->GetPattern();
1515 CHECK_NULL_VOID(pattern);
1516 pattern->UnRegisterResource("lineHeight");
1517 }
1518 }
1519
SetTextInputHalfLeading(ArkUINodeHandle node,ArkUI_Uint32 halfLeading)1520 void SetTextInputHalfLeading(ArkUINodeHandle node, ArkUI_Uint32 halfLeading)
1521 {
1522 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1523 CHECK_NULL_VOID(frameNode);
1524 TextFieldModelNG::SetHalfLeading(frameNode, static_cast<bool>(halfLeading));
1525 }
1526
ResetTextInputHalfLeading(ArkUINodeHandle node)1527 void ResetTextInputHalfLeading(ArkUINodeHandle node)
1528 {
1529 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1530 CHECK_NULL_VOID(frameNode);
1531 bool value = false;
1532 TextFieldModelNG::SetHalfLeading(frameNode, value);
1533 }
1534
SetTextInputKeyboardAppearance(ArkUINodeHandle node,ArkUI_Uint32 keyboardAppearance)1535 void SetTextInputKeyboardAppearance(ArkUINodeHandle node, ArkUI_Uint32 keyboardAppearance)
1536 {
1537 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1538 CHECK_NULL_VOID(frameNode);
1539 auto value = static_cast<KeyboardAppearance>(keyboardAppearance);
1540 TextFieldModelNG::SetKeyboardAppearance(frameNode, value);
1541 }
1542
GetTextInputKeyboardAppearance(ArkUINodeHandle node)1543 ArkUI_Int32 GetTextInputKeyboardAppearance(ArkUINodeHandle node)
1544 {
1545 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1546 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1547 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetKeyboardAppearance(frameNode));
1548 }
1549
ResetTextInputKeyboardAppearance(ArkUINodeHandle node)1550 void ResetTextInputKeyboardAppearance(ArkUINodeHandle node)
1551 {
1552 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1553 CHECK_NULL_VOID(frameNode);
1554 auto value = KeyboardAppearance::NONE_IMMERSIVE;
1555 TextFieldModelNG::SetKeyboardAppearance(frameNode, value);
1556 }
1557
SetTextInputNormalUnderlineColor(ArkUINodeHandle node,ArkUI_Uint32 normalColor,void * resRawPtr)1558 void SetTextInputNormalUnderlineColor(ArkUINodeHandle node, ArkUI_Uint32 normalColor, void* resRawPtr)
1559 {
1560 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1561 CHECK_NULL_VOID(frameNode);
1562 TextFieldModelNG::SetNormalUnderlineColor(frameNode, Color(normalColor));
1563 auto pattern = frameNode->GetPattern();
1564 CHECK_NULL_VOID(pattern);
1565 if (SystemProperties::ConfigChangePerform() && resRawPtr) {
1566 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1567 pattern->RegisterResource<Color>("underlineColorNormal", resObj, Color(normalColor));
1568 } else {
1569 pattern->UnRegisterResource("underlineColorNormal");
1570 }
1571 }
1572
SetTextInputUserUnderlineColor(ArkUINodeHandle node,const ArkUI_Uint32 * values,const ArkUI_Bool * hasValues,ArkUI_Int32 length,ArkUIUserUnderlineColorRes * underlineColorObj)1573 void SetTextInputUserUnderlineColor(ArkUINodeHandle node, const ArkUI_Uint32* values,
1574 const ArkUI_Bool* hasValues, ArkUI_Int32 length, ArkUIUserUnderlineColorRes* underlineColorObj)
1575 {
1576 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1577 CHECK_NULL_VOID(frameNode);
1578 auto pattern = frameNode->GetPattern();
1579 CHECK_NULL_VOID(pattern);
1580 UserUnderlineColor userColor = UserUnderlineColor();
1581 if (length != DEFAULT_GROUP_UNDERLINE_COLOR_VALUES_COUNT) {
1582 return;
1583 }
1584 if (hasValues[CALL_ARG_0]) {
1585 userColor.typing = Color(values[CALL_ARG_0]);
1586 if (SystemProperties::ConfigChangePerform() && underlineColorObj && underlineColorObj->typingColorObj) {
1587 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(underlineColorObj->typingColorObj));
1588 pattern->RegisterResource<Color>("underlineColorTyping", resObj, Color(values[CALL_ARG_0]));
1589 } else {
1590 pattern->UnRegisterResource("underlineColorTyping");
1591 }
1592 }
1593 if (hasValues[CALL_ARG_1]) {
1594 userColor.normal = Color(values[CALL_ARG_1]);
1595 if (SystemProperties::ConfigChangePerform() && underlineColorObj && underlineColorObj->normalColorObj) {
1596 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(underlineColorObj->normalColorObj));
1597 pattern->RegisterResource<Color>("underlineColorNormal", resObj, Color(values[CALL_ARG_1]));
1598 } else {
1599 pattern->UnRegisterResource("underlineColorNormal");
1600 }
1601 }
1602 if (hasValues[CALL_ARG_2]) {
1603 userColor.error = Color(values[CALL_ARG_2]);
1604 if (SystemProperties::ConfigChangePerform() && underlineColorObj && underlineColorObj->errorColorObj) {
1605 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(underlineColorObj->errorColorObj));
1606 pattern->RegisterResource<Color>("underlineColorError", resObj, Color(values[CALL_ARG_2]));
1607 } else {
1608 pattern->UnRegisterResource("underlineColorError");
1609 }
1610 }
1611 if (hasValues[CALL_ARG_3]) {
1612 userColor.disable = Color(values[CALL_ARG_3]);
1613 if (SystemProperties::ConfigChangePerform() && underlineColorObj && underlineColorObj->disableColorObj) {
1614 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(underlineColorObj->disableColorObj));
1615 pattern->RegisterResource<Color>("underlineColorDisable", resObj, Color(values[CALL_ARG_3]));
1616 } else {
1617 pattern->UnRegisterResource("underlineColorDisable");
1618 }
1619 }
1620 TextFieldModelNG::SetUserUnderlineColor(frameNode, userColor);
1621 }
1622
GetTextInputUserUnderlineColor(ArkUINodeHandle node,ArkUI_Uint32 (* values)[4])1623 void GetTextInputUserUnderlineColor(ArkUINodeHandle node, ArkUI_Uint32 (*values)[4])
1624 {
1625 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1626 CHECK_NULL_VOID(frameNode);
1627 UserUnderlineColor userColor = TextFieldModelNG::GetUnderLineColor(frameNode);
1628 (*values)[CALL_ARG_0] = userColor.typing->GetValue();
1629 (*values)[CALL_ARG_1] = userColor.normal->GetValue();
1630 (*values)[CALL_ARG_2] = userColor.error->GetValue();
1631 (*values)[CALL_ARG_3] = userColor.disable->GetValue();
1632 }
1633
ResetTextInputUserUnderlineColor(ArkUINodeHandle node)1634 void ResetTextInputUserUnderlineColor(ArkUINodeHandle node)
1635 {
1636 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1637 CHECK_NULL_VOID(frameNode);
1638 UserUnderlineColor userColor = UserUnderlineColor();
1639 TextFieldModelNG::SetUserUnderlineColor(frameNode, userColor);
1640 if (SystemProperties::ConfigChangePerform()) {
1641 auto pattern = frameNode->GetPattern();
1642 CHECK_NULL_VOID(pattern);
1643 pattern->UnRegisterResource("underlineColorTyping");
1644 pattern->UnRegisterResource("underlineColorNormal");
1645 pattern->UnRegisterResource("underlineColorError");
1646 pattern->UnRegisterResource("underlineColorDisable");
1647 }
1648 }
1649
SetTextInputWordBreak(ArkUINodeHandle node,ArkUI_Uint32 wordBreak)1650 void SetTextInputWordBreak(ArkUINodeHandle node, ArkUI_Uint32 wordBreak)
1651 {
1652 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1653 CHECK_NULL_VOID(frameNode);
1654 if (wordBreak < 0 || wordBreak >= WORD_BREAK_TYPES.size()) {
1655 wordBreak = 2; // 2 is the default value of WordBreak::BREAK_WORD
1656 }
1657 TextFieldModelNG::SetWordBreak(frameNode, WORD_BREAK_TYPES[wordBreak]);
1658 }
1659
GetTextInputWordBreak(ArkUINodeHandle node)1660 ArkUI_Int32 GetTextInputWordBreak(ArkUINodeHandle node)
1661 {
1662 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1663 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1664 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetWordBreak(frameNode));
1665 }
1666
ResetTextInputWordBreak(ArkUINodeHandle node)1667 void ResetTextInputWordBreak(ArkUINodeHandle node)
1668 {
1669 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1670 CHECK_NULL_VOID(frameNode);
1671 TextFieldModelNG::SetWordBreak(frameNode, WORD_BREAK_TYPES[2]); // 2 is the default value of WordBreak::BREAK_WORD
1672 }
1673
SetTextInputPlaceholderFontEnum(ArkUINodeHandle node,const struct ArkUIResourceLength * size,ArkUI_Int32 weight,ArkUI_CharPtr family,ArkUI_Int32 style)1674 void SetTextInputPlaceholderFontEnum(ArkUINodeHandle node, const struct ArkUIResourceLength* size, ArkUI_Int32 weight,
1675 ArkUI_CharPtr family, ArkUI_Int32 style)
1676 {
1677 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1678 CHECK_NULL_VOID(frameNode);
1679 Font font;
1680 auto unitEnum = static_cast<OHOS::Ace::DimensionUnit>(size->unit);
1681 if (size->unit >= 0) {
1682 if (unitEnum == DimensionUnit::CALC) {
1683 font.fontSize = CalcDimension(size->string, DimensionUnit::CALC);
1684 } else {
1685 font.fontSize = CalcDimension(size->value, unitEnum);
1686 }
1687 } else {
1688 auto pipeline = frameNode->GetContext();
1689 CHECK_NULL_VOID(pipeline);
1690 auto theme = pipeline->GetThemeManager()->GetTheme<TextFieldTheme>();
1691 CHECK_NULL_VOID(theme);
1692 font.fontSize = theme->GetFontSize();
1693 }
1694
1695 if (weight > -1) {
1696 font.fontWeight = static_cast<FontWeight>(weight);
1697 } else {
1698 font.fontWeight = DEFAULT_FONT_WEIGHT;
1699 }
1700
1701 if (family != nullptr) {
1702 font.fontFamilies = Framework::ConvertStrToFontFamilies(std::string(family));
1703 } else {
1704 std::vector<std::string> fontFamilies;
1705 fontFamilies.emplace_back(DEFAULT_FONT_FAMILY[0]);
1706 font.fontFamilies = fontFamilies;
1707 }
1708
1709 if (style >= 0) {
1710 font.fontStyle = static_cast<Ace::FontStyle>(style);
1711 } else {
1712 font.fontStyle = DEFAULT_FONT_STYLE;
1713 }
1714 TextFieldModelNG::SetPlaceholderFont(frameNode, font);
1715 }
1716
SetTextInputAdaptMinFontSize(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit,void * resRawPtr)1717 void SetTextInputAdaptMinFontSize(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit, void* resRawPtr)
1718 {
1719 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1720 CHECK_NULL_VOID(frameNode);
1721 TextFieldModelNG::SetAdaptMinFontSize(frameNode, CalcDimension(value, (DimensionUnit)unit));
1722 if (SystemProperties::ConfigChangePerform()) {
1723 auto pattern = frameNode->GetPattern();
1724 CHECK_NULL_VOID(pattern);
1725 if (resRawPtr) {
1726 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1727 pattern->RegisterResource<CalcDimension>("minFontSize", resObj, CalcDimension(value, (DimensionUnit)unit));
1728 } else {
1729 pattern->UnRegisterResource("minFontSize");
1730 }
1731 }
1732 }
1733
ResetTextInputAdaptMinFontSize(ArkUINodeHandle node)1734 void ResetTextInputAdaptMinFontSize(ArkUINodeHandle node)
1735 {
1736 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1737 CHECK_NULL_VOID(frameNode);
1738 auto pipelineContext = frameNode->GetContext();
1739 CHECK_NULL_VOID(pipelineContext);
1740 auto theme = pipelineContext->GetTheme<TextFieldTheme>();
1741 CHECK_NULL_VOID(theme);
1742 CalcDimension minFontSize = theme->GetTextStyle().GetAdaptMinFontSize();
1743 TextFieldModelNG::SetAdaptMinFontSize(frameNode, minFontSize);
1744 if (SystemProperties::ConfigChangePerform()) {
1745 auto pattern = frameNode->GetPattern();
1746 CHECK_NULL_VOID(pattern);
1747 pattern->UnRegisterResource("minFontSize");
1748 }
1749 }
1750
SetTextInputAdaptMaxFontSize(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit,void * resRawPtr)1751 void SetTextInputAdaptMaxFontSize(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit, void* resRawPtr)
1752 {
1753 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1754 CHECK_NULL_VOID(frameNode);
1755 TextFieldModelNG::SetAdaptMaxFontSize(frameNode, CalcDimension(value, (DimensionUnit)unit));
1756 if (SystemProperties::ConfigChangePerform()) {
1757 auto pattern = frameNode->GetPattern();
1758 CHECK_NULL_VOID(pattern);
1759 if (resRawPtr) {
1760 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1761 pattern->RegisterResource<CalcDimension>("maxFontSize", resObj, CalcDimension(value, (DimensionUnit)unit));
1762 } else {
1763 pattern->UnRegisterResource("maxFontSize");
1764 }
1765 }
1766 }
1767
ResetTextInputAdaptMaxFontSize(ArkUINodeHandle node)1768 void ResetTextInputAdaptMaxFontSize(ArkUINodeHandle node)
1769 {
1770 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1771 CHECK_NULL_VOID(frameNode);
1772 auto pipelineContext = frameNode->GetContext();
1773 CHECK_NULL_VOID(pipelineContext);
1774 auto theme = pipelineContext->GetTheme<TextFieldTheme>();
1775 CHECK_NULL_VOID(theme);
1776 CalcDimension maxFontSize = theme->GetTextStyle().GetAdaptMaxFontSize();
1777 TextFieldModelNG::SetAdaptMaxFontSize(frameNode, maxFontSize);
1778 if (SystemProperties::ConfigChangePerform()) {
1779 auto pattern = frameNode->GetPattern();
1780 CHECK_NULL_VOID(pattern);
1781 pattern->UnRegisterResource("maxFontSize");
1782 }
1783 }
1784
SetTextInputHeightAdaptivePolicy(ArkUINodeHandle node,ArkUI_Int32 value)1785 void SetTextInputHeightAdaptivePolicy(ArkUINodeHandle node, ArkUI_Int32 value)
1786 {
1787 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1788 CHECK_NULL_VOID(frameNode);
1789 TextFieldModelNG::SetHeightAdaptivePolicy(frameNode, static_cast<Ace::TextHeightAdaptivePolicy>(value));
1790 }
1791
ResetTextInputHeightAdaptivePolicy(ArkUINodeHandle node)1792 void ResetTextInputHeightAdaptivePolicy(ArkUINodeHandle node)
1793 {
1794 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1795 CHECK_NULL_VOID(frameNode);
1796 TextFieldModelNG::SetHeightAdaptivePolicy(frameNode, TextHeightAdaptivePolicy::MAX_LINES_FIRST);
1797 }
1798
GetTextInputSelectionMenuHidden(ArkUINodeHandle node)1799 ArkUI_Bool GetTextInputSelectionMenuHidden(ArkUINodeHandle node)
1800 {
1801 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1802 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
1803 return TextFieldModelNG::GetSelectionMenuHidden(frameNode);
1804 }
1805
SetTextInputTextOverflow(ArkUINodeHandle node,ArkUI_Int32 value)1806 void SetTextInputTextOverflow(ArkUINodeHandle node, ArkUI_Int32 value)
1807 {
1808 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1809 CHECK_NULL_VOID(frameNode);
1810 TextOverflow valueTextOverflow = static_cast<TextOverflow>(value);
1811 TextFieldModelNG::SetTextOverflow(frameNode, valueTextOverflow);
1812 }
1813
ResetTextInputTextOverflow(ArkUINodeHandle node)1814 void ResetTextInputTextOverflow(ArkUINodeHandle node)
1815 {
1816 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1817 CHECK_NULL_VOID(frameNode);
1818 TextFieldModelNG::SetTextOverflow(frameNode, TextOverflow::DEFAULT);
1819 }
1820
SetTextInputTextIndent(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit,void * resRawPtr)1821 void SetTextInputTextIndent(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit, void* resRawPtr)
1822 {
1823 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1824 CHECK_NULL_VOID(frameNode);
1825 TextFieldModelNG::SetTextIndent(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
1826 if (SystemProperties::ConfigChangePerform()) {
1827 auto pattern = frameNode->GetPattern();
1828 CHECK_NULL_VOID(pattern);
1829 if (resRawPtr) {
1830 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
1831 pattern->RegisterResource<CalcDimension>("textIndent", resObj,
1832 Dimension(number, static_cast<DimensionUnit>(unit)));
1833 } else {
1834 pattern->UnRegisterResource("textIndent");
1835 }
1836 }
1837 }
1838
ResetTextInputTextIndent(ArkUINodeHandle node)1839 void ResetTextInputTextIndent(ArkUINodeHandle node)
1840 {
1841 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1842 CHECK_NULL_VOID(frameNode);
1843 TextFieldModelNG::SetTextIndent(frameNode, CalcDimension(0, DimensionUnit::VP));
1844 if (SystemProperties::ConfigChangePerform()) {
1845 auto pattern = frameNode->GetPattern();
1846 CHECK_NULL_VOID(pattern);
1847 pattern->UnRegisterResource("textIndent");
1848 }
1849 }
1850
GetTextInputFontFeature(ArkUINodeHandle node)1851 ArkUI_CharPtr GetTextInputFontFeature(ArkUINodeHandle node)
1852 {
1853 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1854 CHECK_NULL_RETURN(frameNode, nullptr);
1855 g_strValue = UnParseFontFeatureSetting(TextFieldModelNG::GetFontFeature(frameNode));
1856 return g_strValue.c_str();
1857 }
1858
GetTextInputController(ArkUINodeHandle node)1859 ArkUINodeHandle GetTextInputController(ArkUINodeHandle node)
1860 {
1861 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1862 CHECK_NULL_RETURN(frameNode, nullptr);
1863 auto controller = TextFieldModelNG::GetOrCreateController(frameNode);
1864 CHECK_NULL_RETURN(controller, nullptr);
1865 auto nodecontroller = reinterpret_cast<ArkUINodeHandle>(OHOS::Ace::AceType::RawPtr(controller));
1866 return nodecontroller;
1867 }
1868
GetTextInputAdaptMinFontSize(ArkUINodeHandle node)1869 ArkUI_Float32 GetTextInputAdaptMinFontSize(ArkUINodeHandle node)
1870 {
1871 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1872 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
1873 return TextFieldModelNG::GetAdaptMinFontSize(frameNode).Value();
1874 }
1875
GetTextInputAdaptMaxFontSize(ArkUINodeHandle node)1876 ArkUI_Float32 GetTextInputAdaptMaxFontSize(ArkUINodeHandle node)
1877 {
1878 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1879 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
1880 return TextFieldModelNG::GetAdaptMaxFontSize(frameNode).Value();
1881 }
1882
GetTextInputLineHeight(ArkUINodeHandle node)1883 ArkUI_Float32 GetTextInputLineHeight(ArkUINodeHandle node)
1884 {
1885 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1886 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
1887 return TextFieldModelNG::GetLineHeight(frameNode).Value();
1888 }
1889
GetTextInputHalfLeading(ArkUINodeHandle node)1890 ArkUI_Bool GetTextInputHalfLeading(ArkUINodeHandle node)
1891 {
1892 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1893 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
1894 return static_cast<ArkUI_Bool>(TextFieldModelNG::GetHalfLeading(frameNode));
1895 }
1896
GetTextInputMaxLines(ArkUINodeHandle node)1897 ArkUI_Int32 GetTextInputMaxLines(ArkUINodeHandle node)
1898 {
1899 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1900 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
1901 return TextFieldModelNG::GetMaxLines(frameNode);
1902 }
1903
SetTextInputSelectAll(ArkUINodeHandle node,ArkUI_Uint32 enableSelectAll)1904 void SetTextInputSelectAll(ArkUINodeHandle node, ArkUI_Uint32 enableSelectAll)
1905 {
1906 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1907 CHECK_NULL_VOID(frameNode);
1908 TextFieldModelNG::SetSelectAllValue(frameNode, static_cast<bool>(enableSelectAll));
1909 }
1910
ResetTextInputSelectAll(ArkUINodeHandle node)1911 void ResetTextInputSelectAll(ArkUINodeHandle node)
1912 {
1913 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1914 CHECK_NULL_VOID(frameNode);
1915 TextFieldModelNG::SetSelectAllValue(frameNode, DEFAULT_SELECT_ALL);
1916 }
1917
SetTextInputShowCounter(ArkUINodeHandle node,ArkUI_Uint32 open,ArkUI_Int32 thresholdPercentage,ArkUI_Uint32 highlightBorder)1918 void SetTextInputShowCounter(
1919 ArkUINodeHandle node, ArkUI_Uint32 open, ArkUI_Int32 thresholdPercentage, ArkUI_Uint32 highlightBorder)
1920 {
1921 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1922 CHECK_NULL_VOID(frameNode);
1923 TextFieldModelNG::SetShowCounter(frameNode, static_cast<bool>(open));
1924 TextFieldModelNG::SetCounterType(frameNode, thresholdPercentage);
1925 TextFieldModelNG::SetShowCounterBorder(frameNode, static_cast<bool>(highlightBorder));
1926 }
1927
ResetTextInputShowCounter(ArkUINodeHandle node)1928 void ResetTextInputShowCounter(ArkUINodeHandle node)
1929 {
1930 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1931 CHECK_NULL_VOID(frameNode);
1932 TextFieldModelNG::SetShowCounter(frameNode, false);
1933 TextFieldModelNG::SetCounterType(frameNode, -1);
1934 TextFieldModelNG::SetShowCounterBorder(frameNode, true);
1935 }
1936
SetTextInputOnEditChange(ArkUINodeHandle node,void * callback)1937 void SetTextInputOnEditChange(ArkUINodeHandle node, void* callback)
1938 {
1939 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1940 CHECK_NULL_VOID(frameNode);
1941 if (callback) {
1942 auto onEditChange = reinterpret_cast<std::function<void(bool)>*>(callback);
1943 TextFieldModelNG::SetOnEditChange(frameNode, std::move(*onEditChange));
1944 } else {
1945 TextFieldModelNG::SetOnEditChange(frameNode, nullptr);
1946 }
1947 }
1948
ResetTextInputOnEditChange(ArkUINodeHandle node)1949 void ResetTextInputOnEditChange(ArkUINodeHandle node)
1950 {
1951 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1952 CHECK_NULL_VOID(frameNode);
1953 TextFieldModelNG::SetOnEditChange(frameNode, nullptr);
1954 }
1955
SetTextInputFilter(ArkUINodeHandle node,ArkUI_CharPtr value,void * callback)1956 void SetTextInputFilter(ArkUINodeHandle node, ArkUI_CharPtr value, void* callback)
1957 {
1958 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1959 CHECK_NULL_VOID(frameNode);
1960 std::string inputFilter(value);
1961 if (callback) {
1962 auto onError = reinterpret_cast<std::function<void(const std::u16string&)>*>(callback);
1963 TextFieldModelNG::SetInputFilter(frameNode, inputFilter, *onError);
1964 } else {
1965 TextFieldModelNG::SetInputFilter(frameNode, inputFilter, nullptr);
1966 }
1967 }
1968
ResetTextInputFilter(ArkUINodeHandle node)1969 void ResetTextInputFilter(ArkUINodeHandle node)
1970 {
1971 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1972 CHECK_NULL_VOID(frameNode);
1973 TextFieldModelNG::SetInputFilter(frameNode, "", nullptr);
1974 }
1975
SetTextInputOnSubmitWithEvent(ArkUINodeHandle node,void * callback)1976 void SetTextInputOnSubmitWithEvent(ArkUINodeHandle node, void* callback)
1977 {
1978 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1979 CHECK_NULL_VOID(frameNode);
1980 if (callback) {
1981 auto onSubmit = reinterpret_cast<std::function<void(int32_t, NG::TextFieldCommonEvent&)>*>(callback);
1982 TextFieldModelNG::SetOnSubmit(frameNode, std::move(*onSubmit));
1983 } else {
1984 TextFieldModelNG::SetOnSubmit(frameNode, nullptr);
1985 }
1986 }
1987
ResetTextInputOnSubmitWithEvent(ArkUINodeHandle node)1988 void ResetTextInputOnSubmitWithEvent(ArkUINodeHandle node)
1989 {
1990 auto *frameNode = reinterpret_cast<FrameNode *>(node);
1991 CHECK_NULL_VOID(frameNode);
1992 TextFieldModelNG::SetOnSubmit(frameNode, nullptr);
1993 }
1994
SetTextInputOnChange(ArkUINodeHandle node,void * callback)1995 void SetTextInputOnChange(ArkUINodeHandle node, void* callback)
1996 {
1997 auto* frameNode = reinterpret_cast<FrameNode*>(node);
1998 CHECK_NULL_VOID(frameNode);
1999 if (callback) {
2000 auto onChange = reinterpret_cast<std::function<void(const ChangeValueInfo&)>*>(callback);
2001 TextFieldModelNG::SetOnChange(frameNode, std::move(*onChange));
2002 } else {
2003 TextFieldModelNG::SetOnChange(frameNode, nullptr);
2004 }
2005 }
2006
ResetTextInputOnChange(ArkUINodeHandle node)2007 void ResetTextInputOnChange(ArkUINodeHandle node)
2008 {
2009 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2010 CHECK_NULL_VOID(frameNode);
2011 TextFieldModelNG::SetOnChange(frameNode, nullptr);
2012 }
2013
SetTextInputOnTextSelectionChange(ArkUINodeHandle node,void * callback)2014 void SetTextInputOnTextSelectionChange(ArkUINodeHandle node, void* callback)
2015 {
2016 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2017 CHECK_NULL_VOID(frameNode);
2018 if (callback) {
2019 auto onChange = reinterpret_cast<std::function<void(int32_t, int32_t)>*>(callback);
2020 TextFieldModelNG::SetOnTextSelectionChange(frameNode, std::move(*onChange));
2021 } else {
2022 TextFieldModelNG::SetOnTextSelectionChange(frameNode, nullptr);
2023 }
2024 }
2025
ResetTextInputOnTextSelectionChange(ArkUINodeHandle node)2026 void ResetTextInputOnTextSelectionChange(ArkUINodeHandle node)
2027 {
2028 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2029 CHECK_NULL_VOID(frameNode);
2030 TextFieldModelNG::SetOnTextSelectionChange(frameNode, nullptr);
2031 }
2032
SetTextInputOnContentScroll(ArkUINodeHandle node,void * callback)2033 void SetTextInputOnContentScroll(ArkUINodeHandle node, void* callback)
2034 {
2035 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2036 CHECK_NULL_VOID(frameNode);
2037 if (callback) {
2038 auto onScroll = reinterpret_cast<std::function<void(float, float)>*>(callback);
2039 TextFieldModelNG::SetOnContentScroll(frameNode, std::move(*onScroll));
2040 } else {
2041 TextFieldModelNG::SetOnContentScroll(frameNode, nullptr);
2042 }
2043 }
2044
ResetTextInputOnContentScroll(ArkUINodeHandle node)2045 void ResetTextInputOnContentScroll(ArkUINodeHandle node)
2046 {
2047 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2048 CHECK_NULL_VOID(frameNode);
2049 TextFieldModelNG::SetOnContentScroll(frameNode, nullptr);
2050 }
2051
SetTextInputOnCopy(ArkUINodeHandle node,void * callback)2052 void SetTextInputOnCopy(ArkUINodeHandle node, void* callback)
2053 {
2054 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2055 CHECK_NULL_VOID(frameNode);
2056 if (callback) {
2057 auto onCopy = reinterpret_cast<std::function<void(const std::u16string&)>*>(callback);
2058 TextFieldModelNG::SetOnCopy(frameNode, std::move(*onCopy));
2059 } else {
2060 TextFieldModelNG::SetOnCopy(frameNode, nullptr);
2061 }
2062 }
2063
ResetTextInputOnCopy(ArkUINodeHandle node)2064 void ResetTextInputOnCopy(ArkUINodeHandle node)
2065 {
2066 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2067 CHECK_NULL_VOID(frameNode);
2068 TextFieldModelNG::SetOnCopy(frameNode, nullptr);
2069 }
2070
SetTextInputOnCut(ArkUINodeHandle node,void * callback)2071 void SetTextInputOnCut(ArkUINodeHandle node, void* callback)
2072 {
2073 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2074 CHECK_NULL_VOID(frameNode);
2075 if (callback) {
2076 auto onCut = reinterpret_cast<std::function<void(const std::u16string&)>*>(callback);
2077 TextFieldModelNG::SetOnCut(frameNode, std::move(*onCut));
2078 } else {
2079 TextFieldModelNG::SetOnCut(frameNode, nullptr);
2080 }
2081 }
2082
ResetTextInputOnCut(ArkUINodeHandle node)2083 void ResetTextInputOnCut(ArkUINodeHandle node)
2084 {
2085 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2086 CHECK_NULL_VOID(frameNode);
2087 TextFieldModelNG::SetOnCut(frameNode, nullptr);
2088 }
2089
SetTextInputOnPaste(ArkUINodeHandle node,void * callback)2090 void SetTextInputOnPaste(ArkUINodeHandle node, void* callback)
2091 {
2092 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2093 CHECK_NULL_VOID(frameNode);
2094 if (callback) {
2095 auto onPasteWithEvent = reinterpret_cast<std::function<void(
2096 const std::u16string&, NG::TextCommonEvent&)>*>(callback);
2097 TextFieldModelNG::SetOnPasteWithEvent(frameNode, std::move(*onPasteWithEvent));
2098 } else {
2099 TextFieldModelNG::SetOnPasteWithEvent(frameNode, nullptr);
2100 }
2101 }
2102
ResetTextInputOnPaste(ArkUINodeHandle node)2103 void ResetTextInputOnPaste(ArkUINodeHandle node)
2104 {
2105 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2106 CHECK_NULL_VOID(frameNode);
2107 TextFieldModelNG::SetOnPasteWithEvent(frameNode, nullptr);
2108 }
2109
SetBlurOnSubmit(ArkUINodeHandle node,ArkUI_Bool blurOnSubmit)2110 void SetBlurOnSubmit(ArkUINodeHandle node, ArkUI_Bool blurOnSubmit)
2111 {
2112 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2113 CHECK_NULL_VOID(frameNode);
2114 TextFieldModelNG::SetBlurOnSubmit(frameNode, blurOnSubmit);
2115 }
2116
GetBlurOnSubmit(ArkUINodeHandle node)2117 ArkUI_Bool GetBlurOnSubmit(ArkUINodeHandle node)
2118 {
2119 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2120 CHECK_NULL_RETURN(frameNode, true);
2121 return TextFieldModelNG::GetBlurOnSubmit(frameNode);
2122 }
SetTextInputCustomKeyboard(ArkUINodeHandle node,ArkUINodeHandle customKeyboard,bool supportAvoidance)2123 void SetTextInputCustomKeyboard(ArkUINodeHandle node, ArkUINodeHandle customKeyboard, bool supportAvoidance)
2124 {
2125 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2126 CHECK_NULL_VOID(frameNode);
2127 auto *customKeyboardNode = reinterpret_cast<FrameNode*>(customKeyboard);
2128 CHECK_NULL_VOID(customKeyboardNode);
2129 TextFieldModelNG::SetCustomKeyboard(frameNode, customKeyboardNode, supportAvoidance);
2130 }
2131
GetTextInputCustomKeyboard(ArkUINodeHandle node)2132 ArkUINodeHandle GetTextInputCustomKeyboard(ArkUINodeHandle node)
2133 {
2134 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2135 CHECK_NULL_RETURN(frameNode, nullptr);
2136 auto customKeyboard = TextFieldModelNG::GetCustomKeyboard(frameNode);
2137 CHECK_NULL_RETURN(customKeyboard, nullptr);
2138 return reinterpret_cast<ArkUINodeHandle>(OHOS::Ace::AceType::RawPtr(customKeyboard));
2139 }
2140
GetTextInputCustomKeyboardOption(ArkUINodeHandle node)2141 ArkUI_Int32 GetTextInputCustomKeyboardOption(ArkUINodeHandle node)
2142 {
2143 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2144 CHECK_NULL_RETURN(frameNode, 0);
2145 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetCustomKeyboardOption(frameNode));
2146 }
2147
ResetTextInputCustomKeyboard(ArkUINodeHandle node)2148 void ResetTextInputCustomKeyboard(ArkUINodeHandle node)
2149 {
2150 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2151 CHECK_NULL_VOID(frameNode);
2152 TextFieldModelNG::SetCustomKeyboard(frameNode, nullptr, false);
2153 }
2154
SetTextInputShowKeyBoardOnFocus(ArkUINodeHandle node,ArkUI_Bool value)2155 void SetTextInputShowKeyBoardOnFocus(ArkUINodeHandle node, ArkUI_Bool value)
2156 {
2157 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2158 CHECK_NULL_VOID(frameNode);
2159 TextFieldModelNG::SetShowKeyBoardOnFocus(frameNode, value);
2160 }
2161
GetTextInputShowKeyBoardOnFocus(ArkUINodeHandle node)2162 ArkUI_Bool GetTextInputShowKeyBoardOnFocus(ArkUINodeHandle node)
2163 {
2164 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2165 CHECK_NULL_RETURN(frameNode, true);
2166 return static_cast<ArkUI_Bool>(TextFieldModelNG::GetShowKeyBoardOnFocus(frameNode));
2167 }
2168
ResetTextInputShowKeyBoardOnFocus(ArkUINodeHandle node)2169 void ResetTextInputShowKeyBoardOnFocus(ArkUINodeHandle node)
2170 {
2171 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2172 CHECK_NULL_VOID(frameNode);
2173 TextFieldModelNG::SetShowKeyBoardOnFocus(frameNode, true);
2174 }
2175
SetTextInputNumberOfLines(ArkUINodeHandle node,ArkUI_Int32 value)2176 void SetTextInputNumberOfLines(ArkUINodeHandle node, ArkUI_Int32 value)
2177 {
2178 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2179 CHECK_NULL_VOID(frameNode);
2180 TextFieldModelNG::SetNumberOfLines(frameNode, value);
2181 }
2182
GetTextInputNumberOfLines(ArkUINodeHandle node)2183 ArkUI_Int32 GetTextInputNumberOfLines(ArkUINodeHandle node)
2184 {
2185 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2186 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
2187 return static_cast<ArkUI_Int32>(TextFieldModelNG::GetNumberOfLines(frameNode));
2188 }
2189
ResetTextInputNumberOfLines(ArkUINodeHandle node)2190 void ResetTextInputNumberOfLines(ArkUINodeHandle node)
2191 {
2192 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2193 CHECK_NULL_VOID(frameNode);
2194 TextFieldModelNG::ResetNumberOfLines(frameNode);
2195 }
2196
SetTextInputShowPassword(ArkUINodeHandle node,ArkUI_Uint32 value)2197 void SetTextInputShowPassword(ArkUINodeHandle node, ArkUI_Uint32 value)
2198 {
2199 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2200 CHECK_NULL_VOID(frameNode);
2201 TextFieldModelNG::SetShowPassword(frameNode, static_cast<bool>(value));
2202 }
2203
ResetTextInputShowPassword(ArkUINodeHandle node)2204 void ResetTextInputShowPassword(ArkUINodeHandle node)
2205 {
2206 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2207 CHECK_NULL_VOID(frameNode);
2208 TextFieldModelNG::SetShowPassword(frameNode, false);
2209 }
2210
GetTextInputShowPassword(ArkUINodeHandle node)2211 ArkUI_Bool GetTextInputShowPassword(ArkUINodeHandle node)
2212 {
2213 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2214 CHECK_NULL_RETURN(frameNode, ERROR_INT_CODE);
2215 return TextFieldModelNG::GetShowPassword(frameNode);
2216 }
2217
SetTextInputLineBreakStrategy(ArkUINodeHandle node,ArkUI_Uint32 lineBreakStrategy)2218 void SetTextInputLineBreakStrategy(ArkUINodeHandle node, ArkUI_Uint32 lineBreakStrategy)
2219 {
2220 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2221 CHECK_NULL_VOID(frameNode);
2222 if (lineBreakStrategy < 0 || lineBreakStrategy >= LINE_BREAK_STRATEGY_TYPES.size()) {
2223 lineBreakStrategy = 0; // 0 is the default value of lineBreakStrategy::GREEDY
2224 }
2225 TextFieldModelNG::SetLineBreakStrategy(frameNode, LINE_BREAK_STRATEGY_TYPES[lineBreakStrategy]);
2226 }
2227
ResetTextInputLineBreakStrategy(ArkUINodeHandle node)2228 void ResetTextInputLineBreakStrategy(ArkUINodeHandle node)
2229 {
2230 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2231 CHECK_NULL_VOID(frameNode);
2232 // 0 is the default value of lineBreakStrategy::GREEDY
2233 TextFieldModelNG::SetLineBreakStrategy(frameNode, LINE_BREAK_STRATEGY_TYPES[0]);
2234 }
2235
RegisterMarginResource(FrameNode * frameNode,const struct ArkUISizeType * top,const struct ArkUISizeType * right,const struct ArkUISizeType * bottom,const struct ArkUISizeType * left,ArkUIPaddingRes * marginRes)2236 void RegisterMarginResource(FrameNode* frameNode, const struct ArkUISizeType* top, const struct ArkUISizeType* right,
2237 const struct ArkUISizeType* bottom, const struct ArkUISizeType* left, ArkUIPaddingRes* marginRes)
2238 {
2239 CHECK_NULL_VOID(SystemProperties::ConfigChangePerform());
2240 auto pattern = frameNode->GetPattern();
2241 CHECK_NULL_VOID(pattern);
2242 if (marginRes && marginRes->topObj) {
2243 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(marginRes->topObj));
2244 pattern->RegisterResource<CalcDimension>("marginTop", resObj,
2245 CalcDimension(top->value, static_cast<DimensionUnit>(top->unit)));
2246 } else {
2247 pattern->UnRegisterResource("marginTop");
2248 }
2249 if (marginRes && marginRes->bottomObj) {
2250 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(marginRes->bottomObj));
2251 pattern->RegisterResource<CalcDimension>("marginBottom", resObj,
2252 CalcDimension(bottom->value, static_cast<DimensionUnit>(bottom->unit)));
2253 } else {
2254 pattern->UnRegisterResource("marginBottom");
2255 }
2256 if (marginRes && marginRes->leftObj) {
2257 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(marginRes->leftObj));
2258 pattern->RegisterResource<CalcDimension>("marginLeft", resObj,
2259 CalcDimension(left->value, static_cast<DimensionUnit>(left->unit)));
2260 } else {
2261 pattern->UnRegisterResource("marginLeft");
2262 }
2263 if (marginRes && marginRes->rightObj) {
2264 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(marginRes->rightObj));
2265 pattern->RegisterResource<CalcDimension>("marginRight", resObj,
2266 CalcDimension(right->value, static_cast<DimensionUnit>(right->unit)));
2267 } else {
2268 pattern->UnRegisterResource("marginRight");
2269 }
2270 }
2271
SetTextInputMargin(ArkUINodeHandle node,const struct ArkUISizeType * top,const struct ArkUISizeType * right,const struct ArkUISizeType * bottom,const struct ArkUISizeType * left,ArkUIPaddingRes * marginRes)2272 void SetTextInputMargin(ArkUINodeHandle node, const struct ArkUISizeType* top, const struct ArkUISizeType* right,
2273 const struct ArkUISizeType* bottom, const struct ArkUISizeType* left, ArkUIPaddingRes* marginRes)
2274 {
2275 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2276 CHECK_NULL_VOID(frameNode);
2277 CalcLength topDimen;
2278 CalcLength rightDimen;
2279 CalcLength bottomDimen;
2280 CalcLength leftDimen;
2281 if (top->string != nullptr) {
2282 topDimen = CalcLength(top->string);
2283 } else {
2284 topDimen = CalcLength(top->value, static_cast<DimensionUnit>(top->unit));
2285 }
2286 if (right->string != nullptr) {
2287 rightDimen = CalcLength(right->string);
2288 } else {
2289 rightDimen = CalcLength(right->value, static_cast<DimensionUnit>(right->unit));
2290 }
2291 if (bottom->string != nullptr) {
2292 bottomDimen = CalcLength(bottom->string);
2293 } else {
2294 bottomDimen = CalcLength(bottom->value, static_cast<DimensionUnit>(bottom->unit));
2295 }
2296 if (left->string != nullptr) {
2297 leftDimen = CalcLength(left->string);
2298 } else {
2299 leftDimen = CalcLength(left->value, static_cast<DimensionUnit>(left->unit));
2300 }
2301 NG::PaddingProperty paddings;
2302 paddings.top = std::optional<CalcLength>(topDimen);
2303 paddings.bottom = std::optional<CalcLength>(bottomDimen);
2304 paddings.left = std::optional<CalcLength>(leftDimen);
2305 paddings.right = std::optional<CalcLength>(rightDimen);
2306 TextFieldModelNG::SetMargin(frameNode, paddings);
2307 RegisterMarginResource(frameNode, top, right, bottom, left, marginRes);
2308 }
2309
ResetTextInputMargin(ArkUINodeHandle node)2310 void ResetTextInputMargin(ArkUINodeHandle node)
2311 {
2312 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2313 CHECK_NULL_VOID(frameNode);
2314 NG::PaddingProperty paddings;
2315 paddings.top = NG::CalcLength(0.0);
2316 paddings.bottom = NG::CalcLength(0.0);
2317 paddings.left = NG::CalcLength(0.0);
2318 paddings.right = NG::CalcLength(0.0);
2319 TextFieldModelNG::SetMargin(frameNode, paddings);
2320 if (SystemProperties::ConfigChangePerform()) {
2321 auto pattern = frameNode->GetPattern();
2322 CHECK_NULL_VOID(pattern);
2323 pattern->UnRegisterResource("marginTop");
2324 pattern->UnRegisterResource("marginBottom");
2325 pattern->UnRegisterResource("marginLeft");
2326 pattern->UnRegisterResource("marginRight");
2327 }
2328 }
2329
GetTextInputMargin(ArkUINodeHandle node,ArkUI_Float32 (* values)[4],ArkUI_Int32 length,ArkUI_Int32 unit)2330 void GetTextInputMargin(ArkUINodeHandle node, ArkUI_Float32 (*values)[4], ArkUI_Int32 length, ArkUI_Int32 unit)
2331 {
2332 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2333 CHECK_NULL_VOID(frameNode);
2334 auto margin = TextFieldModelNG::GetMargin(frameNode);
2335 (*values)[CALL_ARG_0] = margin.top->GetDimension().GetNativeValue(static_cast<DimensionUnit>(unit));
2336 (*values)[CALL_ARG_1] = margin.right->GetDimension().GetNativeValue(static_cast<DimensionUnit>(unit));
2337 (*values)[CALL_ARG_2] = margin.bottom->GetDimension().GetNativeValue(static_cast<DimensionUnit>(unit));
2338 (*values)[CALL_ARG_3] = margin.left->GetDimension().GetNativeValue(static_cast<DimensionUnit>(unit));
2339 }
2340
SetTextInputCaret(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit,void * resRawPtr)2341 void SetTextInputCaret(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit, void* resRawPtr)
2342 {
2343 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2344 CHECK_NULL_VOID(frameNode);
2345 CaretStyle caretStyle;
2346 caretStyle.caretWidth = CalcDimension(value, (DimensionUnit)unit);
2347 TextFieldModelNG::SetCaretStyle(frameNode, caretStyle);
2348 if (SystemProperties::ConfigChangePerform()) {
2349 auto pattern = frameNode->GetPattern();
2350 CHECK_NULL_VOID(pattern);
2351 if (resRawPtr) {
2352 auto resObj = AceType::Claim(reinterpret_cast<ResourceObject*>(resRawPtr));
2353 pattern->RegisterResource<CalcDimension>("caretWidth", resObj, CalcDimension(value, (DimensionUnit)unit));
2354 } else {
2355 pattern->UnRegisterResource("caretWidth");
2356 }
2357 }
2358 }
2359
SetTextInputEnablePreviewText(ArkUINodeHandle node,ArkUI_Uint32 value)2360 void SetTextInputEnablePreviewText(ArkUINodeHandle node, ArkUI_Uint32 value)
2361 {
2362 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2363 CHECK_NULL_VOID(frameNode);
2364 TextFieldModelNG::SetEnablePreviewText(frameNode, static_cast<bool>(value));
2365 }
2366
ResetTextInputEnablePreviewText(ArkUINodeHandle node)2367 void ResetTextInputEnablePreviewText(ArkUINodeHandle node)
2368 {
2369 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2370 CHECK_NULL_VOID(frameNode);
2371 TextFieldModelNG::SetEnablePreviewText(frameNode, DEFAULT_ENABLE_PREVIEW_TEXT_VALUE);
2372 }
2373
GetTextInputEnablePreviewText(ArkUINodeHandle node)2374 ArkUI_Bool GetTextInputEnablePreviewText(ArkUINodeHandle node)
2375 {
2376 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2377 CHECK_NULL_RETURN(frameNode, false);
2378 return static_cast<int>(TextFieldModelNG::GetEnablePreviewText(frameNode));
2379 }
2380
SetTextInputSelectionMenuOptions(ArkUINodeHandle node,void * onCreateMenuCallback,void * onMenuItemClickCallback,void * onPrepareMenuCallback)2381 void SetTextInputSelectionMenuOptions(
2382 ArkUINodeHandle node, void* onCreateMenuCallback, void* onMenuItemClickCallback, void* onPrepareMenuCallback)
2383 {
2384 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2385 CHECK_NULL_VOID(frameNode);
2386 if (onCreateMenuCallback) {
2387 NG::OnCreateMenuCallback onCreateMenu = *(reinterpret_cast<NG::OnCreateMenuCallback*>(onCreateMenuCallback));
2388 TextFieldModelNG::OnCreateMenuCallbackUpdate(frameNode, std::move(onCreateMenu));
2389 } else {
2390 TextFieldModelNG::OnCreateMenuCallbackUpdate(frameNode, nullptr);
2391 }
2392 if (onMenuItemClickCallback) {
2393 NG::OnMenuItemClickCallback onMenuItemClick =
2394 *(reinterpret_cast<NG::OnMenuItemClickCallback*>(onMenuItemClickCallback));
2395 TextFieldModelNG::OnMenuItemClickCallbackUpdate(frameNode, std::move(onMenuItemClick));
2396 } else {
2397 TextFieldModelNG::OnMenuItemClickCallbackUpdate(frameNode, nullptr);
2398 }
2399 if (onPrepareMenuCallback) {
2400 NG::OnPrepareMenuCallback onPrepareMenu =
2401 *(reinterpret_cast<NG::OnPrepareMenuCallback*>(onPrepareMenuCallback));
2402 TextFieldModelNG::OnPrepareMenuCallbackUpdate(frameNode, std::move(onPrepareMenu));
2403 } else {
2404 TextFieldModelNG::OnPrepareMenuCallbackUpdate(frameNode, nullptr);
2405 }
2406 }
2407
ResetTextInputSelectionMenuOptions(ArkUINodeHandle node)2408 void ResetTextInputSelectionMenuOptions(ArkUINodeHandle node)
2409 {
2410 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2411 CHECK_NULL_VOID(frameNode);
2412 NG::OnCreateMenuCallback onCreateMenuCallback;
2413 NG::OnMenuItemClickCallback onMenuItemClick;
2414 NG::OnPrepareMenuCallback onPrepareMenuCallback;
2415 TextFieldModelNG::OnCreateMenuCallbackUpdate(frameNode, std::move(onCreateMenuCallback));
2416 TextFieldModelNG::OnMenuItemClickCallbackUpdate(frameNode, std::move(onMenuItemClick));
2417 TextFieldModelNG::OnPrepareMenuCallbackUpdate(frameNode, std::move(onPrepareMenuCallback));
2418 }
2419
SetTextInputWidth(ArkUINodeHandle node,ArkUI_CharPtr value)2420 void SetTextInputWidth(ArkUINodeHandle node, ArkUI_CharPtr value)
2421 {
2422 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2423 CHECK_NULL_VOID(frameNode);
2424 auto widthValue = std::string(value);
2425 TextFieldModelNG::SetWidth(frameNode, widthValue);
2426 }
2427
ResetTextInputWidth(ArkUINodeHandle node)2428 void ResetTextInputWidth(ArkUINodeHandle node)
2429 {
2430 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2431 CHECK_NULL_VOID(frameNode);
2432 TextFieldModelNG::ClearWidth(frameNode);
2433 }
2434
SetTextInputEnableHapticFeedback(ArkUINodeHandle node,ArkUI_Uint32 value)2435 void SetTextInputEnableHapticFeedback(ArkUINodeHandle node, ArkUI_Uint32 value)
2436 {
2437 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2438 CHECK_NULL_VOID(frameNode);
2439 TextFieldModelNG::SetEnableHapticFeedback(frameNode, static_cast<bool>(value));
2440 }
2441
ResetTextInputEnableHapticFeedback(ArkUINodeHandle node)2442 void ResetTextInputEnableHapticFeedback(ArkUINodeHandle node)
2443 {
2444 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2445 CHECK_NULL_VOID(frameNode);
2446 TextFieldModelNG::SetEnableHapticFeedback(frameNode, DEFAULT_ENABLE_HAPTIC_FEEDBACK_VALUE);
2447 }
2448
SetEllipsisMode(ArkUINodeHandle node,ArkUI_Uint32 ellipsisMode)2449 void SetEllipsisMode(ArkUINodeHandle node, ArkUI_Uint32 ellipsisMode)
2450 {
2451 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2452 CHECK_NULL_VOID(frameNode);
2453 if (ellipsisMode < 0 || ellipsisMode >= ELLIPSIS_MODALS.size()) {
2454 ellipsisMode = ELLIPSIS_MODE_TAIL;
2455 }
2456 TextFieldModelNG::SetEllipsisMode(frameNode, ELLIPSIS_MODALS[ellipsisMode]);
2457 }
2458
ResetEllipsisMode(ArkUINodeHandle node)2459 void ResetEllipsisMode(ArkUINodeHandle node)
2460 {
2461 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2462 CHECK_NULL_VOID(frameNode);
2463 TextFieldModelNG::SetEllipsisMode(frameNode, ELLIPSIS_MODALS[ELLIPSIS_MODE_TAIL]);
2464 }
2465
SetStopBackPress(ArkUINodeHandle node,ArkUI_Uint32 value)2466 void SetStopBackPress(ArkUINodeHandle node, ArkUI_Uint32 value)
2467 {
2468 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2469 CHECK_NULL_VOID(frameNode);
2470 TextFieldModelNG::SetStopBackPress(frameNode, static_cast<bool>(value));
2471 }
2472
ResetStopBackPress(ArkUINodeHandle node)2473 void ResetStopBackPress(ArkUINodeHandle node)
2474 {
2475 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2476 CHECK_NULL_VOID(frameNode);
2477 TextFieldModelNG::SetStopBackPress(frameNode, true);
2478 }
2479
SetTextInputOnWillChange(ArkUINodeHandle node,ArkUI_Int64 callback)2480 void SetTextInputOnWillChange(ArkUINodeHandle node, ArkUI_Int64 callback)
2481 {
2482 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2483 CHECK_NULL_VOID(frameNode);
2484 if (callback) {
2485 auto onWillChange = reinterpret_cast<std::function<bool(const ChangeValueInfo&)>*>(callback);
2486 TextFieldModelNG::SetOnWillChangeEvent(frameNode, std::move(*onWillChange));
2487 } else {
2488 TextFieldModelNG::SetOnWillChangeEvent(frameNode, nullptr);
2489 }
2490 }
2491
ResetTextInputOnWillChange(ArkUINodeHandle node)2492 void ResetTextInputOnWillChange(ArkUINodeHandle node)
2493 {
2494 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2495 CHECK_NULL_VOID(frameNode);
2496 TextFieldModelNG::SetOnWillChangeEvent(frameNode, nullptr);
2497 }
2498
ResetTextInputOnSecurityStateChange(ArkUINodeHandle node)2499 void ResetTextInputOnSecurityStateChange(ArkUINodeHandle node)
2500 {
2501 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2502 CHECK_NULL_VOID(frameNode);
2503 TextFieldModelNG::SetOnSecurityStateChange(frameNode, nullptr);
2504 }
2505
SetTextInputStrokeWidth(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit)2506 void SetTextInputStrokeWidth(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit)
2507 {
2508 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2509 CHECK_NULL_VOID(frameNode);
2510 TextFieldModelNG::SetStrokeWidth(frameNode, CalcDimension(value, (DimensionUnit)unit));
2511 }
2512
ResetTextInputStrokeWidth(ArkUINodeHandle node)2513 void ResetTextInputStrokeWidth(ArkUINodeHandle node)
2514 {
2515 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2516 CHECK_NULL_VOID(frameNode);
2517 TextFieldModelNG::SetStrokeWidth(frameNode, 0.0_px);
2518 }
2519
GetTextInputStrokeWidth(ArkUINodeHandle node)2520 ArkUI_Float32 GetTextInputStrokeWidth(ArkUINodeHandle node)
2521 {
2522 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2523 CHECK_NULL_RETURN(frameNode, ERROR_FLOAT_CODE);
2524 return TextFieldModelNG::GetStrokeWidth(frameNode).Value();
2525 }
2526
SetTextInputStrokeColor(ArkUINodeHandle node,ArkUI_Uint32 color)2527 void SetTextInputStrokeColor(ArkUINodeHandle node, ArkUI_Uint32 color)
2528 {
2529 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2530 CHECK_NULL_VOID(frameNode);
2531 TextFieldModelNG::SetStrokeColor(frameNode, Color(color));
2532 }
2533
ResetTextInputStrokeColor(ArkUINodeHandle node)2534 void ResetTextInputStrokeColor(ArkUINodeHandle node)
2535 {
2536 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2537 CHECK_NULL_VOID(frameNode);
2538 TextFieldModelNG::ResetStrokeColor(frameNode);
2539 }
2540
GetTextInputStrokeColor(ArkUINodeHandle node)2541 ArkUI_Uint32 GetTextInputStrokeColor(ArkUINodeHandle node)
2542 {
2543 auto *frameNode = reinterpret_cast<FrameNode *>(node);
2544 CHECK_NULL_RETURN(frameNode, ERROR_UINT_CODE);
2545 return TextFieldModelNG::GetStrokeColor(frameNode).GetValue();
2546 }
2547
SetEnableAutoSpacing(ArkUINodeHandle node,ArkUI_Bool enableAutoSpacing)2548 void SetEnableAutoSpacing(ArkUINodeHandle node, ArkUI_Bool enableAutoSpacing)
2549 {
2550 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2551 CHECK_NULL_VOID(frameNode);
2552 TextFieldModelNG::SetEnableAutoSpacing(frameNode, static_cast<bool>(enableAutoSpacing));
2553 }
2554
ResetEnableAutoSpacing(ArkUINodeHandle node)2555 void ResetEnableAutoSpacing(ArkUINodeHandle node)
2556 {
2557 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2558 CHECK_NULL_VOID(frameNode);
2559 TextFieldModelNG::SetEnableAutoSpacing(frameNode, false);
2560 }
2561 } // namespace
2562
2563 namespace NodeModifier {
GetTextInputModifier()2564 const ArkUITextInputModifier* GetTextInputModifier()
2565 {
2566 CHECK_INITIALIZED_FIELDS_BEGIN(); // don't move this line
2567 static const ArkUITextInputModifier modifier = {
2568 .setTextInputCaretColor = SetTextInputCaretColor,
2569 .resetTextInputCaretColor = ResetTextInputCaretColor,
2570 .setTextInputType = SetTextInputType,
2571 .resetTextInputType = ResetTextInputType,
2572 .setTextInputMaxLines = SetTextInputMaxLines,
2573 .resetTextInputMaxLines = ResetTextInputMaxLines,
2574 .setTextInputPlaceholderColor = SetTextInputPlaceholderColor,
2575 .resetTextInputPlaceholderColor = ResetTextInputPlaceholderColor,
2576 .setTextInputCaretPosition = SetTextInputCaretPosition,
2577 .resetTextInputCaretPosition = ResetTextInputCaretPosition,
2578 .setTextInputCopyOption = SetTextInputCopyOption,
2579 .resetTextInputCopyOption = ResetTextInputCopyOption,
2580 .setTextInputShowPasswordIcon = SetTextInputShowPasswordIcon,
2581 .resetTextInputShowPasswordIcon = ResetTextInputShowPasswordIcon,
2582 .setTextInputPasswordIcon = SetTextInputPasswordIcon,
2583 .resetTextInputPasswordIcon = ResetTextInputPasswordIcon,
2584 .setTextInputTextAlign = SetTextInputTextAlign,
2585 .resetTextInputTextAlign = ResetTextInputTextAlign,
2586 .setTextInputStyle = SetTextInputStyle,
2587 .resetTextInputStyle = ResetTextInputStyle,
2588 .setTextInputSelectionMenuHidden = SetTextInputSelectionMenuHidden,
2589 .resetTextInputSelectionMenuHidden = ResetTextInputSelectionMenuHidden,
2590 .setTextInputShowUnderline = SetTextInputShowUnderline,
2591 .resetTextInputShowUnderline = ResetTextInputShowUnderline,
2592 .setTextInputCaretStyle = SetTextInputCaretStyle,
2593 .resetTextInputCaretStyle = ResetTextInputCaretStyle,
2594 .setTextInputEnableKeyboardOnFocus = SetTextInputEnableKeyboardOnFocus,
2595 .resetTextInputEnableKeyboardOnFocus = ResetTextInputEnableKeyboardOnFocus,
2596 .setTextInputBarState = SetTextInputBarState,
2597 .resetTextInputBarState = ResetTextInputBarState,
2598 .setTextInputEnterKeyType = SetTextInputEnterKeyType,
2599 .resetTextInputEnterKeyType = ResetTextInputEnterKeyType,
2600 .setTextInputFontWeight = SetTextInputFontWeight,
2601 .resetTextInputFontWeight = ResetTextInputFontWeight,
2602 .setTextInputFontSize = SetTextInputFontSize,
2603 .resetTextInputFontSize = ResetTextInputFontSize,
2604 .setTextInputMaxLength = SetTextInputMaxLength,
2605 .resetTextInputMaxLength = ResetTextInputMaxLength,
2606 .setTextInputSelectedBackgroundColor = SetTextInputSelectedBackgroundColor,
2607 .resetTextInputSelectedBackgroundColor = ResetTextInputSelectedBackgroundColor,
2608 .setTextInputShowError = SetTextInputShowError,
2609 .resetTextInputShowError = ResetTextInputShowError,
2610 .setTextInputPlaceholderFont = SetTextInputPlaceholderFont,
2611 .resetTextInputPlaceholderFont = ResetTextInputPlaceholderFont,
2612 .setTextInputFontColor = SetTextInputFontColor,
2613 .resetTextInputFontColor = ResetTextInputFontColor,
2614 .setTextInputFontStyle = SetTextInputFontStyle,
2615 .resetTextInputFontStyle = ResetTextInputFontStyle,
2616 .setTextInputFontFamily = SetTextInputFontFamily,
2617 .resetTextInputFontFamily = ResetTextInputFontFamily,
2618 .setTextInputPlaceholderString = SetTextInputPlaceholderString,
2619 .setTextInputTextString = SetTextInputTextString,
2620 .setTextInputFontWeightStr = SetTextInputFontWeightStr,
2621 .stopTextInputTextEditing = StopTextInputTextEditing,
2622 .setTextInputCancelButton = SetTextInputCancelButton,
2623 .resetTextInputCancelButton = resetTextInputCancelButton,
2624 .getTextInputPlaceholder = GetTextInputPlaceholder,
2625 .getTextInputText = GetTextInputText,
2626 .getTextInputCaretColor = GetTextInputCaretColor,
2627 .getTextInputCaretStyle = GetTextInputCaretStyle,
2628 .getTextInputShowUnderline = GetTextInputShowUnderline,
2629 .getTextInputMaxLength = GetTextInputMaxLength,
2630 .getTextInputEnterKeyType = GetTextInputEnterKeyType,
2631 .getTextInputPlaceholderColor = GetTextInputPlaceholderColor,
2632 .getTextInputPlaceholderFont = GetTextInputPlaceholderFont,
2633 .getTextInputRequestKeyboardOnFocus = GetTextInputRequestKeyboardOnFocus,
2634 .getTextInputType = GetTextInputType,
2635 .getTextInputSelectedBackgroundColor = GetTextInputSelectedBackgroundColor,
2636 .getTextInputShowPasswordIcon = GetTextInputShowPasswordIcon,
2637 .getTextInputEditing = GetTextInputEditing,
2638 .getTextInputShowCancelButton = GetTextInputShowCancelButton,
2639 .getTextInputCancelIconSize = GetTextInputCancelIconSize,
2640 .getTextInputTextCancelIconSrc = getTextInputTextCancelIconSrc,
2641 .getTextInputTextCancelIconColor = getTextInputTextCancelIconColor,
2642 .getTextInputTextAlign = GetTextInputTextAlign,
2643 .getTextInputFontColor = GetTextInputFontColor,
2644 .getTextInputFontStyle = GetTextInputFontStyle,
2645 .getTextInputFontWeight = GetTextInputFontWeight,
2646 .getTextInputFontSize = GetTextInputFontSize,
2647 .getTextInputCancelButtonStyle = GetTextInputCancelButtonStyle,
2648 .setTextInputBackgroundColor = SetTextInputBackgroundColor,
2649 .setTextInputBackgroundColorWithColorSpace = SetTextInputBackgroundColorWithColorSpace,
2650 .resetTextInputBackgroundColor = ResetTextInputBackgroundColor,
2651 .setTextInputTextSelection = SetTextInputTextSelection,
2652 .getTextInputTextSelectionIndex = GetTextInputTextSelectionIndex,
2653 .setTextInputHalfLeading = SetTextInputHalfLeading,
2654 .resetTextInputHalfLeading = ResetTextInputHalfLeading,
2655 .setTextInputPasswordRules = SetTextInputPasswordRules,
2656 .resetTextInputPasswordRules = ResetTextInputPasswordRules,
2657 .setTextInputEnableAutoFill = SetTextInputEnableAutoFill,
2658 .resetTextInputEnableAutoFill = ResetTextInputEnableAutoFill,
2659 .setTextInputPadding = SetTextInputPadding,
2660 .resetTextInputPadding = ResetTextInputPadding,
2661 .setTextInputFontFeature = SetTextInputFontFeature,
2662 .resetTextInputFontFeature = ResetTextInputFontFeature,
2663 .setTextInputDecoration = SetTextInputDecoration,
2664 .resetTextInputDecoration = ResetTextInputDecoration,
2665 .setTextInputLetterSpacing = SetTextInputLetterSpacing,
2666 .resetTextInputLetterSpacing = ResetTextInputLetterSpacing,
2667 .setTextInputLineHeight = SetTextInputLineHeight,
2668 .resetTextInputLineHeight = ResetTextInputLineHeight,
2669 .setTextInputNormalUnderlineColor = SetTextInputNormalUnderlineColor,
2670 .setTextInputUserUnderlineColor = SetTextInputUserUnderlineColor,
2671 .resetTextInputUserUnderlineColor = ResetTextInputUserUnderlineColor,
2672 .setTextInputWordBreak = SetTextInputWordBreak,
2673 .resetTextInputWordBreak = ResetTextInputWordBreak,
2674 .setTextInputPlaceholderFontEnum = SetTextInputPlaceholderFontEnum,
2675 .setTextInputAdaptMinFontSize = SetTextInputAdaptMinFontSize,
2676 .resetTextInputAdaptMinFontSize = ResetTextInputAdaptMinFontSize,
2677 .setTextInputAdaptMaxFontSize = SetTextInputAdaptMaxFontSize,
2678 .resetTextInputAdaptMaxFontSize = ResetTextInputAdaptMaxFontSize,
2679 .setTextInputHeightAdaptivePolicy = SetTextInputHeightAdaptivePolicy,
2680 .resetTextInputHeightAdaptivePolicy = ResetTextInputHeightAdaptivePolicy,
2681 .setTextInputTextOverflow = SetTextInputTextOverflow,
2682 .resetTextInputTextOverflow = ResetTextInputTextOverflow,
2683 .setTextInputTextIndent = SetTextInputTextIndent,
2684 .resetTextInputTextIndent = ResetTextInputTextIndent,
2685 .setTextInputOnWillChange = SetTextInputOnWillChange,
2686 .resetTextInputOnWillChange = ResetTextInputOnWillChange,
2687 .getTextInputSelectionMenuHidden = GetTextInputSelectionMenuHidden,
2688 .getTextInputWordBreak = GetTextInputWordBreak,
2689 .getTextInputEnableAutoFill = GetTextInputEnableAutoFill,
2690 .setTextInputContentType = SetTextInputContentType,
2691 .resetTextInputContentType = ResetTextInputContentType,
2692 .getTextInputContentType = GetTextInputContentType,
2693 .getTextInputUserUnderlineColor = GetTextInputUserUnderlineColor,
2694 .getTextInputPasswordRules = GetTextInputPasswordRules,
2695 .getTextInputSelectAll = GetTextInputSelectAll,
2696 .setTextInputInputFilter = SetTextInputInputFilter,
2697 .getTextInputInputFilter = GetTextInputInputFilter,
2698 .resetTextInputInputFilter = ResetTextInputInputFilter,
2699 .getTextInputCaretIndex = GetTextInputCaretIndex,
2700 .getTextInputCaretOffset = GetTextInputCaretOffset,
2701 .getTextInputStyle = GetTextInputStyle,
2702 .getTextInputContentRect = GetTextInputContentRect,
2703 .getTextInputContentLinesNum = GetTextInputContentLinesNum,
2704 .setBlurOnSubmit = SetBlurOnSubmit,
2705 .getBlurOnSubmit = GetBlurOnSubmit,
2706 .getTextInputAdaptMinFontSize = GetTextInputAdaptMinFontSize,
2707 .getTextInputAdaptMaxFontSize = GetTextInputAdaptMaxFontSize,
2708 .getTextInputLineHeight = GetTextInputLineHeight,
2709 .getTextInputHalfLeading = GetTextInputHalfLeading,
2710 .getTextInputMaxLines = GetTextInputMaxLines,
2711 .getTextInputFontFeature = GetTextInputFontFeature,
2712 .setTextInputCustomKeyboard = SetTextInputCustomKeyboard,
2713 .getTextInputCustomKeyboard = GetTextInputCustomKeyboard,
2714 .getTextInputCustomKeyboardOption = GetTextInputCustomKeyboardOption,
2715 .resetTextInputCustomKeyboard = ResetTextInputCustomKeyboard,
2716 .setTextInputSelectAll = SetTextInputSelectAll,
2717 .resetTextInputSelectAll = ResetTextInputSelectAll,
2718 .setTextInputShowCounter = SetTextInputShowCounter,
2719 .resetTextInputShowCounter = ResetTextInputShowCounter,
2720 .setTextInputOnEditChange = SetTextInputOnEditChange,
2721 .resetTextInputOnEditChange = ResetTextInputOnEditChange,
2722 .setTextInputFilter = SetTextInputFilter,
2723 .resetTextInputFilter = ResetTextInputFilter,
2724 .setTextInputOnSubmitWithEvent = SetTextInputOnSubmitWithEvent,
2725 .resetTextInputOnSubmitWithEvent = ResetTextInputOnSubmitWithEvent,
2726 .setTextInputOnChange = SetTextInputOnChange,
2727 .resetTextInputOnChange = ResetTextInputOnChange,
2728 .setTextInputOnTextSelectionChange = SetTextInputOnTextSelectionChange,
2729 .resetTextInputOnTextSelectionChange = ResetTextInputOnTextSelectionChange,
2730 .setTextInputOnContentScroll = SetTextInputOnContentScroll,
2731 .resetTextInputOnContentScroll = ResetTextInputOnContentScroll,
2732 .setTextInputOnCopy = SetTextInputOnCopy,
2733 .resetTextInputOnCopy = ResetTextInputOnCopy,
2734 .setTextInputOnCut = SetTextInputOnCut,
2735 .resetTextInputOnCut = ResetTextInputOnCut,
2736 .setTextInputOnPaste = SetTextInputOnPaste,
2737 .resetTextInputOnPaste = ResetTextInputOnPaste,
2738 .setTextInputShowKeyBoardOnFocus = SetTextInputShowKeyBoardOnFocus,
2739 .getTextInputShowKeyBoardOnFocus = GetTextInputShowKeyBoardOnFocus,
2740 .resetTextInputShowKeyBoardOnFocus = ResetTextInputShowKeyBoardOnFocus,
2741 .setTextInputNumberOfLines = SetTextInputNumberOfLines,
2742 .getTextInputNumberOfLines = GetTextInputNumberOfLines,
2743 .resetTextInputNumberOfLines = ResetTextInputNumberOfLines,
2744 .setTextInputShowPassword = SetTextInputShowPassword,
2745 .resetTextInputShowPassword = ResetTextInputShowPassword,
2746 .getTextInputShowPassword = GetTextInputShowPassword,
2747 .setTextInputLineBreakStrategy = SetTextInputLineBreakStrategy,
2748 .resetTextInputLineBreakStrategy = ResetTextInputLineBreakStrategy,
2749 .setTextInputMargin = SetTextInputMargin,
2750 .resetTextInputMargin = ResetTextInputMargin,
2751 .getTextInputMargin = GetTextInputMargin,
2752 .setTextInputCaret = SetTextInputCaret,
2753 .getTextInputController = GetTextInputController,
2754 .setTextInputEnablePreviewText = SetTextInputEnablePreviewText,
2755 .resetTextInputEnablePreviewText = ResetTextInputEnablePreviewText,
2756 .setTextInputSelectionMenuOptions = SetTextInputSelectionMenuOptions,
2757 .resetTextInputSelectionMenuOptions = ResetTextInputSelectionMenuOptions,
2758 .setTextInputWidth = SetTextInputWidth,
2759 .resetTextInputWidth = ResetTextInputWidth,
2760 .setTextInputCancelSymbolIcon = SetTextInputCancelSymbolIcon,
2761 .resetTextInputCancelSymbolIcon = ResetTextInputCancelSymbolIcon,
2762 .setTextInputEnableHapticFeedback = SetTextInputEnableHapticFeedback,
2763 .resetTextInputEnableHapticFeedback = ResetTextInputEnableHapticFeedback,
2764 .setTextInputAutoCapitalizationMode = SetTextInputAutoCapitalizationMode,
2765 .resetTextInputAutoCapitalizationMode = ResetTextInputAutoCapitalizationMode,
2766 .getTextInputLetterSpacing = GetTextInputLetterSpacing,
2767 .getTextInputEnablePreviewText = GetTextInputEnablePreviewText,
2768 .setEllipsisMode = SetEllipsisMode,
2769 .resetEllipsisMode = ResetEllipsisMode,
2770 .setTextInputMinFontScale = SetTextInputMinFontScale,
2771 .resetTextInputMinFontScale = ResetTextInputMinFontScale,
2772 .setTextInputMaxFontScale = SetTextInputMaxFontScale,
2773 .resetTextInputMaxFontScale = ResetTextInputMaxFontScale,
2774 .setStopBackPress = SetStopBackPress,
2775 .resetStopBackPress = ResetStopBackPress,
2776 .setTextInputKeyboardAppearance = SetTextInputKeyboardAppearance,
2777 .getTextInputKeyboardAppearance = GetTextInputKeyboardAppearance,
2778 .resetTextInputKeyboardAppearance = ResetTextInputKeyboardAppearance,
2779 .setTextInputStrokeWidth = SetTextInputStrokeWidth,
2780 .resetTextInputStrokeWidth = ResetTextInputStrokeWidth,
2781 .getTextInputStrokeWidth = GetTextInputStrokeWidth,
2782 .setTextInputStrokeColor = SetTextInputStrokeColor,
2783 .resetTextInputStrokeColor = ResetTextInputStrokeColor,
2784 .getTextInputStrokeColor = GetTextInputStrokeColor,
2785 .setTextInputEnableAutoFillAnimation = SetTextInputEnableAutoFillAnimation,
2786 .getTextInputEnableAutoFillAnimation = GetTextInputEnableAutoFillAnimation,
2787 .resetTextInputEnableAutoFillAnimation = ResetTextInputEnableAutoFillAnimation,
2788 .setEnableAutoSpacing = SetEnableAutoSpacing,
2789 .resetEnableAutoSpacing = ResetEnableAutoSpacing,
2790 .resetTextInputOnSecurityStateChange = ResetTextInputOnSecurityStateChange,
2791 };
2792 CHECK_INITIALIZED_FIELDS_END(modifier, 0, 0, 0); // don't move this line
2793 return &modifier;
2794 }
2795
GetCJUITextInputModifier()2796 const CJUITextInputModifier* GetCJUITextInputModifier()
2797 {
2798 CHECK_INITIALIZED_FIELDS_BEGIN(); // don't move this line
2799 static const CJUITextInputModifier modifier = {
2800 .setTextInputCaretColor = SetTextInputCaretColor,
2801 .resetTextInputCaretColor = ResetTextInputCaretColor,
2802 .setTextInputType = SetTextInputType,
2803 .resetTextInputType = ResetTextInputType,
2804 .setTextInputMaxLines = SetTextInputMaxLines,
2805 .resetTextInputMaxLines = ResetTextInputMaxLines,
2806 .setTextInputPlaceholderColor = SetTextInputPlaceholderColor,
2807 .resetTextInputPlaceholderColor = ResetTextInputPlaceholderColor,
2808 .setTextInputCaretPosition = SetTextInputCaretPosition,
2809 .resetTextInputCaretPosition = ResetTextInputCaretPosition,
2810 .setTextInputCopyOption = SetTextInputCopyOption,
2811 .resetTextInputCopyOption = ResetTextInputCopyOption,
2812 .setTextInputShowPasswordIcon = SetTextInputShowPasswordIcon,
2813 .resetTextInputShowPasswordIcon = ResetTextInputShowPasswordIcon,
2814 .setTextInputPasswordIcon = SetTextInputPasswordIcon,
2815 .resetTextInputPasswordIcon = ResetTextInputPasswordIcon,
2816 .setTextInputTextAlign = SetTextInputTextAlign,
2817 .resetTextInputTextAlign = ResetTextInputTextAlign,
2818 .setTextInputStyle = SetTextInputStyle,
2819 .resetTextInputStyle = ResetTextInputStyle,
2820 .setTextInputSelectionMenuHidden = SetTextInputSelectionMenuHidden,
2821 .resetTextInputSelectionMenuHidden = ResetTextInputSelectionMenuHidden,
2822 .setTextInputShowUnderline = SetTextInputShowUnderline,
2823 .resetTextInputShowUnderline = ResetTextInputShowUnderline,
2824 .setTextInputCaretStyle = SetTextInputCaretStyle,
2825 .resetTextInputCaretStyle = ResetTextInputCaretStyle,
2826 .setTextInputEnableKeyboardOnFocus = SetTextInputEnableKeyboardOnFocus,
2827 .resetTextInputEnableKeyboardOnFocus = ResetTextInputEnableKeyboardOnFocus,
2828 .setTextInputBarState = SetTextInputBarState,
2829 .resetTextInputBarState = ResetTextInputBarState,
2830 .setTextInputEnterKeyType = SetTextInputEnterKeyType,
2831 .resetTextInputEnterKeyType = ResetTextInputEnterKeyType,
2832 .setTextInputFontWeight = SetTextInputFontWeight,
2833 .resetTextInputFontWeight = ResetTextInputFontWeight,
2834 .setTextInputFontSize = SetTextInputFontSize,
2835 .resetTextInputFontSize = ResetTextInputFontSize,
2836 .setTextInputMaxLength = SetTextInputMaxLength,
2837 .resetTextInputMaxLength = ResetTextInputMaxLength,
2838 .setTextInputSelectedBackgroundColor = SetTextInputSelectedBackgroundColor,
2839 .resetTextInputSelectedBackgroundColor = ResetTextInputSelectedBackgroundColor,
2840 .setTextInputShowError = SetTextInputShowError,
2841 .resetTextInputShowError = ResetTextInputShowError,
2842 .setTextInputPlaceholderFont = SetTextInputPlaceholderFont,
2843 .resetTextInputPlaceholderFont = ResetTextInputPlaceholderFont,
2844 .setTextInputFontColor = SetTextInputFontColor,
2845 .resetTextInputFontColor = ResetTextInputFontColor,
2846 .setTextInputFontStyle = SetTextInputFontStyle,
2847 .resetTextInputFontStyle = ResetTextInputFontStyle,
2848 .setTextInputFontFamily = SetTextInputFontFamily,
2849 .resetTextInputFontFamily = ResetTextInputFontFamily,
2850 .setTextInputPlaceholderString = SetTextInputPlaceholderString,
2851 .setTextInputTextString = SetTextInputTextString,
2852 .setTextInputFontWeightStr = SetTextInputFontWeightStr,
2853 .stopTextInputTextEditing = StopTextInputTextEditing,
2854 .setTextInputCancelButton = SetTextInputCancelButton,
2855 .resetTextInputCancelButton = resetTextInputCancelButton,
2856 .getTextInputPlaceholder = GetTextInputPlaceholder,
2857 .getTextInputText = GetTextInputText,
2858 .getTextInputCaretColor = GetTextInputCaretColor,
2859 .getTextInputCaretStyle = GetTextInputCaretStyle,
2860 .getTextInputShowUnderline = GetTextInputShowUnderline,
2861 .getTextInputMaxLength = GetTextInputMaxLength,
2862 .getTextInputEnterKeyType = GetTextInputEnterKeyType,
2863 .getTextInputPlaceholderColor = GetTextInputPlaceholderColor,
2864 .getTextInputPlaceholderFont = GetTextInputPlaceholderFont,
2865 .getTextInputRequestKeyboardOnFocus = GetTextInputRequestKeyboardOnFocus,
2866 .getTextInputType = GetTextInputType,
2867 .getTextInputSelectedBackgroundColor = GetTextInputSelectedBackgroundColor,
2868 .getTextInputShowPasswordIcon = GetTextInputShowPasswordIcon,
2869 .getTextInputEditing = GetTextInputEditing,
2870 .getTextInputShowCancelButton = GetTextInputShowCancelButton,
2871 .getTextInputCancelIconSize = GetTextInputCancelIconSize,
2872 .getTextInputTextCancelIconSrc = getTextInputTextCancelIconSrc,
2873 .getTextInputTextCancelIconColor = getTextInputTextCancelIconColor,
2874 .getTextInputTextAlign = GetTextInputTextAlign,
2875 .getTextInputFontColor = GetTextInputFontColor,
2876 .getTextInputFontStyle = GetTextInputFontStyle,
2877 .getTextInputFontWeight = GetTextInputFontWeight,
2878 .getTextInputFontSize = GetTextInputFontSize,
2879 .getTextInputCancelButtonStyle = GetTextInputCancelButtonStyle,
2880 .setTextInputBackgroundColor = SetTextInputBackgroundColor,
2881 .setTextInputBackgroundColorWithColorSpace = SetTextInputBackgroundColorWithColorSpace,
2882 .resetTextInputBackgroundColor = ResetTextInputBackgroundColor,
2883 .setTextInputTextSelection = SetTextInputTextSelection,
2884 .getTextInputTextSelectionIndex = GetTextInputTextSelectionIndex,
2885 .setTextInputPasswordRules = SetTextInputPasswordRules,
2886 .resetTextInputPasswordRules = ResetTextInputPasswordRules,
2887 .setTextInputEnableAutoFill = SetTextInputEnableAutoFill,
2888 .resetTextInputEnableAutoFill = ResetTextInputEnableAutoFill,
2889 .setTextInputPadding = SetTextInputPadding,
2890 .resetTextInputPadding = ResetTextInputPadding,
2891 .setTextInputFontFeature = SetTextInputFontFeature,
2892 .resetTextInputFontFeature = ResetTextInputFontFeature,
2893 .setTextInputDecoration = SetTextInputDecoration,
2894 .resetTextInputDecoration = ResetTextInputDecoration,
2895 .setTextInputLetterSpacing = SetTextInputLetterSpacing,
2896 .resetTextInputLetterSpacing = ResetTextInputLetterSpacing,
2897 .setTextInputLineHeight = SetTextInputLineHeight,
2898 .resetTextInputLineHeight = ResetTextInputLineHeight,
2899 .setTextInputNormalUnderlineColor = SetTextInputNormalUnderlineColor,
2900 .setTextInputUserUnderlineColor = SetTextInputUserUnderlineColor,
2901 .resetTextInputUserUnderlineColor = ResetTextInputUserUnderlineColor,
2902 .setTextInputWordBreak = SetTextInputWordBreak,
2903 .resetTextInputWordBreak = ResetTextInputWordBreak,
2904 .setTextInputPlaceholderFontEnum = SetTextInputPlaceholderFontEnum,
2905 .setTextInputAdaptMinFontSize = SetTextInputAdaptMinFontSize,
2906 .resetTextInputAdaptMinFontSize = ResetTextInputAdaptMinFontSize,
2907 .setTextInputAdaptMaxFontSize = SetTextInputAdaptMaxFontSize,
2908 .resetTextInputAdaptMaxFontSize = ResetTextInputAdaptMaxFontSize,
2909 .setTextInputHeightAdaptivePolicy = SetTextInputHeightAdaptivePolicy,
2910 .resetTextInputHeightAdaptivePolicy = ResetTextInputHeightAdaptivePolicy,
2911 .setTextInputTextOverflow = SetTextInputTextOverflow,
2912 .resetTextInputTextOverflow = ResetTextInputTextOverflow,
2913 .setTextInputTextIndent = SetTextInputTextIndent,
2914 .resetTextInputTextIndent = ResetTextInputTextIndent,
2915 .getTextInputSelectionMenuHidden = GetTextInputSelectionMenuHidden,
2916 .getTextInputWordBreak = GetTextInputWordBreak,
2917 .getTextInputEnableAutoFill = GetTextInputEnableAutoFill,
2918 .setTextInputContentType = SetTextInputContentType,
2919 .resetTextInputContentType = ResetTextInputContentType,
2920 .getTextInputContentType = GetTextInputContentType,
2921 .getTextInputUserUnderlineColor = GetTextInputUserUnderlineColor,
2922 .getTextInputPasswordRules = GetTextInputPasswordRules,
2923 .getTextInputSelectAll = GetTextInputSelectAll,
2924 .setTextInputInputFilter = SetTextInputInputFilter,
2925 .getTextInputInputFilter = GetTextInputInputFilter,
2926 .resetTextInputInputFilter = ResetTextInputInputFilter,
2927 .getTextInputCaretIndex = GetTextInputCaretIndex,
2928 .getTextInputCaretOffset = GetTextInputCaretOffset,
2929 .getTextInputStyle = GetTextInputStyle,
2930 .getTextInputContentRect = GetTextInputContentRect,
2931 .getTextInputContentLinesNum = GetTextInputContentLinesNum,
2932 .setBlurOnSubmit = SetBlurOnSubmit,
2933 .getBlurOnSubmit = GetBlurOnSubmit,
2934 .getTextInputAdaptMinFontSize = GetTextInputAdaptMinFontSize,
2935 .getTextInputAdaptMaxFontSize = GetTextInputAdaptMaxFontSize,
2936 .getTextInputLineHeight = GetTextInputLineHeight,
2937 .getTextInputMaxLines = GetTextInputMaxLines,
2938 .getTextInputFontFeature = GetTextInputFontFeature,
2939 .setTextInputCustomKeyboard = SetTextInputCustomKeyboard,
2940 .getTextInputCustomKeyboard = GetTextInputCustomKeyboard,
2941 .getTextInputCustomKeyboardOption = GetTextInputCustomKeyboardOption,
2942 .resetTextInputCustomKeyboard = ResetTextInputCustomKeyboard,
2943 .setTextInputSelectAll = SetTextInputSelectAll,
2944 .resetTextInputSelectAll = ResetTextInputSelectAll,
2945 .setTextInputShowCounter = SetTextInputShowCounter,
2946 .resetTextInputShowCounter = ResetTextInputShowCounter,
2947 .setTextInputOnEditChange = SetTextInputOnEditChange,
2948 .resetTextInputOnEditChange = ResetTextInputOnEditChange,
2949 .setTextInputFilter = SetTextInputFilter,
2950 .resetTextInputFilter = ResetTextInputFilter,
2951 .setTextInputOnSubmitWithEvent = SetTextInputOnSubmitWithEvent,
2952 .resetTextInputOnSubmitWithEvent = ResetTextInputOnSubmitWithEvent,
2953 .setTextInputOnChange = SetTextInputOnChange,
2954 .resetTextInputOnChange = ResetTextInputOnChange,
2955 .setTextInputOnTextSelectionChange = SetTextInputOnTextSelectionChange,
2956 .resetTextInputOnTextSelectionChange = ResetTextInputOnTextSelectionChange,
2957 .setTextInputOnContentScroll = SetTextInputOnContentScroll,
2958 .resetTextInputOnContentScroll = ResetTextInputOnContentScroll,
2959 .setTextInputOnCopy = SetTextInputOnCopy,
2960 .resetTextInputOnCopy = ResetTextInputOnCopy,
2961 .setTextInputOnCut = SetTextInputOnCut,
2962 .resetTextInputOnCut = ResetTextInputOnCut,
2963 .setTextInputOnPaste = SetTextInputOnPaste,
2964 .resetTextInputOnPaste = ResetTextInputOnPaste,
2965 .setTextInputShowKeyBoardOnFocus = SetTextInputShowKeyBoardOnFocus,
2966 .getTextInputShowKeyBoardOnFocus = GetTextInputShowKeyBoardOnFocus,
2967 .resetTextInputShowKeyBoardOnFocus = ResetTextInputShowKeyBoardOnFocus,
2968 .setTextInputNumberOfLines = SetTextInputNumberOfLines,
2969 .getTextInputNumberOfLines = GetTextInputNumberOfLines,
2970 .resetTextInputNumberOfLines = ResetTextInputNumberOfLines,
2971 .setTextInputShowPassword = SetTextInputShowPassword,
2972 .resetTextInputShowPassword = ResetTextInputShowPassword,
2973 .getTextInputShowPassword = GetTextInputShowPassword,
2974 .setTextInputLineBreakStrategy = SetTextInputLineBreakStrategy,
2975 .resetTextInputLineBreakStrategy = ResetTextInputLineBreakStrategy,
2976 .setTextInputMargin = SetTextInputMargin,
2977 .resetTextInputMargin = ResetTextInputMargin,
2978 .getTextInputMargin = GetTextInputMargin,
2979 .setTextInputCaret = SetTextInputCaret,
2980 .getTextInputController = GetTextInputController,
2981 .setTextInputEnablePreviewText = SetTextInputEnablePreviewText,
2982 .resetTextInputEnablePreviewText = ResetTextInputEnablePreviewText,
2983 };
2984 CHECK_INITIALIZED_FIELDS_END(modifier, 0, 0, 0); // don't move this line
2985
2986 return &modifier;
2987 }
2988
SetOnTextInputChange(ArkUINodeHandle node,void * extraParam)2989 void SetOnTextInputChange(ArkUINodeHandle node, void* extraParam)
2990 {
2991 auto* frameNode = reinterpret_cast<FrameNode*>(node);
2992 CHECK_NULL_VOID(frameNode);
2993 auto onChange = [node, extraParam](const ChangeValueInfo& info) {
2994 ArkUINodeEvent event;
2995 std::string utf8Str = UtfUtils::Str16DebugToStr8(info.value);
2996 event.kind = TEXT_INPUT;
2997 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
2998 event.textInputEvent.subKind = ON_TEXT_INPUT_CHANGE;
2999 event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(utf8Str.c_str());
3000 SendArkUISyncEvent(&event);
3001 };
3002 TextFieldModelNG::SetOnChange(frameNode, std::move(onChange));
3003 }
3004
SetOnTextInputChangeWithPreviewText(ArkUINodeHandle node,void * extraParam)3005 void SetOnTextInputChangeWithPreviewText(ArkUINodeHandle node, void* extraParam)
3006 {
3007 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3008 CHECK_NULL_VOID(frameNode);
3009 auto onChange = [node, extraParam](const ChangeValueInfo& info) {
3010 ArkUINodeEvent eventWithPreview;
3011 eventWithPreview.kind = TEXT_INPUT_CHANGE;
3012 std::string utf8StrValue = UtfUtils::Str16DebugToStr8(info.value);
3013 std::string utf8Str = UtfUtils::Str16DebugToStr8(info.previewText.value);
3014 eventWithPreview.extraParam = reinterpret_cast<intptr_t>(extraParam);
3015 eventWithPreview.textChangeEvent.subKind = ON_TEXT_INPUT_CHANGE_WITH_PREVIEW_TEXT;
3016 eventWithPreview.textChangeEvent.nativeStringPtr = const_cast<char*>(utf8StrValue.c_str());
3017 eventWithPreview.textChangeEvent.extendStringPtr = const_cast<char*>(utf8Str.c_str());
3018 eventWithPreview.textChangeEvent.numArgs = info.previewText.offset;
3019 SendArkUISyncEvent(&eventWithPreview);
3020 };
3021 TextFieldModelNG::SetOnChange(frameNode, std::move(onChange));
3022 }
3023
SetOnTextInputWillChange(ArkUINodeHandle node,void * extraParam)3024 void SetOnTextInputWillChange(ArkUINodeHandle node, void* extraParam)
3025 {
3026 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3027 CHECK_NULL_VOID(frameNode);
3028 auto onWillChange = [node, extraParam](const ChangeValueInfo& info) -> bool {
3029 ArkUINodeEvent event;
3030 event.kind = TEXT_INPUT_CHANGE;
3031 std::string utf8StrValue = UtfUtils::Str16DebugToStr8(info.value);
3032 std::string utf8Str = UtfUtils::Str16DebugToStr8(info.previewText.value);
3033 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3034 event.textChangeEvent.subKind = ON_TEXT_INPUT_WILL_CHANGE;
3035 event.textChangeEvent.nativeStringPtr = const_cast<char*>(utf8StrValue.c_str());
3036 event.textChangeEvent.extendStringPtr = const_cast<char*>(utf8Str.c_str());
3037 event.textChangeEvent.numArgs = info.previewText.offset;
3038 SendArkUISyncEvent(&event);
3039 return true;
3040 };
3041 TextFieldModelNG::SetOnWillChangeEvent(frameNode, std::move(onWillChange));
3042 }
3043
SetTextInputOnSubmit(ArkUINodeHandle node,void * extraParam)3044 void SetTextInputOnSubmit(ArkUINodeHandle node, void* extraParam)
3045 {
3046 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3047 CHECK_NULL_VOID(frameNode);
3048 auto onEvent = [node, extraParam](int32_t value, NG::TextFieldCommonEvent& commonEvent) {
3049 ArkUINodeEvent event;
3050 event.kind = COMPONENT_ASYNC_EVENT;
3051 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3052 event.componentAsyncEvent.subKind = ON_TEXT_INPUT_SUBMIT;
3053 event.componentAsyncEvent.data[0].i32 = value;
3054 SendArkUISyncEvent(&event);
3055 };
3056 TextFieldModelNG::SetOnSubmit(frameNode, std::move(onEvent));
3057 }
3058
SetOnTextInputCut(ArkUINodeHandle node,void * extraParam)3059 void SetOnTextInputCut(ArkUINodeHandle node, void* extraParam)
3060 {
3061 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3062 CHECK_NULL_VOID(frameNode);
3063 auto onCut = [node, extraParam](const std::u16string& str) {
3064 ArkUINodeEvent event;
3065 std::string utf8Str = UtfUtils::Str16DebugToStr8(str);
3066 event.kind = TEXT_INPUT;
3067 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3068 event.textInputEvent.subKind = ON_TEXT_INPUT_CUT;
3069 event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(utf8Str.c_str());
3070 SendArkUISyncEvent(&event);
3071 };
3072 TextFieldModelNG::SetOnCut(frameNode, std::move(onCut));
3073 }
3074
SetOnTextInputPaste(ArkUINodeHandle node,void * extraParam)3075 void SetOnTextInputPaste(ArkUINodeHandle node, void* extraParam)
3076 {
3077 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3078 CHECK_NULL_VOID(frameNode);
3079 auto onPaste = [node, extraParam](const std::u16string& str, NG::TextCommonEvent& commonEvent) {
3080 ArkUINodeEvent event;
3081 std::string utf8Str = UtfUtils::Str16DebugToStr8(str);
3082 event.kind = TEXT_INPUT;
3083 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3084 event.textInputEvent.subKind = ON_TEXT_INPUT_PASTE;
3085 event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(utf8Str.c_str());
3086 SendArkUISyncEvent(&event);
3087 };
3088 TextFieldModelNG::SetOnPasteWithEvent(frameNode, std::move(onPaste));
3089 }
3090
SetOnTextInputSelectionChange(ArkUINodeHandle node,void * extraParam)3091 void SetOnTextInputSelectionChange(ArkUINodeHandle node, void* extraParam)
3092 {
3093 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3094 CHECK_NULL_VOID(frameNode);
3095 auto onSelectionChange = [node, extraParam](int32_t start, int32_t end) {
3096 ArkUINodeEvent event;
3097 event.kind = COMPONENT_ASYNC_EVENT;
3098 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3099 event.componentAsyncEvent.subKind = ON_TEXT_INPUT_TEXT_SELECTION_CHANGE;
3100 event.componentAsyncEvent.data[0].i32 = static_cast<int>(start);
3101 event.componentAsyncEvent.data[1].i32 = static_cast<int>(end);
3102 SendArkUISyncEvent(&event);
3103 };
3104 TextFieldModelNG::SetOnTextSelectionChange(frameNode, std::move(onSelectionChange));
3105 }
3106
SetOnTextInputEditChange(ArkUINodeHandle node,void * extraParam)3107 void SetOnTextInputEditChange(ArkUINodeHandle node, void* extraParam)
3108 {
3109 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3110 CHECK_NULL_VOID(frameNode);
3111 auto onChange = [node, extraParam](bool isEditing) {
3112 ArkUINodeEvent event;
3113 event.kind = COMPONENT_ASYNC_EVENT;
3114 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3115 event.componentAsyncEvent.subKind = ON_TEXT_INPUT_EDIT_CHANGE;
3116 event.componentAsyncEvent.data[0].i32 = static_cast<int>(isEditing);
3117 SendArkUISyncEvent(&event);
3118 };
3119 TextFieldModelNG::SetOnEditChanged(frameNode, std::move(onChange));
3120 }
3121
SetOnTextInputContentSizeChange(ArkUINodeHandle node,void * extraParam)3122 void SetOnTextInputContentSizeChange(ArkUINodeHandle node, void* extraParam)
3123 {
3124 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3125 CHECK_NULL_VOID(frameNode);
3126 auto onChange = [node, extraParam](float width, float height) {
3127 ArkUINodeEvent event;
3128 event.kind = COMPONENT_ASYNC_EVENT;
3129 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3130 event.componentAsyncEvent.subKind = ON_TEXT_INPUT_CONTENT_SIZE_CHANGE;
3131 bool usePx = NodeModel::UsePXUnit(reinterpret_cast<ArkUI_Node*>(extraParam));
3132 double density = usePx ? 1 : PipelineBase::GetCurrentDensity();
3133 //0 width
3134 event.componentAsyncEvent.data[0].f32 = NearEqual(density, 0.0) ? 0.0f : width / density;
3135 //1 height
3136 event.componentAsyncEvent.data[1].f32 = NearEqual(density, 0.0) ? 0.0f : height / density;
3137 SendArkUISyncEvent(&event);
3138 };
3139 TextFieldModelNG::SetOnContentSizeChange(frameNode, std::move(onChange));
3140 }
3141
SetOnTextInputInputFilterError(ArkUINodeHandle node,void * extraParam)3142 void SetOnTextInputInputFilterError(ArkUINodeHandle node, void* extraParam)
3143 {
3144 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3145 CHECK_NULL_VOID(frameNode);
3146 auto onInputFilterError = [node, extraParam](const std::u16string& str) {
3147 ArkUINodeEvent event;
3148 std::string utf8Str = UtfUtils::Str16DebugToStr8(str);
3149 event.kind = TEXT_INPUT;
3150 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3151 event.textInputEvent.subKind = ON_TEXT_INPUT_INPUT_FILTER_ERROR;
3152 event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(utf8Str.c_str());
3153 SendArkUISyncEvent(&event);
3154 };
3155 TextFieldModelNG::SetInputFilterError(frameNode, std::move(onInputFilterError));
3156 }
3157
SetTextInputOnTextContentScroll(ArkUINodeHandle node,void * extraParam)3158 void SetTextInputOnTextContentScroll(ArkUINodeHandle node, void* extraParam)
3159 {
3160 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3161 CHECK_NULL_VOID(frameNode);
3162 auto onScroll = [node, extraParam](float totalOffsetX, float totalOffsetY) {
3163 ArkUINodeEvent event;
3164 event.kind = COMPONENT_ASYNC_EVENT;
3165 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3166 event.componentAsyncEvent.subKind = ON_TEXT_INPUT_CONTENT_SCROLL;
3167 event.componentAsyncEvent.data[0].f32 = totalOffsetX;
3168 event.componentAsyncEvent.data[1].f32 = totalOffsetY;
3169 SendArkUISyncEvent(&event);
3170 };
3171 TextFieldModelNG::SetOnContentScroll(frameNode, std::move(onScroll));
3172 }
3173
ResetOnTextInputChange(ArkUINodeHandle node)3174 void ResetOnTextInputChange(ArkUINodeHandle node)
3175 {
3176 GetTextInputModifier()->resetTextInputOnChange(node);
3177 }
ResetTextInputOnSubmit(ArkUINodeHandle node)3178 void ResetTextInputOnSubmit(ArkUINodeHandle node)
3179 {
3180 GetTextInputModifier()->resetTextInputOnSubmitWithEvent(node);
3181 }
ResetOnTextInputCut(ArkUINodeHandle node)3182 void ResetOnTextInputCut(ArkUINodeHandle node)
3183 {
3184 GetTextInputModifier()->resetTextInputOnCut(node);
3185 }
ResetOnTextInputPaste(ArkUINodeHandle node)3186 void ResetOnTextInputPaste(ArkUINodeHandle node)
3187 {
3188 GetTextInputModifier()->resetTextInputOnPaste(node);
3189 }
ResetOnTextInputSelectionChange(ArkUINodeHandle node)3190 void ResetOnTextInputSelectionChange(ArkUINodeHandle node)
3191 {
3192 GetTextInputModifier()->resetTextInputOnTextSelectionChange(node);
3193 }
ResetOnTextInputEditChange(ArkUINodeHandle node)3194 void ResetOnTextInputEditChange(ArkUINodeHandle node)
3195 {
3196 GetTextInputModifier()->resetTextInputOnEditChange(node);
3197 }
ResetOnTextInputContentSizeChange(ArkUINodeHandle node)3198 void ResetOnTextInputContentSizeChange(ArkUINodeHandle node)
3199 {
3200 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3201 CHECK_NULL_VOID(frameNode);
3202 TextFieldModelNG::SetOnContentSizeChange(frameNode, nullptr);
3203 }
ResetOnTextInputInputFilterError(ArkUINodeHandle node)3204 void ResetOnTextInputInputFilterError(ArkUINodeHandle node)
3205 {
3206 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3207 CHECK_NULL_VOID(frameNode);
3208 TextFieldModelNG::SetInputFilterError(frameNode, nullptr);
3209 }
ResetTextInputOnTextContentScroll(ArkUINodeHandle node)3210 void ResetTextInputOnTextContentScroll(ArkUINodeHandle node)
3211 {
3212 GetTextInputModifier()->resetTextInputOnContentScroll(node);
3213 }
ResetOnTextInputWillChange(ArkUINodeHandle node)3214 void ResetOnTextInputWillChange(ArkUINodeHandle node)
3215 {
3216 GetTextInputModifier()->resetTextInputOnWillChange(node);
3217 }
3218
SetTextInputOnWillInsert(ArkUINodeHandle node,void * extraParam)3219 void SetTextInputOnWillInsert(ArkUINodeHandle node, void* extraParam)
3220 {
3221 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3222 CHECK_NULL_VOID(frameNode);
3223 auto onWillInsert = [node, extraParam](const InsertValueInfo& Info) -> bool {
3224 ArkUINodeEvent event;
3225 std::string insertValueUtf8 = UtfUtils::Str16DebugToStr8(Info.insertValue);
3226 event.kind = MIXED_EVENT;
3227 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3228 event.mixedEvent.subKind = ON_TEXT_INPUT_WILL_INSERT;
3229 event.mixedEvent.numberData[0].f32 = Info.insertOffset;
3230 event.mixedEvent.numberDataLength = 1;
3231 event.mixedEvent.stringPtrData[0] = reinterpret_cast<intptr_t>(insertValueUtf8.c_str());
3232 event.mixedEvent.stringPtrDataLength = 1;
3233 SendArkUISyncEvent(&event);
3234 return event.mixedEvent.numberReturnData[0].i32;
3235 };
3236 TextFieldModelNG::SetOnWillInsertValueEvent(frameNode, std::move(onWillInsert));
3237 }
3238
SetTextInputOnDidInsert(ArkUINodeHandle node,void * extraParam)3239 void SetTextInputOnDidInsert(ArkUINodeHandle node, void* extraParam)
3240 {
3241 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3242 CHECK_NULL_VOID(frameNode);
3243 auto onDidInsert = [node, extraParam](const InsertValueInfo& Info) {
3244 ArkUINodeEvent event;
3245 std::string insertValueUtf8 = UtfUtils::Str16DebugToStr8(Info.insertValue);
3246 event.kind = MIXED_EVENT;
3247 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3248 event.mixedEvent.subKind = ON_TEXT_INPUT_DID_INSERT;
3249 event.mixedEvent.numberData[0].f32 = Info.insertOffset;
3250 event.mixedEvent.numberDataLength = 1;
3251 event.mixedEvent.stringPtrData[0] = reinterpret_cast<intptr_t>(insertValueUtf8.c_str());
3252 event.mixedEvent.stringPtrDataLength = 1;
3253 SendArkUISyncEvent(&event);
3254 };
3255 TextFieldModelNG::SetOnDidInsertValueEvent(frameNode, std::move(onDidInsert));
3256 }
3257
SetTextInputOnWillDelete(ArkUINodeHandle node,void * extraParam)3258 void SetTextInputOnWillDelete(ArkUINodeHandle node, void* extraParam)
3259 {
3260 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3261 CHECK_NULL_VOID(frameNode);
3262 auto onWillDelete = [node, extraParam](const DeleteValueInfo& Info) -> bool {
3263 ArkUINodeEvent event;
3264 std::string deleteValueUtf8 = UtfUtils::Str16DebugToStr8(Info.deleteValue);
3265 event.kind = MIXED_EVENT;
3266 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3267 event.mixedEvent.subKind = ON_TEXT_INPUT_WILL_DELETE;
3268 event.mixedEvent.numberData[0].f32 = Info.deleteOffset;
3269 event.mixedEvent.numberData[1].i32 = static_cast<int32_t>(Info.direction);
3270 event.mixedEvent.numberDataLength = 2;
3271 event.mixedEvent.stringPtrData[0] = reinterpret_cast<intptr_t>(deleteValueUtf8.c_str());
3272 event.mixedEvent.stringPtrDataLength = 1;
3273 SendArkUISyncEvent(&event);
3274 return event.mixedEvent.numberReturnData[0].i32;
3275 };
3276 TextFieldModelNG::SetOnWillDeleteEvent(frameNode, std::move(onWillDelete));
3277 }
3278
SetTextInputOnDidDelete(ArkUINodeHandle node,void * extraParam)3279 void SetTextInputOnDidDelete(ArkUINodeHandle node, void* extraParam)
3280 {
3281 auto* frameNode = reinterpret_cast<FrameNode*>(node);
3282 CHECK_NULL_VOID(frameNode);
3283 auto onDidDelete = [node, extraParam](const DeleteValueInfo& Info) {
3284 ArkUINodeEvent event;
3285 std::string deleteValueUtf8 = UtfUtils::Str16DebugToStr8(Info.deleteValue);
3286 event.kind = MIXED_EVENT;
3287 event.extraParam = reinterpret_cast<intptr_t>(extraParam);
3288 event.mixedEvent.subKind = ON_TEXT_INPUT_DID_DELETE;
3289 event.mixedEvent.numberData[0].f32 = Info.deleteOffset;
3290 event.mixedEvent.numberData[1].i32 = static_cast<int32_t>(Info.direction);
3291 event.mixedEvent.numberDataLength = 2;
3292 event.mixedEvent.stringPtrData[0] = reinterpret_cast<intptr_t>(deleteValueUtf8.c_str());
3293 event.mixedEvent.stringPtrDataLength = 1;
3294 SendArkUISyncEvent(&event);
3295 };
3296 TextFieldModelNG::SetOnDidDeleteEvent(frameNode, std::move(onDidDelete));
3297 }
3298
ResetOnTextInputChangeWithPreviewText(ArkUINodeHandle node)3299 void ResetOnTextInputChangeWithPreviewText(ArkUINodeHandle node)
3300 {
3301 GetTextInputModifier()->resetTextInputOnChange(node);
3302 }
3303 } // namespace NodeModifier
3304 } // namespace OHOS::Ace::NG
3305