• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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