1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "core/interfaces/native/node/search_modifier.h"
16 
17 #include "base/geometry/dimension.h"
18 #include "base/utils/utils.h"
19 #include "bridge/common/utils/utils.h"
20 #include "core/components/common/properties/color.h"
21 #include "core/components/common/properties/text_style.h"
22 #include "core/components/search/search_theme.h"
23 #include "core/components/text_field/textfield_theme.h"
24 #include "core/components_ng/base/frame_node.h"
25 #include "core/components_ng/pattern/search/search_model_ng.h"
26 #include "core/components_ng/pattern/search/search_node.h"
27 #include "core/components/common/layout/constants.h"
28 #include "core/pipeline/base/element_register.h"
29 #include "core/components_ng/base/view_abstract.h"
30 #include "core/components/common/properties/alignment.h"
31 #include "core/components/common/properties/text_style_parser.h"
32 
33 namespace OHOS::Ace::NG {
34 constexpr uint32_t DEFAULT_SEARCH_COLOR = 0x99182431;
35 constexpr Dimension DEFAULT_FONT_SIZE = 16.0_fp;
36 constexpr FontWeight DEFAULT_FONT_WEIGHT = FontWeight::NORMAL;
37 constexpr Ace::FontStyle DEFAULT_FONT_STYLE = Ace::FontStyle::NORMAL;
38 const bool DEFAULT_SELECTION_MENU_HIDDEN = false;
39 constexpr CancelButtonStyle DEFAULT_CANCEL_BUTTON_STYLE = CancelButtonStyle::INPUT;
40 constexpr Dimension THEME_SEARCH_FONT_SIZE = Dimension(16.0, DimensionUnit::FP);
41 constexpr Color THEME_SEARCH_TEXT_COLOR = Color(0xe5000000);
42 constexpr TextDecoration DEFAULT_TEXT_DECORATION = TextDecoration::NONE;
43 constexpr Color DEFAULT_DECORATION_COLOR = Color(0xff000000);
44 constexpr TextDecorationStyle DEFAULT_DECORATION_STYLE = TextDecorationStyle::SOLID;
45 constexpr int16_t DEFAULT_ALPHA = 255;
46 constexpr double DEFAULT_OPACITY = 0.2;
47 constexpr bool DEFAULT_ENABLE_PREVIEW_TEXT_VALUE = true;
48 constexpr int32_t DEFAULT_CARET_POSITION = 0;
49 constexpr bool DEFAULT_ENABLE_HAPTIC_FEEDBACK_VALUE = true;
50 
SetSearchTextFont(ArkUINodeHandle node,const struct ArkUIFontStruct * value)51 void SetSearchTextFont(ArkUINodeHandle node, const struct ArkUIFontStruct* value)
52 {
53     auto* frameNode = reinterpret_cast<FrameNode*>(node);
54     CHECK_NULL_VOID(frameNode);
55     Font font;
56     font.fontSize = Dimension(value->fontSizeNumber, static_cast<DimensionUnit>(value->fontSizeUnit));
57     font.fontWeight = static_cast<FontWeight>(value->fontWeight);
58     font.fontFamilies.assign(value->fontFamilies, value->fontFamilies + value->familyLength);
59     font.fontStyle = static_cast<OHOS::Ace::FontStyle>(value->fontStyle);
60 
61     SearchModelNG::SetTextFont(frameNode, font);
62 }
63 
ResetSearchTextFont(ArkUINodeHandle node)64 void ResetSearchTextFont(ArkUINodeHandle node)
65 {
66     auto* frameNode = reinterpret_cast<FrameNode*>(node);
67     CHECK_NULL_VOID(frameNode);
68     Font font;
69     font.fontSize = DEFAULT_FONT_SIZE;
70     font.fontWeight = DEFAULT_FONT_WEIGHT;
71     font.fontStyle = DEFAULT_FONT_STYLE;
72     SearchModelNG::SetTextFont(frameNode, font);
73 }
74 
SetSearchPlaceholderColor(ArkUINodeHandle node,ArkUI_Uint32 color)75 void SetSearchPlaceholderColor(ArkUINodeHandle node, ArkUI_Uint32 color)
76 {
77     auto* frameNode = reinterpret_cast<FrameNode*>(node);
78     CHECK_NULL_VOID(frameNode);
79     SearchModelNG::SetPlaceholderColor(frameNode, Color(color));
80 }
81 
ResetSearchPlaceholderColor(ArkUINodeHandle node)82 void ResetSearchPlaceholderColor(ArkUINodeHandle node)
83 {
84     auto* frameNode = reinterpret_cast<FrameNode*>(node);
85     CHECK_NULL_VOID(frameNode);
86     SearchModelNG::SetPlaceholderColor(frameNode, Color(DEFAULT_SEARCH_COLOR));
87 }
88 
SetSearchSelectionMenuHidden(ArkUINodeHandle node,ArkUI_Uint32 selectionMenuHidden)89 void SetSearchSelectionMenuHidden(ArkUINodeHandle node, ArkUI_Uint32 selectionMenuHidden)
90 {
91     auto* frameNode = reinterpret_cast<FrameNode*>(node);
92     CHECK_NULL_VOID(frameNode);
93     SearchModelNG::SetSelectionMenuHidden(frameNode, static_cast<bool>(selectionMenuHidden));
94 }
95 
ResetSearchSelectionMenuHidden(ArkUINodeHandle node)96 void ResetSearchSelectionMenuHidden(ArkUINodeHandle node)
97 {
98     auto* frameNode = reinterpret_cast<FrameNode*>(node);
99     CHECK_NULL_VOID(frameNode);
100     SearchModelNG::SetSelectionMenuHidden(frameNode, DEFAULT_SELECTION_MENU_HIDDEN);
101 }
102 
SetSearchCaretStyle(ArkUINodeHandle node,const ArkUI_Float32 number,ArkUI_Int32 unit,ArkUI_Uint32 caretColor)103 void SetSearchCaretStyle(ArkUINodeHandle node, const ArkUI_Float32 number, ArkUI_Int32 unit, ArkUI_Uint32 caretColor)
104 {
105     auto* frameNode = reinterpret_cast<FrameNode*>(node);
106     CHECK_NULL_VOID(frameNode);
107     SearchModelNG::SetCaretWidth(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
108     SearchModelNG::SetCaretColor(frameNode, Color(caretColor));
109 }
110 
ResetSearchCaretStyle(ArkUINodeHandle node)111 void ResetSearchCaretStyle(ArkUINodeHandle node)
112 {
113     auto* frameNode = reinterpret_cast<FrameNode*>(node);
114     CHECK_NULL_VOID(frameNode);
115     auto textFieldTheme = GetTheme<TextFieldTheme>();
116     CHECK_NULL_VOID(textFieldTheme);
117     CalcDimension caretWidth = textFieldTheme->GetCursorWidth();
118     uint32_t caretColor = textFieldTheme->GetCursorColor().GetValue();
119     SearchModelNG::SetCaretWidth(frameNode, Dimension(caretWidth.Value(), caretWidth.Unit()));
120     SearchModelNG::SetCaretColor(frameNode, Color(caretColor));
121 }
122 
SetSearchTextAlign(ArkUINodeHandle node,ArkUI_Int32 value)123 void SetSearchTextAlign(ArkUINodeHandle node, ArkUI_Int32 value)
124 {
125     auto* frameNode = reinterpret_cast<FrameNode*>(node);
126     CHECK_NULL_VOID(frameNode);
127     TextAlign value_textAlign = static_cast<TextAlign>(value);
128     SearchModelNG::SetTextAlign(frameNode, value_textAlign);
129 }
130 
ResetSearchTextAlign(ArkUINodeHandle node)131 void ResetSearchTextAlign(ArkUINodeHandle node)
132 {
133     auto* frameNode = reinterpret_cast<FrameNode*>(node);
134     CHECK_NULL_VOID(frameNode);
135     SearchModelNG::SetTextAlign(frameNode, TextAlign::START);
136 }
137 
SetSearchCancelButton(ArkUINodeHandle node,ArkUI_Int32 style,const struct ArkUISizeType * size,ArkUI_Uint32 color,ArkUI_CharPtr src)138 void SetSearchCancelButton(ArkUINodeHandle node,
139     ArkUI_Int32 style, const struct ArkUISizeType* size, ArkUI_Uint32 color, ArkUI_CharPtr src)
140 {
141     auto* frameNode = reinterpret_cast<FrameNode*>(node);
142     CHECK_NULL_VOID(frameNode);
143     SearchModelNG::SetCancelButtonStyle(frameNode, static_cast<CancelButtonStyle>(style));
144     NG::IconOptions cancelIconOptions = NG::IconOptions(
145         Color(color), Dimension(size->value, static_cast<DimensionUnit>(size->unit)), std::string(src), "", "");
146     SearchModelNG::SetCancelImageIcon(frameNode, cancelIconOptions);
147 }
148 
ResetSearchCancelButton(ArkUINodeHandle node)149 void ResetSearchCancelButton(ArkUINodeHandle node)
150 {
151     auto* frameNode = reinterpret_cast<FrameNode*>(node);
152     CHECK_NULL_VOID(frameNode);
153     SearchModelNG::SetCancelButtonStyle(frameNode, DEFAULT_CANCEL_BUTTON_STYLE);
154 }
155 
SetSearchEnableKeyboardOnFocus(ArkUINodeHandle node,ArkUI_Uint32 value)156 void SetSearchEnableKeyboardOnFocus(ArkUINodeHandle node, ArkUI_Uint32 value)
157 {
158     auto* frameNode = reinterpret_cast<FrameNode*>(node);
159     CHECK_NULL_VOID(frameNode);
160     SearchModelNG::RequestKeyboardOnFocus(frameNode, static_cast<bool>(value));
161 }
162 
ResetSearchEnableKeyboardOnFocus(ArkUINodeHandle node)163 void ResetSearchEnableKeyboardOnFocus(ArkUINodeHandle node)
164 {
165     auto* frameNode = reinterpret_cast<FrameNode*>(node);
166     CHECK_NULL_VOID(frameNode);
167     SearchModelNG::RequestKeyboardOnFocus(frameNode, true);
168 }
169 
SetSearchPlaceholderFont(ArkUINodeHandle node,const struct ArkUIFontStruct * value)170 void SetSearchPlaceholderFont(ArkUINodeHandle node, const struct ArkUIFontStruct* value)
171 {
172     auto* frameNode = reinterpret_cast<FrameNode*>(node);
173     CHECK_NULL_VOID(frameNode);
174     Font font;
175     font.fontSize = Dimension(value->fontSizeNumber, static_cast<DimensionUnit>(value->fontSizeUnit));
176     font.fontWeight = static_cast<FontWeight>(value->fontWeight);
177     font.fontFamilies.assign(value->fontFamilies, value->fontFamilies + value->familyLength);
178     font.fontStyle = static_cast<OHOS::Ace::FontStyle>(value->fontStyle);
179 
180     SearchModelNG::SetPlaceholderFont(frameNode, font);
181 }
182 
ResetSearchPlaceholderFont(ArkUINodeHandle node)183 void ResetSearchPlaceholderFont(ArkUINodeHandle node)
184 {
185     auto* frameNode = reinterpret_cast<FrameNode*>(node);
186     CHECK_NULL_VOID(frameNode);
187     Font font;
188     font.fontSize = THEME_SEARCH_FONT_SIZE;
189     font.fontWeight = DEFAULT_FONT_WEIGHT;
190     font.fontStyle = DEFAULT_FONT_STYLE;
191     SearchModelNG::SetPlaceholderFont(frameNode, font);
192 }
193 
SetSearchSearchIcon(ArkUINodeHandle node,const struct ArkUIIconOptionsStruct * value)194 void SetSearchSearchIcon(ArkUINodeHandle node, const struct ArkUIIconOptionsStruct* value)
195 {
196     auto* frameNode = reinterpret_cast<FrameNode*>(node);
197     CHECK_NULL_VOID(frameNode);
198     Color iconColor;
199     if (value->color != INVALID_COLOR_VALUE) {
200         iconColor = Color(value->color);
201     }
202 
203     NG::IconOptions cancelInconOptions = NG::IconOptions(
204         iconColor, Dimension(value->value, static_cast<DimensionUnit>(value->unit)), std::string(value->src), "", "");
205     SearchModelNG::SetSearchImageIcon(frameNode, cancelInconOptions);
206 }
207 
ResetSearchSearchIcon(ArkUINodeHandle node)208 void ResetSearchSearchIcon(ArkUINodeHandle node)
209 {
210     auto* frameNode = reinterpret_cast<FrameNode*>(node);
211     CHECK_NULL_VOID(frameNode);
212     SearchModelNG::SetSearchSrcPath(frameNode, "");
213 }
214 
SetSearchSearchButton(ArkUINodeHandle node,const struct ArkUISearchButtonOptionsStruct * value)215 void SetSearchSearchButton(ArkUINodeHandle node, const struct ArkUISearchButtonOptionsStruct* value)
216 {
217     auto* frameNode = reinterpret_cast<FrameNode*>(node);
218     CHECK_NULL_VOID(frameNode);
219     SearchModelNG::SetSearchButton(frameNode, value->value);
220     SearchModelNG::SetSearchButtonFontSize(frameNode, CalcDimension(value->sizeValue,
221         static_cast<DimensionUnit>(value->sizeUnit)));
222     SearchModelNG::SetSearchButtonFontColor(frameNode, Color(value->fontColor));
223 }
224 
ResetSearchSearchButton(ArkUINodeHandle node)225 void ResetSearchSearchButton(ArkUINodeHandle node)
226 {
227     auto* frameNode = reinterpret_cast<FrameNode*>(node);
228     CHECK_NULL_VOID(frameNode);
229     SearchModelNG::SetSearchButton(frameNode, "");
230 }
231 
SetSearchFontColor(ArkUINodeHandle node,ArkUI_Uint32 value)232 void SetSearchFontColor(ArkUINodeHandle node, ArkUI_Uint32 value)
233 {
234     auto* frameNode = reinterpret_cast<FrameNode*>(node);
235     CHECK_NULL_VOID(frameNode);
236     SearchModelNG::SetTextColor(frameNode, Color(value));
237 }
238 
ResetSearchFontColor(ArkUINodeHandle node)239 void ResetSearchFontColor(ArkUINodeHandle node)
240 {
241     auto* frameNode = reinterpret_cast<FrameNode*>(node);
242     CHECK_NULL_VOID(frameNode);
243     SearchModelNG::SetTextColor(frameNode, THEME_SEARCH_TEXT_COLOR);
244 }
245 
SetSearchCopyOption(ArkUINodeHandle node,ArkUI_Uint32 value)246 void SetSearchCopyOption(ArkUINodeHandle node, ArkUI_Uint32 value)
247 {
248     auto* frameNode = reinterpret_cast<FrameNode*>(node);
249     CHECK_NULL_VOID(frameNode);
250     auto copyOptions = CopyOptions::Local;
251     copyOptions = static_cast<CopyOptions>(value);
252     SearchModelNG::SetCopyOption(frameNode, copyOptions);
253 }
254 
ResetSearchCopyOption(ArkUINodeHandle node)255 void ResetSearchCopyOption(ArkUINodeHandle node)
256 {
257     auto* frameNode = reinterpret_cast<FrameNode*>(node);
258     CHECK_NULL_VOID(frameNode);
259     auto copyOptions = CopyOptions::Local;
260     SearchModelNG::SetCopyOption(frameNode, copyOptions);
261 }
262 
SetSearchEnterKeyType(ArkUINodeHandle node,ArkUI_Int32 value)263 void SetSearchEnterKeyType(ArkUINodeHandle node, ArkUI_Int32 value)
264 {
265     auto *frameNode = reinterpret_cast<FrameNode *>(node);
266     CHECK_NULL_VOID(frameNode);
267     SearchModelNG::SetSearchEnterKeyType(frameNode, CastToTextInputAction(value));
268 }
269 
ResetSearchEnterKeyType(ArkUINodeHandle node)270 void ResetSearchEnterKeyType(ArkUINodeHandle node)
271 {
272     auto *frameNode = reinterpret_cast<FrameNode *>(node);
273     CHECK_NULL_VOID(frameNode);
274     SearchModelNG::SetSearchEnterKeyType(frameNode, TextInputAction::SEARCH);
275 }
276 
SetSearchHeight(ArkUINodeHandle node,ArkUI_Float32 heightValue,ArkUI_Int32 heightUnit)277 void SetSearchHeight(ArkUINodeHandle node, ArkUI_Float32 heightValue, ArkUI_Int32 heightUnit)
278 {
279     auto* frameNode = reinterpret_cast<FrameNode*>(node);
280     CHECK_NULL_VOID(frameNode);
281     SearchModelNG::SetHeight(frameNode, CalcDimension(heightValue, (DimensionUnit)heightUnit));
282 }
283 
ResetSearchHeight(ArkUINodeHandle node)284 void ResetSearchHeight(ArkUINodeHandle node)
285 {
286     auto* frameNode = reinterpret_cast<FrameNode*>(node);
287     CHECK_NULL_VOID(frameNode);
288     ViewAbstract::ClearWidthOrHeight(frameNode, false);
289 }
290 
SetSearchFontFeature(ArkUINodeHandle node,ArkUI_CharPtr value)291 void SetSearchFontFeature(ArkUINodeHandle node, ArkUI_CharPtr value)
292 {
293     auto* frameNode = reinterpret_cast<FrameNode*>(node);
294     CHECK_NULL_VOID(frameNode);
295     std::string strValue = value;
296     SearchModelNG::SetFontFeature(frameNode, ParseFontFeatureSettings(strValue));
297 }
298 
ResetSearchFontFeature(ArkUINodeHandle node)299 void ResetSearchFontFeature(ArkUINodeHandle node)
300 {
301     auto* frameNode = reinterpret_cast<FrameNode*>(node);
302     CHECK_NULL_VOID(frameNode);
303     std::string strValue = "";
304     SearchModelNG::SetFontFeature(frameNode, ParseFontFeatureSettings(strValue));
305 }
306 
SetSearchDecoration(ArkUINodeHandle node,ArkUI_Int32 decoration,ArkUI_Uint32 color,ArkUI_Int32 style)307 void SetSearchDecoration(ArkUINodeHandle node, ArkUI_Int32 decoration, ArkUI_Uint32 color, ArkUI_Int32 style)
308 {
309     auto* frameNode = reinterpret_cast<FrameNode*>(node);
310     CHECK_NULL_VOID(frameNode);
311     SearchModelNG::SetTextDecoration(frameNode, static_cast<TextDecoration>(decoration));
312     SearchModelNG::SetTextDecorationColor(frameNode, Color(color));
313     SearchModelNG::SetTextDecorationStyle(frameNode, static_cast<TextDecorationStyle>(style));
314 }
315 
ResetSearchDecoration(ArkUINodeHandle node)316 void ResetSearchDecoration(ArkUINodeHandle node)
317 {
318     auto* frameNode = reinterpret_cast<FrameNode*>(node);
319     CHECK_NULL_VOID(frameNode);
320     SearchModelNG::SetTextDecoration(frameNode, DEFAULT_TEXT_DECORATION);
321     SearchModelNG::SetTextDecorationColor(frameNode, DEFAULT_DECORATION_COLOR);
322     SearchModelNG::SetTextDecorationStyle(frameNode, DEFAULT_DECORATION_STYLE);
323 }
324 
SetSearchLetterSpacing(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit)325 void SetSearchLetterSpacing(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit)
326 {
327     auto* frameNode = reinterpret_cast<FrameNode*>(node);
328     CHECK_NULL_VOID(frameNode);
329     SearchModelNG::SetLetterSpacing(frameNode, CalcDimension(value, (DimensionUnit)unit));
330 }
331 
ResetSearchLetterSpacing(ArkUINodeHandle node)332 void ResetSearchLetterSpacing(ArkUINodeHandle node)
333 {
334     auto* frameNode = reinterpret_cast<FrameNode*>(node);
335     CHECK_NULL_VOID(frameNode);
336     CalcDimension value;
337     value.Reset();
338     SearchModelNG::SetLetterSpacing(frameNode, value);
339 }
SetSearchLineHeight(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit)340 void SetSearchLineHeight(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit)
341 {
342     auto* frameNode = reinterpret_cast<FrameNode*>(node);
343     CHECK_NULL_VOID(frameNode);
344     SearchModelNG::SetLineHeight(frameNode, CalcDimension(value, (DimensionUnit)unit));
345 }
ResetSearchLineHeight(ArkUINodeHandle node)346 void ResetSearchLineHeight(ArkUINodeHandle node)
347 {
348     auto* frameNode = reinterpret_cast<FrameNode*>(node);
349     CHECK_NULL_VOID(frameNode);
350     CalcDimension value;
351     value.Reset();
352     SearchModelNG::SetLineHeight(frameNode, value);
353 }
354 
SetSearchAdaptMinFontSize(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit)355 void SetSearchAdaptMinFontSize(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit)
356 {
357     auto* frameNode = reinterpret_cast<FrameNode*>(node);
358     CHECK_NULL_VOID(frameNode);
359     SearchModelNG::SetAdaptMinFontSize(frameNode, CalcDimension(value, (DimensionUnit)unit));
360 }
361 
ResetSearchAdaptMinFontSize(ArkUINodeHandle node)362 void ResetSearchAdaptMinFontSize(ArkUINodeHandle node)
363 {
364     auto* frameNode = reinterpret_cast<FrameNode*>(node);
365     CHECK_NULL_VOID(frameNode);
366     auto pipelineContext = PipelineBase::GetCurrentContext();
367     CHECK_NULL_VOID(pipelineContext);
368     auto theme = pipelineContext->GetTheme<SearchTheme>();
369     CHECK_NULL_VOID(theme);
370     CalcDimension minFontSize = theme->GetTextStyle().GetAdaptMinFontSize();
371     SearchModelNG::SetAdaptMinFontSize(frameNode, minFontSize);
372 }
373 
SetSearchAdaptMaxFontSize(ArkUINodeHandle node,ArkUI_Float32 value,ArkUI_Int32 unit)374 void SetSearchAdaptMaxFontSize(ArkUINodeHandle node, ArkUI_Float32 value, ArkUI_Int32 unit)
375 {
376     auto* frameNode = reinterpret_cast<FrameNode*>(node);
377     CHECK_NULL_VOID(frameNode);
378     SearchModelNG::SetAdaptMaxFontSize(frameNode, CalcDimension(value, (DimensionUnit)unit));
379 }
380 
ResetSearchAdaptMaxFontSize(ArkUINodeHandle node)381 void ResetSearchAdaptMaxFontSize(ArkUINodeHandle node)
382 {
383     auto* frameNode = reinterpret_cast<FrameNode*>(node);
384     CHECK_NULL_VOID(frameNode);
385     auto pipelineContext = PipelineBase::GetCurrentContext();
386     CHECK_NULL_VOID(pipelineContext);
387     auto theme = pipelineContext->GetTheme<SearchTheme>();
388     CHECK_NULL_VOID(theme);
389     CalcDimension maxFontSize = theme->GetTextStyle().GetAdaptMaxFontSize();
390     SearchModelNG::SetAdaptMaxFontSize(frameNode, maxFontSize);
391 }
392 
SetSearchSelectedBackgroundColor(ArkUINodeHandle node,ArkUI_Uint32 color)393 void SetSearchSelectedBackgroundColor(ArkUINodeHandle node, ArkUI_Uint32 color)
394 {
395     auto* frameNode = reinterpret_cast<FrameNode*>(node);
396     CHECK_NULL_VOID(frameNode);
397     Color selectedColor = Color(color);
398     if (selectedColor.GetAlpha() == DEFAULT_ALPHA) {
399         // Default setting of 20% opacity
400         selectedColor = selectedColor.ChangeOpacity(DEFAULT_OPACITY);
401     }
402     SearchModelNG::SetSelectedBackgroundColor(frameNode, selectedColor);
403 }
404 
ResetSearchSelectedBackgroundColor(ArkUINodeHandle node)405 void ResetSearchSelectedBackgroundColor(ArkUINodeHandle node)
406 {
407     auto* frameNode = reinterpret_cast<FrameNode*>(node);
408     CHECK_NULL_VOID(frameNode);
409     Color selectedColor;
410     auto pipeline = PipelineBase::GetCurrentContext();
411     CHECK_NULL_VOID(pipeline);
412     auto theme = pipeline->GetTheme<TextFieldTheme>();
413     CHECK_NULL_VOID(theme);
414     selectedColor = theme->GetSelectedColor();
415     if (selectedColor.GetAlpha() == DEFAULT_ALPHA) {
416         // Default setting of 20% opacity
417         selectedColor = selectedColor.ChangeOpacity(DEFAULT_OPACITY);
418     }
419     SearchModelNG::SetSelectedBackgroundColor(frameNode, selectedColor);
420 }
421 
SetSearchTextIndent(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)422 void SetSearchTextIndent(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
423 {
424     auto* frameNode = reinterpret_cast<FrameNode*>(node);
425     CHECK_NULL_VOID(frameNode);
426     SearchModelNG::SetTextIndent(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
427 }
428 
ResetSearchTextIndent(ArkUINodeHandle node)429 void ResetSearchTextIndent(ArkUINodeHandle node)
430 {
431     auto* frameNode = reinterpret_cast<FrameNode*>(node);
432     CHECK_NULL_VOID(frameNode);
433     SearchModelNG::SetTextIndent(frameNode, CalcDimension(0, DimensionUnit::VP));
434 }
435 
SetSearchMaxLength(ArkUINodeHandle node,ArkUI_Int32 value)436 void SetSearchMaxLength(ArkUINodeHandle node, ArkUI_Int32 value)
437 {
438     auto *frameNode = reinterpret_cast<FrameNode *>(node);
439     CHECK_NULL_VOID(frameNode);
440     SearchModelNG::SetMaxLength(frameNode, value);
441 }
442 
ResetSearchMaxLength(ArkUINodeHandle node)443 void ResetSearchMaxLength(ArkUINodeHandle node)
444 {
445     auto *frameNode = reinterpret_cast<FrameNode *>(node);
446     CHECK_NULL_VOID(frameNode);
447     SearchModelNG::ResetMaxLength(frameNode);
448 }
449 
SetSearchType(ArkUINodeHandle node,ArkUI_Int32 value)450 void SetSearchType(ArkUINodeHandle node, ArkUI_Int32 value)
451 {
452     auto *frameNode = reinterpret_cast<FrameNode *>(node);
453     CHECK_NULL_VOID(frameNode);
454     SearchModelNG::SetType(frameNode, CastToTextInputType(value));
455 }
456 
ResetSearchType(ArkUINodeHandle node)457 void ResetSearchType(ArkUINodeHandle node)
458 {
459     auto *frameNode = reinterpret_cast<FrameNode *>(node);
460     CHECK_NULL_VOID(frameNode);
461     SearchModelNG::SetType(frameNode, Ace::TextInputType::TEXT);
462 }
463 
SetSearchOnEditChange(ArkUINodeHandle node,void * callback)464 void SetSearchOnEditChange(ArkUINodeHandle node, void* callback)
465 {
466     auto* frameNode = reinterpret_cast<FrameNode*>(node);
467     CHECK_NULL_VOID(frameNode);
468     if (callback) {
469         auto onEditChange = reinterpret_cast<std::function<void(bool)>*>(callback);
470         SearchModelNG::SetOnEditChange(frameNode, std::move(*onEditChange));
471     } else {
472         SearchModelNG::SetOnEditChange(frameNode, nullptr);
473     }
474 }
475 
ResetSearchOnEditChange(ArkUINodeHandle node)476 void ResetSearchOnEditChange(ArkUINodeHandle node)
477 {
478     auto* frameNode = reinterpret_cast<FrameNode*>(node);
479     CHECK_NULL_VOID(frameNode);
480     SearchModelNG::SetOnEditChange(frameNode, nullptr);
481 }
482 
SetSearchOnSubmitWithEvent(ArkUINodeHandle node,void * callback)483 void SetSearchOnSubmitWithEvent(ArkUINodeHandle node, void* callback)
484 {
485     auto* frameNode = reinterpret_cast<FrameNode*>(node);
486     CHECK_NULL_VOID(frameNode);
487     if (callback) {
488         auto onSubmit =
489             reinterpret_cast<std::function<void(const std::string&, NG::TextFieldCommonEvent&)>*>(callback);
490         SearchModelNG::SetOnSubmit(frameNode, std::move(*onSubmit));
491     } else {
492         SearchModelNG::SetOnSubmit(frameNode, nullptr);
493     }
494 }
495 
ResetSearchOnSubmitWithEvent(ArkUINodeHandle node)496 void ResetSearchOnSubmitWithEvent(ArkUINodeHandle node)
497 {
498     auto *frameNode = reinterpret_cast<FrameNode *>(node);
499     CHECK_NULL_VOID(frameNode);
500     SearchModelNG::SetOnSubmit(frameNode, nullptr);
501 }
502 
SetSearchOnCopy(ArkUINodeHandle node,void * callback)503 void SetSearchOnCopy(ArkUINodeHandle node, void* callback)
504 {
505     auto* frameNode = reinterpret_cast<FrameNode*>(node);
506     CHECK_NULL_VOID(frameNode);
507     if (callback) {
508         auto onCopy = reinterpret_cast<std::function<void(const std::string&)>*>(callback);
509         SearchModelNG::SetOnCopy(frameNode, std::move(*onCopy));
510     } else {
511         SearchModelNG::SetOnCopy(frameNode, nullptr);
512     }
513 }
514 
ResetSearchOnCopy(ArkUINodeHandle node)515 void ResetSearchOnCopy(ArkUINodeHandle node)
516 {
517     auto *frameNode = reinterpret_cast<FrameNode *>(node);
518     CHECK_NULL_VOID(frameNode);
519     SearchModelNG::SetOnCopy(frameNode, nullptr);
520 }
521 
SetSearchOnCut(ArkUINodeHandle node,void * callback)522 void SetSearchOnCut(ArkUINodeHandle node, void* callback)
523 {
524     auto* frameNode = reinterpret_cast<FrameNode*>(node);
525     CHECK_NULL_VOID(frameNode);
526     if (callback) {
527         auto onCut = reinterpret_cast<std::function<void(const std::string&)>*>(callback);
528         SearchModelNG::SetOnCut(frameNode, std::move(*onCut));
529     } else {
530         SearchModelNG::SetOnCut(frameNode, nullptr);
531     }
532 }
533 
ResetSearchOnCut(ArkUINodeHandle node)534 void ResetSearchOnCut(ArkUINodeHandle node)
535 {
536     auto *frameNode = reinterpret_cast<FrameNode *>(node);
537     CHECK_NULL_VOID(frameNode);
538     SearchModelNG::SetOnCut(frameNode, nullptr);
539 }
540 
SetSearchOnPaste(ArkUINodeHandle node,void * callback)541 void SetSearchOnPaste(ArkUINodeHandle node, void* callback)
542 {
543     auto* frameNode = reinterpret_cast<FrameNode*>(node);
544     CHECK_NULL_VOID(frameNode);
545     if (callback) {
546         auto onPasteWithEvent = reinterpret_cast<std::function<void(
547                 const std::string&, NG::TextCommonEvent&)>*>(callback);
548         SearchModelNG::SetOnPasteWithEvent(frameNode, std::move(*onPasteWithEvent));
549     } else {
550         SearchModelNG::SetOnPasteWithEvent(frameNode, nullptr);
551     }
552 }
553 
ResetSearchOnPaste(ArkUINodeHandle node)554 void ResetSearchOnPaste(ArkUINodeHandle node)
555 {
556     auto *frameNode = reinterpret_cast<FrameNode *>(node);
557     CHECK_NULL_VOID(frameNode);
558     SearchModelNG::SetOnPasteWithEvent(frameNode, nullptr);
559 }
560 
SetSearchOnChange(ArkUINodeHandle node,void * callback)561 void SetSearchOnChange(ArkUINodeHandle node, void* callback)
562 {
563     auto* frameNode = reinterpret_cast<FrameNode*>(node);
564     CHECK_NULL_VOID(frameNode);
565     if (callback) {
566         auto onSubmit = reinterpret_cast<std::function<void(const std::string&, PreviewText&)>*>(callback);
567         SearchModelNG::SetOnChange(frameNode, std::move(*onSubmit));
568     } else {
569         SearchModelNG::SetOnChange(frameNode, nullptr);
570     }
571 }
572 
ResetSearchOnChange(ArkUINodeHandle node)573 void ResetSearchOnChange(ArkUINodeHandle node)
574 {
575     auto *frameNode = reinterpret_cast<FrameNode *>(node);
576     CHECK_NULL_VOID(frameNode);
577     SearchModelNG::SetOnChange(frameNode, nullptr);
578 }
579 
SetSearchOnTextSelectionChange(ArkUINodeHandle node,void * callback)580 void SetSearchOnTextSelectionChange(ArkUINodeHandle node, void* callback)
581 {
582     auto* frameNode = reinterpret_cast<FrameNode*>(node);
583     CHECK_NULL_VOID(frameNode);
584     if (callback) {
585         auto onChange = reinterpret_cast<std::function<void(int32_t, int32_t)>*>(callback);
586         SearchModelNG::SetOnTextSelectionChange(frameNode, std::move(*onChange));
587     } else {
588         SearchModelNG::SetOnTextSelectionChange(frameNode, nullptr);
589     }
590 }
591 
ResetSearchOnTextSelectionChange(ArkUINodeHandle node)592 void ResetSearchOnTextSelectionChange(ArkUINodeHandle node)
593 {
594     auto *frameNode = reinterpret_cast<FrameNode *>(node);
595     CHECK_NULL_VOID(frameNode);
596     SearchModelNG::SetOnTextSelectionChange(frameNode, nullptr);
597 }
598 
SetSearchOnContentScroll(ArkUINodeHandle node,void * callback)599 void SetSearchOnContentScroll(ArkUINodeHandle node, void* callback)
600 {
601     auto* frameNode = reinterpret_cast<FrameNode*>(node);
602     CHECK_NULL_VOID(frameNode);
603     if (callback) {
604         auto onScroll = reinterpret_cast<std::function<void(float, float)>*>(callback);
605         SearchModelNG::SetOnContentScroll(frameNode, std::move(*onScroll));
606     } else {
607         SearchModelNG::SetOnContentScroll(frameNode, nullptr);
608     }
609 }
610 
ResetSearchOnContentScroll(ArkUINodeHandle node)611 void ResetSearchOnContentScroll(ArkUINodeHandle node)
612 {
613     auto *frameNode = reinterpret_cast<FrameNode *>(node);
614     CHECK_NULL_VOID(frameNode);
615     SearchModelNG::SetOnContentScroll(frameNode, nullptr);
616 }
617 
SetSearchShowCounterOptions(ArkUINodeHandle node,ArkUI_Bool open,ArkUI_Int32 thresholdPercentage,ArkUI_Bool highlightBorder)618 void SetSearchShowCounterOptions(
619     ArkUINodeHandle node, ArkUI_Bool open, ArkUI_Int32 thresholdPercentage, ArkUI_Bool highlightBorder)
620 {
621     auto* frameNode = reinterpret_cast<FrameNode*>(node);
622     CHECK_NULL_VOID(frameNode);
623     SearchModelNG::SetShowCounter(frameNode, open);
624     SearchModelNG::SetCounterType(frameNode, thresholdPercentage);
625     SearchModelNG::SetShowCounterBorder(frameNode, highlightBorder);
626 }
627 
ResetSearchShowCounterOptions(ArkUINodeHandle node)628 void ResetSearchShowCounterOptions(ArkUINodeHandle node)
629 {
630     auto *frameNode = reinterpret_cast<FrameNode *>(node);
631     CHECK_NULL_VOID(frameNode);
632     SearchModelNG::SetShowCounter(frameNode, false);
633     SearchModelNG::SetCounterType(frameNode, -1);
634     SearchModelNG::SetShowCounterBorder(frameNode, true);
635 }
636 
GetSearchController(ArkUINodeHandle node)637 ArkUINodeHandle GetSearchController(ArkUINodeHandle node)
638 {
639     auto* frameNode = reinterpret_cast<FrameNode*>(node);
640     CHECK_NULL_RETURN(frameNode, nullptr);
641     auto controller = SearchModelNG::GetSearchController(frameNode);
642     CHECK_NULL_RETURN(controller, nullptr);
643     auto nodecontroller = reinterpret_cast<ArkUINodeHandle>(OHOS::Ace::AceType::RawPtr(controller));
644     return nodecontroller;
645 }
646 
SetSearchValue(ArkUINodeHandle node,ArkUI_CharPtr value)647 void SetSearchValue(ArkUINodeHandle node, ArkUI_CharPtr value)
648 {
649     auto* frameNode = reinterpret_cast<FrameNode*>(node);
650     CHECK_NULL_VOID(frameNode);
651     std::optional<std::string> valueNG = value;
652 
653     SearchModelNG::SetTextValue(frameNode, valueNG);
654 }
655 
ResetSearchValue(ArkUINodeHandle node)656 void ResetSearchValue(ArkUINodeHandle node)
657 {
658     auto* frameNode = reinterpret_cast<FrameNode*>(node);
659     CHECK_NULL_VOID(frameNode);
660     SearchModelNG::SetTextValue(frameNode, "");
661 }
662 
SetSearchPlaceholder(ArkUINodeHandle node,ArkUI_CharPtr placeholder)663 void SetSearchPlaceholder(ArkUINodeHandle node, ArkUI_CharPtr placeholder)
664 {
665     auto* frameNode = reinterpret_cast<FrameNode*>(node);
666     CHECK_NULL_VOID(frameNode);
667     std::optional<std::string> placeholderNG = placeholder;
668 
669     SearchModelNG::SetPlaceholder(frameNode, placeholderNG);
670 }
671 
ResetSearchPlaceholder(ArkUINodeHandle node)672 void ResetSearchPlaceholder(ArkUINodeHandle node)
673 {
674     auto* frameNode = reinterpret_cast<FrameNode*>(node);
675     CHECK_NULL_VOID(frameNode);
676     SearchModelNG::SetPlaceholder(frameNode, "");
677 }
678 
SetSearchIcon(ArkUINodeHandle node,ArkUI_CharPtr icon)679 void SetSearchIcon(ArkUINodeHandle node, ArkUI_CharPtr icon)
680 {
681     auto* frameNode = reinterpret_cast<FrameNode*>(node);
682     CHECK_NULL_VOID(frameNode);
683     std::optional<std::string> iconNG = icon;
684 
685     SearchModelNG::SetIcon(frameNode, iconNG);
686 }
687 
ResetSearchIcon(ArkUINodeHandle node)688 void ResetSearchIcon(ArkUINodeHandle node)
689 {
690     auto* frameNode = reinterpret_cast<FrameNode*>(node);
691     CHECK_NULL_VOID(frameNode);
692     SearchModelNG::SetIcon(frameNode, "");
693 }
694 
SetSearchOnWillInsert(ArkUINodeHandle node,ArkUI_Int64 callback)695 void SetSearchOnWillInsert(ArkUINodeHandle node, ArkUI_Int64 callback)
696 {
697     auto* frameNode = reinterpret_cast<FrameNode*>(node);
698     CHECK_NULL_VOID(frameNode);
699     if (callback) {
700         auto onWillInsert = reinterpret_cast<std::function<bool(const InsertValueInfo&)>*>(callback);
701         SearchModelNG::SetOnWillInsertValueEvent(frameNode, std::move(*onWillInsert));
702     } else {
703         SearchModelNG::SetOnWillInsertValueEvent(frameNode, nullptr);
704     }
705 }
706 
ResetSearchOnWillInsert(ArkUINodeHandle node)707 void ResetSearchOnWillInsert(ArkUINodeHandle node)
708 {
709     auto *frameNode = reinterpret_cast<FrameNode *>(node);
710     CHECK_NULL_VOID(frameNode);
711     SearchModelNG::SetOnWillInsertValueEvent(frameNode, nullptr);
712 }
713 
SetSearchOnDidInsert(ArkUINodeHandle node,ArkUI_Int64 callback)714 void SetSearchOnDidInsert(ArkUINodeHandle node, ArkUI_Int64 callback)
715 {
716     auto* frameNode = reinterpret_cast<FrameNode*>(node);
717     CHECK_NULL_VOID(frameNode);
718     if (callback) {
719         auto onDidInsert = reinterpret_cast<std::function<void(const InsertValueInfo&)>*>(callback);
720         SearchModelNG::SetOnDidInsertValueEvent(frameNode, std::move(*onDidInsert));
721     } else {
722         SearchModelNG::SetOnDidInsertValueEvent(frameNode, nullptr);
723     }
724 }
725 
ResetSearchOnDidInsert(ArkUINodeHandle node)726 void ResetSearchOnDidInsert(ArkUINodeHandle node)
727 {
728     auto *frameNode = reinterpret_cast<FrameNode *>(node);
729     CHECK_NULL_VOID(frameNode);
730     SearchModelNG::SetOnDidInsertValueEvent(frameNode, nullptr);
731 }
732 
SetSearchOnWillDelete(ArkUINodeHandle node,ArkUI_Int64 callback)733 void SetSearchOnWillDelete(ArkUINodeHandle node, ArkUI_Int64 callback)
734 {
735     auto* frameNode = reinterpret_cast<FrameNode*>(node);
736     CHECK_NULL_VOID(frameNode);
737     if (callback) {
738         auto onWillDelete = reinterpret_cast<std::function<bool(const DeleteValueInfo&)>*>(callback);
739         SearchModelNG::SetOnWillDeleteEvent(frameNode, std::move(*onWillDelete));
740     } else {
741         SearchModelNG::SetOnWillDeleteEvent(frameNode, nullptr);
742     }
743 }
744 
ResetSearchOnWillDelete(ArkUINodeHandle node)745 void ResetSearchOnWillDelete(ArkUINodeHandle node)
746 {
747     auto *frameNode = reinterpret_cast<FrameNode *>(node);
748     CHECK_NULL_VOID(frameNode);
749     SearchModelNG::SetOnWillDeleteEvent(frameNode, nullptr);
750 }
751 
SetSearchOnDidDelete(ArkUINodeHandle node,ArkUI_Int64 callback)752 void SetSearchOnDidDelete(ArkUINodeHandle node, ArkUI_Int64 callback)
753 {
754     auto* frameNode = reinterpret_cast<FrameNode*>(node);
755     CHECK_NULL_VOID(frameNode);
756     if (callback) {
757         auto onDidDelete = reinterpret_cast<std::function<void(const DeleteValueInfo&)>*>(callback);
758         SearchModelNG::SetOnDidDeleteEvent(frameNode, std::move(*onDidDelete));
759     } else {
760         SearchModelNG::SetOnDidDeleteEvent(frameNode, nullptr);
761     }
762 }
763 
ResetSearchOnDidDelete(ArkUINodeHandle node)764 void ResetSearchOnDidDelete(ArkUINodeHandle node)
765 {
766     auto *frameNode = reinterpret_cast<FrameNode *>(node);
767     CHECK_NULL_VOID(frameNode);
768     SearchModelNG::SetOnDidDeleteEvent(frameNode, nullptr);
769 }
770 
SetSearchEnablePreviewText(ArkUINodeHandle node,ArkUI_Uint32 value)771 void SetSearchEnablePreviewText(ArkUINodeHandle node, ArkUI_Uint32 value)
772 {
773     auto *frameNode = reinterpret_cast<FrameNode *>(node);
774     CHECK_NULL_VOID(frameNode);
775     SearchModelNG::SetEnablePreviewText(frameNode, static_cast<bool>(value));
776 }
777 
ResetSearchEnablePreviewText(ArkUINodeHandle node)778 void ResetSearchEnablePreviewText(ArkUINodeHandle node)
779 {
780     auto *frameNode = reinterpret_cast<FrameNode *>(node);
781     CHECK_NULL_VOID(frameNode);
782     SearchModelNG::SetEnablePreviewText(frameNode, DEFAULT_ENABLE_PREVIEW_TEXT_VALUE);
783 }
784 
SetSearchCaretPosition(ArkUINodeHandle node,ArkUI_Int32 value)785 void SetSearchCaretPosition(ArkUINodeHandle node, ArkUI_Int32 value)
786 {
787     auto* frameNode = reinterpret_cast<FrameNode*>(node);
788     CHECK_NULL_VOID(frameNode);
789 
790     SearchModelNG::SetCaretPosition(frameNode, value);
791 }
792 
ResetSearchCaretPosition(ArkUINodeHandle node)793 void ResetSearchCaretPosition(ArkUINodeHandle node)
794 {
795     auto* frameNode = reinterpret_cast<FrameNode*>(node);
796     CHECK_NULL_VOID(frameNode);
797 
798     SearchModelNG::SetCaretPosition(frameNode, DEFAULT_CARET_POSITION);
799 }
800 
SetSearchSelectionMenuOptions(ArkUINodeHandle node,void * onCreateMenuCallback,void * onMenuItemClickCallback)801 void SetSearchSelectionMenuOptions(ArkUINodeHandle node, void* onCreateMenuCallback, void* onMenuItemClickCallback)
802 {
803     auto* frameNode = reinterpret_cast<FrameNode*>(node);
804     CHECK_NULL_VOID(frameNode);
805     NG::OnCreateMenuCallback* onCreateMenu = nullptr;
806     NG::OnMenuItemClickCallback* onMenuItemClick = nullptr;
807     if (onCreateMenuCallback) {
808         onCreateMenu = reinterpret_cast<NG::OnCreateMenuCallback*>(onCreateMenuCallback);
809         SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, std::move(*onCreateMenu));
810     } else {
811         SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, nullptr);
812     }
813     if (onMenuItemClickCallback) {
814         onMenuItemClick = reinterpret_cast<NG::OnMenuItemClickCallback*>(onMenuItemClickCallback);
815         SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, std::move(*onMenuItemClick));
816     } else {
817         SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, nullptr);
818     }
819 }
820 
ResetSearchSelectionMenuOptions(ArkUINodeHandle node)821 void ResetSearchSelectionMenuOptions(ArkUINodeHandle node)
822 {
823     auto* frameNode = reinterpret_cast<FrameNode*>(node);
824     CHECK_NULL_VOID(frameNode);
825     NG::OnCreateMenuCallback onCreateMenuCallback;
826     NG::OnMenuItemClickCallback onMenuItemClick;
827     SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, std::move(onCreateMenuCallback));
828     SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, std::move(onMenuItemClick));
829 }
830 
SetSearchInspectorId(ArkUINodeHandle node,ArkUI_CharPtr key)831 void SetSearchInspectorId(ArkUINodeHandle node, ArkUI_CharPtr key)
832 {
833     auto* frameNode = reinterpret_cast<FrameNode*>(node);
834     CHECK_NULL_VOID(frameNode);
835     SearchModelNG::SetId(frameNode, key);
836 }
837 
ResetSearchInspectorId(ArkUINodeHandle node)838 void ResetSearchInspectorId(ArkUINodeHandle node)
839 {
840     auto* frameNode = reinterpret_cast<FrameNode*>(node);
841     CHECK_NULL_VOID(frameNode);
842     SearchModelNG::SetId(frameNode, "");
843 }
844 
SetSearchEnableHapticFeedback(ArkUINodeHandle node,ArkUI_Uint32 value)845 void SetSearchEnableHapticFeedback(ArkUINodeHandle node, ArkUI_Uint32 value)
846 {
847     auto* frameNode = reinterpret_cast<FrameNode*>(node);
848     CHECK_NULL_VOID(frameNode);
849     SearchModelNG::SetEnableHapticFeedback(frameNode, static_cast<bool>(value));
850 }
851 
ResetSearchEnableHapticFeedback(ArkUINodeHandle node)852 void ResetSearchEnableHapticFeedback(ArkUINodeHandle node)
853 {
854     auto* frameNode = reinterpret_cast<FrameNode*>(node);
855     CHECK_NULL_VOID(frameNode);
856     SearchModelNG::SetEnableHapticFeedback(frameNode, DEFAULT_ENABLE_HAPTIC_FEEDBACK_VALUE);
857 }
858 
859 namespace NodeModifier {
GetSearchModifier()860 const ArkUISearchModifier* GetSearchModifier()
861 {
862     static const ArkUISearchModifier modifier = { SetSearchPlaceholderColor, ResetSearchPlaceholderColor,
863         SetSearchTextFont, ResetSearchTextFont, SetSearchSelectionMenuHidden, ResetSearchSelectionMenuHidden,
864         SetSearchCaretStyle, ResetSearchCaretStyle, SetSearchTextAlign, ResetSearchTextAlign, SetSearchCancelButton,
865         ResetSearchCancelButton, SetSearchEnableKeyboardOnFocus, ResetSearchEnableKeyboardOnFocus,
866         SetSearchPlaceholderFont, ResetSearchPlaceholderFont, SetSearchSearchIcon, ResetSearchSearchIcon,
867         SetSearchSearchButton, ResetSearchSearchButton, SetSearchFontColor, ResetSearchFontColor, SetSearchCopyOption,
868         ResetSearchCopyOption, SetSearchEnterKeyType, ResetSearchEnterKeyType, SetSearchHeight, ResetSearchHeight,
869         SetSearchFontFeature, ResetSearchFontFeature, SetSearchDecoration, ResetSearchDecoration,
870         SetSearchLetterSpacing, ResetSearchLetterSpacing, SetSearchLineHeight, ResetSearchLineHeight,
871         SetSearchAdaptMinFontSize, ResetSearchAdaptMinFontSize, SetSearchAdaptMaxFontSize, ResetSearchAdaptMaxFontSize,
872         SetSearchSelectedBackgroundColor, ResetSearchSelectedBackgroundColor, SetSearchTextIndent,
873         ResetSearchTextIndent, SetSearchMaxLength, ResetSearchMaxLength, SetSearchType, ResetSearchType,
874         SetSearchOnEditChange, ResetSearchOnEditChange, SetSearchOnSubmitWithEvent, ResetSearchOnSubmitWithEvent,
875         SetSearchOnCopy, ResetSearchOnCopy, SetSearchOnCut, ResetSearchOnCut, SetSearchOnPaste, ResetSearchOnPaste,
876         SetSearchOnChange, ResetSearchOnChange, SetSearchOnTextSelectionChange, ResetSearchOnTextSelectionChange,
877         SetSearchOnContentScroll, ResetSearchOnContentScroll, SetSearchShowCounterOptions,
878         ResetSearchShowCounterOptions, GetSearchController, SetSearchValue, ResetSearchValue, SetSearchPlaceholder,
879         ResetSearchPlaceholder, SetSearchIcon, ResetSearchIcon, SetSearchOnWillInsert, ResetSearchOnWillInsert,
880         SetSearchOnDidInsert, ResetSearchOnDidInsert, SetSearchOnWillDelete, ResetSearchOnWillDelete,
881         SetSearchOnDidDelete, ResetSearchOnDidDelete, SetSearchEnablePreviewText, ResetSearchEnablePreviewText,
882         SetSearchCaretPosition, ResetSearchCaretPosition, SetSearchSelectionMenuOptions,
883         ResetSearchSelectionMenuOptions, SetSearchInspectorId, ResetSearchInspectorId, SetSearchEnableHapticFeedback,
884         ResetSearchEnableHapticFeedback };
885     return &modifier;
886 }
887 
GetCJUISearchModifier()888 const CJUISearchModifier* GetCJUISearchModifier()
889 {
890     static const CJUISearchModifier modifier = { SetSearchPlaceholderColor, ResetSearchPlaceholderColor,
891         SetSearchTextFont, ResetSearchTextFont, SetSearchSelectionMenuHidden, ResetSearchSelectionMenuHidden,
892         SetSearchCaretStyle, ResetSearchCaretStyle, SetSearchTextAlign, ResetSearchTextAlign, SetSearchCancelButton,
893         ResetSearchCancelButton, SetSearchEnableKeyboardOnFocus, ResetSearchEnableKeyboardOnFocus,
894         SetSearchPlaceholderFont, ResetSearchPlaceholderFont, SetSearchSearchIcon, ResetSearchSearchIcon,
895         SetSearchSearchButton, ResetSearchSearchButton, SetSearchFontColor, ResetSearchFontColor, SetSearchCopyOption,
896         ResetSearchCopyOption, SetSearchEnterKeyType, ResetSearchEnterKeyType, SetSearchHeight, ResetSearchHeight,
897         SetSearchFontFeature, ResetSearchFontFeature, SetSearchDecoration, ResetSearchDecoration,
898         SetSearchLetterSpacing, ResetSearchLetterSpacing, SetSearchLineHeight, ResetSearchLineHeight,
899         SetSearchAdaptMinFontSize, ResetSearchAdaptMinFontSize,
900         SetSearchAdaptMaxFontSize, ResetSearchAdaptMaxFontSize,
901         SetSearchSelectedBackgroundColor, ResetSearchSelectedBackgroundColor, SetSearchTextIndent,
902         ResetSearchTextIndent,
903         SetSearchMaxLength, ResetSearchMaxLength, SetSearchType, ResetSearchType,
904         SetSearchOnEditChange, ResetSearchOnEditChange, SetSearchOnSubmitWithEvent, ResetSearchOnSubmitWithEvent,
905         SetSearchOnCopy, ResetSearchOnCopy, SetSearchOnCut, ResetSearchOnCut,
906         SetSearchOnPaste, ResetSearchOnPaste, SetSearchOnChange, ResetSearchOnChange,
907         SetSearchOnTextSelectionChange, ResetSearchOnTextSelectionChange,
908         SetSearchOnContentScroll, ResetSearchOnContentScroll,
909         SetSearchShowCounterOptions, ResetSearchShowCounterOptions, GetSearchController, SetSearchValue,
910         ResetSearchValue, SetSearchPlaceholder, ResetSearchPlaceholder, SetSearchIcon, ResetSearchIcon,
911         SetSearchOnWillInsert, ResetSearchOnWillInsert,
912         SetSearchOnDidInsert, ResetSearchOnDidInsert,
913         SetSearchOnWillDelete, ResetSearchOnWillDelete,
914         SetSearchOnDidDelete, ResetSearchOnDidDelete, SetSearchEnablePreviewText, ResetSearchEnablePreviewText,
915         SetSearchCaretPosition, ResetSearchCaretPosition };
916     return &modifier;
917 }
918 
SetOnSearchSubmit(ArkUINodeHandle node,void * extraParam)919 void SetOnSearchSubmit(ArkUINodeHandle node, void* extraParam)
920 {
921     auto* frameNode = reinterpret_cast<FrameNode*>(node);
922     CHECK_NULL_VOID(frameNode);
923     auto onEvent = [extraParam](const std::string& text, NG::TextFieldCommonEvent& commonEvent) {
924         ArkUINodeEvent event;
925         event.kind = TEXT_INPUT;
926         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
927         event.textInputEvent.subKind = ON_SEARCH_SUBMIT;
928         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
929         SendArkUIAsyncEvent(&event);
930     };
931     SearchModelNG::SetOnSubmit(frameNode, std::move(onEvent));
932 }
933 
SetOnSearchChange(ArkUINodeHandle node,void * extraParam)934 void SetOnSearchChange(ArkUINodeHandle node, void* extraParam)
935 {
936     auto* frameNode = reinterpret_cast<FrameNode*>(node);
937     CHECK_NULL_VOID(frameNode);
938     auto onEvent = [extraParam](const std::string& text, PreviewText&) {
939         ArkUINodeEvent event;
940         event.kind = TEXT_INPUT;
941         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
942         event.textInputEvent.subKind = ON_SEARCH_CHANGE;
943         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
944         SendArkUIAsyncEvent(&event);
945     };
946     SearchModelNG::SetOnChange(frameNode, std::move(onEvent));
947 }
948 
SetOnSearchCopy(ArkUINodeHandle node,void * extraParam)949 void SetOnSearchCopy(ArkUINodeHandle node, void* extraParam)
950 {
951     auto* frameNode = reinterpret_cast<FrameNode*>(node);
952     CHECK_NULL_VOID(frameNode);
953     auto onEvent = [extraParam](const std::string& text) {
954         ArkUINodeEvent event;
955         event.kind = TEXT_INPUT;
956         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
957         event.textInputEvent.subKind = ON_SEARCH_COPY;
958         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
959         SendArkUIAsyncEvent(&event);
960     };
961     SearchModelNG::SetOnCopy(frameNode, std::move(onEvent));
962 }
963 
SetOnSearchCut(ArkUINodeHandle node,void * extraParam)964 void SetOnSearchCut(ArkUINodeHandle node, void* extraParam)
965 {
966     auto* frameNode = reinterpret_cast<FrameNode*>(node);
967     CHECK_NULL_VOID(frameNode);
968     auto onEvent = [extraParam](const std::string& text) {
969         ArkUINodeEvent event;
970         event.kind = TEXT_INPUT;
971         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
972         event.textInputEvent.subKind = ON_SEARCH_CUT;
973         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
974         SendArkUIAsyncEvent(&event);
975     };
976     SearchModelNG::SetOnCut(frameNode, std::move(onEvent));
977 }
978 
SetOnSearchPaste(ArkUINodeHandle node,void * extraParam)979 void SetOnSearchPaste(ArkUINodeHandle node, void* extraParam)
980 {
981     auto* frameNode = reinterpret_cast<FrameNode*>(node);
982     CHECK_NULL_VOID(frameNode);
983     auto onEvent = [extraParam](const std::string& text, NG::TextCommonEvent& textEvent) {
984         ArkUINodeEvent event;
985         event.kind = TEXT_INPUT;
986         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
987         event.textInputEvent.subKind = ON_SEARCH_PASTE;
988         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
989         SendArkUIAsyncEvent(&event);
990     };
991     SearchModelNG::SetOnPasteWithEvent(frameNode, std::move(onEvent));
992 }
993 }
994 } // namespace OHOS::Ace::NG