• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 = reinterpret_cast<std::function<void(const std::string&)>*>(callback);
489         SearchModelNG::SetOnSubmit(frameNode, std::move(*onSubmit));
490     } else {
491         SearchModelNG::SetOnSubmit(frameNode, nullptr);
492     }
493 }
494 
ResetSearchOnSubmitWithEvent(ArkUINodeHandle node)495 void ResetSearchOnSubmitWithEvent(ArkUINodeHandle node)
496 {
497     auto *frameNode = reinterpret_cast<FrameNode *>(node);
498     CHECK_NULL_VOID(frameNode);
499     SearchModelNG::SetOnSubmit(frameNode, nullptr);
500 }
501 
SetSearchOnCopy(ArkUINodeHandle node,void * callback)502 void SetSearchOnCopy(ArkUINodeHandle node, void* callback)
503 {
504     auto* frameNode = reinterpret_cast<FrameNode*>(node);
505     CHECK_NULL_VOID(frameNode);
506     if (callback) {
507         auto onCopy = reinterpret_cast<std::function<void(const std::string&)>*>(callback);
508         SearchModelNG::SetOnCopy(frameNode, std::move(*onCopy));
509     } else {
510         SearchModelNG::SetOnCopy(frameNode, nullptr);
511     }
512 }
513 
ResetSearchOnCopy(ArkUINodeHandle node)514 void ResetSearchOnCopy(ArkUINodeHandle node)
515 {
516     auto *frameNode = reinterpret_cast<FrameNode *>(node);
517     CHECK_NULL_VOID(frameNode);
518     SearchModelNG::SetOnCopy(frameNode, nullptr);
519 }
520 
SetSearchOnCut(ArkUINodeHandle node,void * callback)521 void SetSearchOnCut(ArkUINodeHandle node, void* callback)
522 {
523     auto* frameNode = reinterpret_cast<FrameNode*>(node);
524     CHECK_NULL_VOID(frameNode);
525     if (callback) {
526         auto onCut = reinterpret_cast<std::function<void(const std::string&)>*>(callback);
527         SearchModelNG::SetOnCut(frameNode, std::move(*onCut));
528     } else {
529         SearchModelNG::SetOnCut(frameNode, nullptr);
530     }
531 }
532 
ResetSearchOnCut(ArkUINodeHandle node)533 void ResetSearchOnCut(ArkUINodeHandle node)
534 {
535     auto *frameNode = reinterpret_cast<FrameNode *>(node);
536     CHECK_NULL_VOID(frameNode);
537     SearchModelNG::SetOnCut(frameNode, nullptr);
538 }
539 
SetSearchOnPaste(ArkUINodeHandle node,void * callback)540 void SetSearchOnPaste(ArkUINodeHandle node, void* callback)
541 {
542     auto* frameNode = reinterpret_cast<FrameNode*>(node);
543     CHECK_NULL_VOID(frameNode);
544     if (callback) {
545         auto onPasteWithEvent = reinterpret_cast<std::function<void(
546                 const std::string&, NG::TextCommonEvent&)>*>(callback);
547         SearchModelNG::SetOnPasteWithEvent(frameNode, std::move(*onPasteWithEvent));
548     } else {
549         SearchModelNG::SetOnPasteWithEvent(frameNode, nullptr);
550     }
551 }
552 
ResetSearchOnPaste(ArkUINodeHandle node)553 void ResetSearchOnPaste(ArkUINodeHandle node)
554 {
555     auto *frameNode = reinterpret_cast<FrameNode *>(node);
556     CHECK_NULL_VOID(frameNode);
557     SearchModelNG::SetOnPasteWithEvent(frameNode, nullptr);
558 }
559 
SetSearchOnChange(ArkUINodeHandle node,void * callback)560 void SetSearchOnChange(ArkUINodeHandle node, void* callback)
561 {
562     auto* frameNode = reinterpret_cast<FrameNode*>(node);
563     CHECK_NULL_VOID(frameNode);
564     if (callback) {
565         auto onSubmit = reinterpret_cast<std::function<void(const std::string&, PreviewText&)>*>(callback);
566         SearchModelNG::SetOnChange(frameNode, std::move(*onSubmit));
567     } else {
568         SearchModelNG::SetOnChange(frameNode, nullptr);
569     }
570 }
571 
ResetSearchOnChange(ArkUINodeHandle node)572 void ResetSearchOnChange(ArkUINodeHandle node)
573 {
574     auto *frameNode = reinterpret_cast<FrameNode *>(node);
575     CHECK_NULL_VOID(frameNode);
576     SearchModelNG::SetOnChange(frameNode, nullptr);
577 }
578 
SetSearchOnTextSelectionChange(ArkUINodeHandle node,void * callback)579 void SetSearchOnTextSelectionChange(ArkUINodeHandle node, void* callback)
580 {
581     auto* frameNode = reinterpret_cast<FrameNode*>(node);
582     CHECK_NULL_VOID(frameNode);
583     if (callback) {
584         auto onChange = reinterpret_cast<std::function<void(int32_t, int32_t)>*>(callback);
585         SearchModelNG::SetOnTextSelectionChange(frameNode, std::move(*onChange));
586     } else {
587         SearchModelNG::SetOnTextSelectionChange(frameNode, nullptr);
588     }
589 }
590 
ResetSearchOnTextSelectionChange(ArkUINodeHandle node)591 void ResetSearchOnTextSelectionChange(ArkUINodeHandle node)
592 {
593     auto *frameNode = reinterpret_cast<FrameNode *>(node);
594     CHECK_NULL_VOID(frameNode);
595     SearchModelNG::SetOnTextSelectionChange(frameNode, nullptr);
596 }
597 
SetSearchOnContentScroll(ArkUINodeHandle node,void * callback)598 void SetSearchOnContentScroll(ArkUINodeHandle node, void* callback)
599 {
600     auto* frameNode = reinterpret_cast<FrameNode*>(node);
601     CHECK_NULL_VOID(frameNode);
602     if (callback) {
603         auto onScroll = reinterpret_cast<std::function<void(float, float)>*>(callback);
604         SearchModelNG::SetOnContentScroll(frameNode, std::move(*onScroll));
605     } else {
606         SearchModelNG::SetOnContentScroll(frameNode, nullptr);
607     }
608 }
609 
ResetSearchOnContentScroll(ArkUINodeHandle node)610 void ResetSearchOnContentScroll(ArkUINodeHandle node)
611 {
612     auto *frameNode = reinterpret_cast<FrameNode *>(node);
613     CHECK_NULL_VOID(frameNode);
614     SearchModelNG::SetOnContentScroll(frameNode, nullptr);
615 }
616 
SetSearchShowCounterOptions(ArkUINodeHandle node,ArkUI_Bool open,ArkUI_Int32 thresholdPercentage,ArkUI_Bool highlightBorder)617 void SetSearchShowCounterOptions(
618     ArkUINodeHandle node, ArkUI_Bool open, ArkUI_Int32 thresholdPercentage, ArkUI_Bool highlightBorder)
619 {
620     auto* frameNode = reinterpret_cast<FrameNode*>(node);
621     CHECK_NULL_VOID(frameNode);
622     SearchModelNG::SetShowCounter(frameNode, open);
623     SearchModelNG::SetCounterType(frameNode, thresholdPercentage);
624     SearchModelNG::SetShowCounterBorder(frameNode, highlightBorder);
625 }
626 
ResetSearchShowCounterOptions(ArkUINodeHandle node)627 void ResetSearchShowCounterOptions(ArkUINodeHandle node)
628 {
629     auto *frameNode = reinterpret_cast<FrameNode *>(node);
630     CHECK_NULL_VOID(frameNode);
631     SearchModelNG::SetShowCounter(frameNode, false);
632     SearchModelNG::SetCounterType(frameNode, -1);
633     SearchModelNG::SetShowCounterBorder(frameNode, true);
634 }
635 
GetSearchController(ArkUINodeHandle node)636 ArkUINodeHandle GetSearchController(ArkUINodeHandle node)
637 {
638     auto* frameNode = reinterpret_cast<FrameNode*>(node);
639     CHECK_NULL_RETURN(frameNode, nullptr);
640     auto controller = SearchModelNG::GetSearchController(frameNode);
641     CHECK_NULL_RETURN(controller, nullptr);
642     auto nodecontroller = reinterpret_cast<ArkUINodeHandle>(OHOS::Ace::AceType::RawPtr(controller));
643     return nodecontroller;
644 }
645 
SetSearchValue(ArkUINodeHandle node,ArkUI_CharPtr value)646 void SetSearchValue(ArkUINodeHandle node, ArkUI_CharPtr value)
647 {
648     auto* frameNode = reinterpret_cast<FrameNode*>(node);
649     CHECK_NULL_VOID(frameNode);
650     std::optional<std::string> valueNG = value;
651 
652     SearchModelNG::SetTextValue(frameNode, valueNG);
653 }
654 
ResetSearchValue(ArkUINodeHandle node)655 void ResetSearchValue(ArkUINodeHandle node)
656 {
657     auto* frameNode = reinterpret_cast<FrameNode*>(node);
658     CHECK_NULL_VOID(frameNode);
659     SearchModelNG::SetTextValue(frameNode, "");
660 }
661 
SetSearchPlaceholder(ArkUINodeHandle node,ArkUI_CharPtr placeholder)662 void SetSearchPlaceholder(ArkUINodeHandle node, ArkUI_CharPtr placeholder)
663 {
664     auto* frameNode = reinterpret_cast<FrameNode*>(node);
665     CHECK_NULL_VOID(frameNode);
666     std::optional<std::string> placeholderNG = placeholder;
667 
668     SearchModelNG::SetPlaceholder(frameNode, placeholderNG);
669 }
670 
ResetSearchPlaceholder(ArkUINodeHandle node)671 void ResetSearchPlaceholder(ArkUINodeHandle node)
672 {
673     auto* frameNode = reinterpret_cast<FrameNode*>(node);
674     CHECK_NULL_VOID(frameNode);
675     SearchModelNG::SetPlaceholder(frameNode, "");
676 }
677 
SetSearchIcon(ArkUINodeHandle node,ArkUI_CharPtr icon)678 void SetSearchIcon(ArkUINodeHandle node, ArkUI_CharPtr icon)
679 {
680     auto* frameNode = reinterpret_cast<FrameNode*>(node);
681     CHECK_NULL_VOID(frameNode);
682     std::optional<std::string> iconNG = icon;
683 
684     SearchModelNG::SetIcon(frameNode, iconNG);
685 }
686 
ResetSearchIcon(ArkUINodeHandle node)687 void ResetSearchIcon(ArkUINodeHandle node)
688 {
689     auto* frameNode = reinterpret_cast<FrameNode*>(node);
690     CHECK_NULL_VOID(frameNode);
691     SearchModelNG::SetIcon(frameNode, "");
692 }
693 
SetSearchOnWillInsert(ArkUINodeHandle node,ArkUI_Int64 callback)694 void SetSearchOnWillInsert(ArkUINodeHandle node, ArkUI_Int64 callback)
695 {
696     auto* frameNode = reinterpret_cast<FrameNode*>(node);
697     CHECK_NULL_VOID(frameNode);
698     if (callback) {
699         auto onWillInsert = reinterpret_cast<std::function<bool(const InsertValueInfo&)>*>(callback);
700         SearchModelNG::SetOnWillInsertValueEvent(frameNode, std::move(*onWillInsert));
701     } else {
702         SearchModelNG::SetOnWillInsertValueEvent(frameNode, nullptr);
703     }
704 }
705 
ResetSearchOnWillInsert(ArkUINodeHandle node)706 void ResetSearchOnWillInsert(ArkUINodeHandle node)
707 {
708     auto *frameNode = reinterpret_cast<FrameNode *>(node);
709     CHECK_NULL_VOID(frameNode);
710     SearchModelNG::SetOnWillInsertValueEvent(frameNode, nullptr);
711 }
712 
SetSearchOnDidInsert(ArkUINodeHandle node,ArkUI_Int64 callback)713 void SetSearchOnDidInsert(ArkUINodeHandle node, ArkUI_Int64 callback)
714 {
715     auto* frameNode = reinterpret_cast<FrameNode*>(node);
716     CHECK_NULL_VOID(frameNode);
717     if (callback) {
718         auto onDidInsert = reinterpret_cast<std::function<void(const InsertValueInfo&)>*>(callback);
719         SearchModelNG::SetOnDidInsertValueEvent(frameNode, std::move(*onDidInsert));
720     } else {
721         SearchModelNG::SetOnDidInsertValueEvent(frameNode, nullptr);
722     }
723 }
724 
ResetSearchOnDidInsert(ArkUINodeHandle node)725 void ResetSearchOnDidInsert(ArkUINodeHandle node)
726 {
727     auto *frameNode = reinterpret_cast<FrameNode *>(node);
728     CHECK_NULL_VOID(frameNode);
729     SearchModelNG::SetOnDidInsertValueEvent(frameNode, nullptr);
730 }
731 
SetSearchOnWillDelete(ArkUINodeHandle node,ArkUI_Int64 callback)732 void SetSearchOnWillDelete(ArkUINodeHandle node, ArkUI_Int64 callback)
733 {
734     auto* frameNode = reinterpret_cast<FrameNode*>(node);
735     CHECK_NULL_VOID(frameNode);
736     if (callback) {
737         auto onWillDelete = reinterpret_cast<std::function<bool(const DeleteValueInfo&)>*>(callback);
738         SearchModelNG::SetOnWillDeleteEvent(frameNode, std::move(*onWillDelete));
739     } else {
740         SearchModelNG::SetOnWillDeleteEvent(frameNode, nullptr);
741     }
742 }
743 
ResetSearchOnWillDelete(ArkUINodeHandle node)744 void ResetSearchOnWillDelete(ArkUINodeHandle node)
745 {
746     auto *frameNode = reinterpret_cast<FrameNode *>(node);
747     CHECK_NULL_VOID(frameNode);
748     SearchModelNG::SetOnWillDeleteEvent(frameNode, nullptr);
749 }
750 
SetSearchOnDidDelete(ArkUINodeHandle node,ArkUI_Int64 callback)751 void SetSearchOnDidDelete(ArkUINodeHandle node, ArkUI_Int64 callback)
752 {
753     auto* frameNode = reinterpret_cast<FrameNode*>(node);
754     CHECK_NULL_VOID(frameNode);
755     if (callback) {
756         auto onDidDelete = reinterpret_cast<std::function<void(const DeleteValueInfo&)>*>(callback);
757         SearchModelNG::SetOnDidDeleteEvent(frameNode, std::move(*onDidDelete));
758     } else {
759         SearchModelNG::SetOnDidDeleteEvent(frameNode, nullptr);
760     }
761 }
762 
ResetSearchOnDidDelete(ArkUINodeHandle node)763 void ResetSearchOnDidDelete(ArkUINodeHandle node)
764 {
765     auto *frameNode = reinterpret_cast<FrameNode *>(node);
766     CHECK_NULL_VOID(frameNode);
767     SearchModelNG::SetOnDidDeleteEvent(frameNode, nullptr);
768 }
769 
SetSearchEnablePreviewText(ArkUINodeHandle node,ArkUI_Uint32 value)770 void SetSearchEnablePreviewText(ArkUINodeHandle node, ArkUI_Uint32 value)
771 {
772     auto *frameNode = reinterpret_cast<FrameNode *>(node);
773     CHECK_NULL_VOID(frameNode);
774     SearchModelNG::SetEnablePreviewText(frameNode, static_cast<bool>(value));
775 }
776 
ResetSearchEnablePreviewText(ArkUINodeHandle node)777 void ResetSearchEnablePreviewText(ArkUINodeHandle node)
778 {
779     auto *frameNode = reinterpret_cast<FrameNode *>(node);
780     CHECK_NULL_VOID(frameNode);
781     SearchModelNG::SetEnablePreviewText(frameNode, DEFAULT_ENABLE_PREVIEW_TEXT_VALUE);
782 }
783 
SetSearchCaretPosition(ArkUINodeHandle node,ArkUI_Int32 value)784 void SetSearchCaretPosition(ArkUINodeHandle node, ArkUI_Int32 value)
785 {
786     auto* frameNode = reinterpret_cast<FrameNode*>(node);
787     CHECK_NULL_VOID(frameNode);
788 
789     SearchModelNG::SetCaretPosition(frameNode, value);
790 }
791 
ResetSearchCaretPosition(ArkUINodeHandle node)792 void ResetSearchCaretPosition(ArkUINodeHandle node)
793 {
794     auto* frameNode = reinterpret_cast<FrameNode*>(node);
795     CHECK_NULL_VOID(frameNode);
796 
797     SearchModelNG::SetCaretPosition(frameNode, DEFAULT_CARET_POSITION);
798 }
799 
SetSearchSelectionMenuOptions(ArkUINodeHandle node,void * onCreateMenuCallback,void * onMenuItemClickCallback)800 void SetSearchSelectionMenuOptions(ArkUINodeHandle node, void* onCreateMenuCallback, void* onMenuItemClickCallback)
801 {
802     auto* frameNode = reinterpret_cast<FrameNode*>(node);
803     CHECK_NULL_VOID(frameNode);
804     NG::OnCreateMenuCallback* onCreateMenu = nullptr;
805     NG::OnMenuItemClickCallback* onMenuItemClick = nullptr;
806     if (onCreateMenuCallback) {
807         onCreateMenu = reinterpret_cast<NG::OnCreateMenuCallback*>(onCreateMenuCallback);
808         SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, std::move(*onCreateMenu));
809     } else {
810         SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, nullptr);
811     }
812     if (onMenuItemClickCallback) {
813         onMenuItemClick = reinterpret_cast<NG::OnMenuItemClickCallback*>(onMenuItemClickCallback);
814         SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, std::move(*onMenuItemClick));
815     } else {
816         SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, nullptr);
817     }
818 }
819 
ResetSearchSelectionMenuOptions(ArkUINodeHandle node)820 void ResetSearchSelectionMenuOptions(ArkUINodeHandle node)
821 {
822     auto* frameNode = reinterpret_cast<FrameNode*>(node);
823     CHECK_NULL_VOID(frameNode);
824     NG::OnCreateMenuCallback onCreateMenuCallback;
825     NG::OnMenuItemClickCallback onMenuItemClick;
826     SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, std::move(onCreateMenuCallback));
827     SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, std::move(onMenuItemClick));
828 }
829 
SetSearchInspectorId(ArkUINodeHandle node,ArkUI_CharPtr key)830 void SetSearchInspectorId(ArkUINodeHandle node, ArkUI_CharPtr key)
831 {
832     auto* frameNode = reinterpret_cast<FrameNode*>(node);
833     CHECK_NULL_VOID(frameNode);
834     SearchModelNG::SetId(frameNode, key);
835 }
836 
ResetSearchInspectorId(ArkUINodeHandle node)837 void ResetSearchInspectorId(ArkUINodeHandle node)
838 {
839     auto* frameNode = reinterpret_cast<FrameNode*>(node);
840     CHECK_NULL_VOID(frameNode);
841     SearchModelNG::SetId(frameNode, "");
842 }
843 
SetSearchEnableHapticFeedback(ArkUINodeHandle node,ArkUI_Uint32 value)844 void SetSearchEnableHapticFeedback(ArkUINodeHandle node, ArkUI_Uint32 value)
845 {
846     auto* frameNode = reinterpret_cast<FrameNode*>(node);
847     CHECK_NULL_VOID(frameNode);
848     SearchModelNG::SetEnableHapticFeedback(frameNode, static_cast<bool>(value));
849 }
850 
ResetSearchEnableHapticFeedback(ArkUINodeHandle node)851 void ResetSearchEnableHapticFeedback(ArkUINodeHandle node)
852 {
853     auto* frameNode = reinterpret_cast<FrameNode*>(node);
854     CHECK_NULL_VOID(frameNode);
855     SearchModelNG::SetEnableHapticFeedback(frameNode, DEFAULT_ENABLE_HAPTIC_FEEDBACK_VALUE);
856 }
857 
858 namespace NodeModifier {
GetSearchModifier()859 const ArkUISearchModifier* GetSearchModifier()
860 {
861     static const ArkUISearchModifier modifier = { SetSearchPlaceholderColor, ResetSearchPlaceholderColor,
862         SetSearchTextFont, ResetSearchTextFont, SetSearchSelectionMenuHidden, ResetSearchSelectionMenuHidden,
863         SetSearchCaretStyle, ResetSearchCaretStyle, SetSearchTextAlign, ResetSearchTextAlign, SetSearchCancelButton,
864         ResetSearchCancelButton, SetSearchEnableKeyboardOnFocus, ResetSearchEnableKeyboardOnFocus,
865         SetSearchPlaceholderFont, ResetSearchPlaceholderFont, SetSearchSearchIcon, ResetSearchSearchIcon,
866         SetSearchSearchButton, ResetSearchSearchButton, SetSearchFontColor, ResetSearchFontColor, SetSearchCopyOption,
867         ResetSearchCopyOption, SetSearchEnterKeyType, ResetSearchEnterKeyType, SetSearchHeight, ResetSearchHeight,
868         SetSearchFontFeature, ResetSearchFontFeature, SetSearchDecoration, ResetSearchDecoration,
869         SetSearchLetterSpacing, ResetSearchLetterSpacing, SetSearchLineHeight, ResetSearchLineHeight,
870         SetSearchAdaptMinFontSize, ResetSearchAdaptMinFontSize, SetSearchAdaptMaxFontSize, ResetSearchAdaptMaxFontSize,
871         SetSearchSelectedBackgroundColor, ResetSearchSelectedBackgroundColor, SetSearchTextIndent,
872         ResetSearchTextIndent, SetSearchMaxLength, ResetSearchMaxLength, SetSearchType, ResetSearchType,
873         SetSearchOnEditChange, ResetSearchOnEditChange, SetSearchOnSubmitWithEvent, ResetSearchOnSubmitWithEvent,
874         SetSearchOnCopy, ResetSearchOnCopy, SetSearchOnCut, ResetSearchOnCut, SetSearchOnPaste, ResetSearchOnPaste,
875         SetSearchOnChange, ResetSearchOnChange, SetSearchOnTextSelectionChange, ResetSearchOnTextSelectionChange,
876         SetSearchOnContentScroll, ResetSearchOnContentScroll, SetSearchShowCounterOptions,
877         ResetSearchShowCounterOptions, GetSearchController, SetSearchValue, ResetSearchValue, SetSearchPlaceholder,
878         ResetSearchPlaceholder, SetSearchIcon, ResetSearchIcon, SetSearchOnWillInsert, ResetSearchOnWillInsert,
879         SetSearchOnDidInsert, ResetSearchOnDidInsert, SetSearchOnWillDelete, ResetSearchOnWillDelete,
880         SetSearchOnDidDelete, ResetSearchOnDidDelete, SetSearchEnablePreviewText, ResetSearchEnablePreviewText,
881         SetSearchCaretPosition, ResetSearchCaretPosition, SetSearchSelectionMenuOptions,
882         ResetSearchSelectionMenuOptions, SetSearchInspectorId, ResetSearchInspectorId, SetSearchEnableHapticFeedback,
883         ResetSearchEnableHapticFeedback };
884     return &modifier;
885 }
886 
GetCJUISearchModifier()887 const CJUISearchModifier* GetCJUISearchModifier()
888 {
889     static const CJUISearchModifier modifier = { SetSearchPlaceholderColor, ResetSearchPlaceholderColor,
890         SetSearchTextFont, ResetSearchTextFont, SetSearchSelectionMenuHidden, ResetSearchSelectionMenuHidden,
891         SetSearchCaretStyle, ResetSearchCaretStyle, SetSearchTextAlign, ResetSearchTextAlign, SetSearchCancelButton,
892         ResetSearchCancelButton, SetSearchEnableKeyboardOnFocus, ResetSearchEnableKeyboardOnFocus,
893         SetSearchPlaceholderFont, ResetSearchPlaceholderFont, SetSearchSearchIcon, ResetSearchSearchIcon,
894         SetSearchSearchButton, ResetSearchSearchButton, SetSearchFontColor, ResetSearchFontColor, SetSearchCopyOption,
895         ResetSearchCopyOption, SetSearchEnterKeyType, ResetSearchEnterKeyType, SetSearchHeight, ResetSearchHeight,
896         SetSearchFontFeature, ResetSearchFontFeature, SetSearchDecoration, ResetSearchDecoration,
897         SetSearchLetterSpacing, ResetSearchLetterSpacing, SetSearchLineHeight, ResetSearchLineHeight,
898         SetSearchAdaptMinFontSize, ResetSearchAdaptMinFontSize,
899         SetSearchAdaptMaxFontSize, ResetSearchAdaptMaxFontSize,
900         SetSearchSelectedBackgroundColor, ResetSearchSelectedBackgroundColor, SetSearchTextIndent,
901         ResetSearchTextIndent,
902         SetSearchMaxLength, ResetSearchMaxLength, SetSearchType, ResetSearchType,
903         SetSearchOnEditChange, ResetSearchOnEditChange, SetSearchOnSubmitWithEvent, ResetSearchOnSubmitWithEvent,
904         SetSearchOnCopy, ResetSearchOnCopy, SetSearchOnCut, ResetSearchOnCut,
905         SetSearchOnPaste, ResetSearchOnPaste, SetSearchOnChange, ResetSearchOnChange,
906         SetSearchOnTextSelectionChange, ResetSearchOnTextSelectionChange,
907         SetSearchOnContentScroll, ResetSearchOnContentScroll,
908         SetSearchShowCounterOptions, ResetSearchShowCounterOptions, GetSearchController, SetSearchValue,
909         ResetSearchValue, SetSearchPlaceholder, ResetSearchPlaceholder, SetSearchIcon, ResetSearchIcon,
910         SetSearchOnWillInsert, ResetSearchOnWillInsert,
911         SetSearchOnDidInsert, ResetSearchOnDidInsert,
912         SetSearchOnWillDelete, ResetSearchOnWillDelete,
913         SetSearchOnDidDelete, ResetSearchOnDidDelete, SetSearchEnablePreviewText, ResetSearchEnablePreviewText,
914         SetSearchCaretPosition, ResetSearchCaretPosition };
915     return &modifier;
916 }
917 
SetOnSearchSubmit(ArkUINodeHandle node,void * extraParam)918 void SetOnSearchSubmit(ArkUINodeHandle node, void* extraParam)
919 {
920     auto* frameNode = reinterpret_cast<FrameNode*>(node);
921     CHECK_NULL_VOID(frameNode);
922     auto onEvent = [node, extraParam](const std::string& text) {
923         ArkUINodeEvent event;
924         event.kind = TEXT_INPUT;
925         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
926         event.textInputEvent.subKind = ON_SEARCH_SUBMIT;
927         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
928         SendArkUIAsyncEvent(&event);
929     };
930     SearchModelNG::SetOnSubmit(frameNode, std::move(onEvent));
931 }
932 
SetOnSearchChange(ArkUINodeHandle node,void * extraParam)933 void SetOnSearchChange(ArkUINodeHandle node, void* extraParam)
934 {
935     auto* frameNode = reinterpret_cast<FrameNode*>(node);
936     CHECK_NULL_VOID(frameNode);
937     auto onEvent = [node, extraParam](const std::string& text, PreviewText&) {
938         ArkUINodeEvent event;
939         event.kind = TEXT_INPUT;
940         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
941         event.textInputEvent.subKind = ON_SEARCH_CHANGE;
942         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
943         SendArkUIAsyncEvent(&event);
944     };
945     SearchModelNG::SetOnChange(frameNode, std::move(onEvent));
946 }
947 
SetOnSearchCopy(ArkUINodeHandle node,void * extraParam)948 void SetOnSearchCopy(ArkUINodeHandle node, void* extraParam)
949 {
950     auto* frameNode = reinterpret_cast<FrameNode*>(node);
951     CHECK_NULL_VOID(frameNode);
952     auto onEvent = [node, extraParam](const std::string& text) {
953         ArkUINodeEvent event;
954         event.kind = TEXT_INPUT;
955         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
956         event.textInputEvent.subKind = ON_SEARCH_COPY;
957         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
958         SendArkUIAsyncEvent(&event);
959     };
960     SearchModelNG::SetOnCopy(frameNode, std::move(onEvent));
961 }
962 
SetOnSearchCut(ArkUINodeHandle node,void * extraParam)963 void SetOnSearchCut(ArkUINodeHandle node, void* extraParam)
964 {
965     auto* frameNode = reinterpret_cast<FrameNode*>(node);
966     CHECK_NULL_VOID(frameNode);
967     auto onEvent = [node, extraParam](const std::string& text) {
968         ArkUINodeEvent event;
969         event.kind = TEXT_INPUT;
970         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
971         event.textInputEvent.subKind = ON_SEARCH_CUT;
972         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
973         SendArkUIAsyncEvent(&event);
974     };
975     SearchModelNG::SetOnCut(frameNode, std::move(onEvent));
976 }
977 
SetOnSearchPaste(ArkUINodeHandle node,void * extraParam)978 void SetOnSearchPaste(ArkUINodeHandle node, void* extraParam)
979 {
980     auto* frameNode = reinterpret_cast<FrameNode*>(node);
981     CHECK_NULL_VOID(frameNode);
982     auto onEvent = [node, extraParam](const std::string& text, NG::TextCommonEvent& textEvent) {
983         ArkUINodeEvent event;
984         event.kind = TEXT_INPUT;
985         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
986         event.textInputEvent.subKind = ON_SEARCH_PASTE;
987         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
988         SendArkUIAsyncEvent(&event);
989     };
990     SearchModelNG::SetOnPasteWithEvent(frameNode, std::move(onEvent));
991 }
992 }
993 } // namespace OHOS::Ace::NG