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