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