• 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 =
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 ChangeValueInfo&)>*>(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 
SetSearchOnWillChange(ArkUINodeHandle node,ArkUI_Int64 callback)695 void SetSearchOnWillChange(ArkUINodeHandle node, ArkUI_Int64 callback)
696 {
697     auto* frameNode = reinterpret_cast<FrameNode*>(node);
698     CHECK_NULL_VOID(frameNode);
699     if (callback) {
700         auto onWillChange = reinterpret_cast<std::function<bool(const ChangeValueInfo&)>*>(callback);
701         SearchModelNG::SetOnWillChangeEvent(frameNode, std::move(*onWillChange));
702     } else {
703         SearchModelNG::SetOnWillChangeEvent(frameNode, nullptr);
704     }
705 }
706 
ResetSearchOnWillChange(ArkUINodeHandle node)707 void ResetSearchOnWillChange(ArkUINodeHandle node)
708 {
709     auto *frameNode = reinterpret_cast<FrameNode *>(node);
710     CHECK_NULL_VOID(frameNode);
711     SearchModelNG::SetOnWillChangeEvent(frameNode, nullptr);
712 }
713 
SetSearchOnWillInsert(ArkUINodeHandle node,ArkUI_Int64 callback)714 void SetSearchOnWillInsert(ArkUINodeHandle node, ArkUI_Int64 callback)
715 {
716     auto* frameNode = reinterpret_cast<FrameNode*>(node);
717     CHECK_NULL_VOID(frameNode);
718     if (callback) {
719         auto onWillInsert = reinterpret_cast<std::function<bool(const InsertValueInfo&)>*>(callback);
720         SearchModelNG::SetOnWillInsertValueEvent(frameNode, std::move(*onWillInsert));
721     } else {
722         SearchModelNG::SetOnWillInsertValueEvent(frameNode, nullptr);
723     }
724 }
725 
ResetSearchOnWillInsert(ArkUINodeHandle node)726 void ResetSearchOnWillInsert(ArkUINodeHandle node)
727 {
728     auto *frameNode = reinterpret_cast<FrameNode *>(node);
729     CHECK_NULL_VOID(frameNode);
730     SearchModelNG::SetOnWillInsertValueEvent(frameNode, nullptr);
731 }
732 
SetSearchOnDidInsert(ArkUINodeHandle node,ArkUI_Int64 callback)733 void SetSearchOnDidInsert(ArkUINodeHandle node, ArkUI_Int64 callback)
734 {
735     auto* frameNode = reinterpret_cast<FrameNode*>(node);
736     CHECK_NULL_VOID(frameNode);
737     if (callback) {
738         auto onDidInsert = reinterpret_cast<std::function<void(const InsertValueInfo&)>*>(callback);
739         SearchModelNG::SetOnDidInsertValueEvent(frameNode, std::move(*onDidInsert));
740     } else {
741         SearchModelNG::SetOnDidInsertValueEvent(frameNode, nullptr);
742     }
743 }
744 
ResetSearchOnDidInsert(ArkUINodeHandle node)745 void ResetSearchOnDidInsert(ArkUINodeHandle node)
746 {
747     auto *frameNode = reinterpret_cast<FrameNode *>(node);
748     CHECK_NULL_VOID(frameNode);
749     SearchModelNG::SetOnDidInsertValueEvent(frameNode, nullptr);
750 }
751 
SetSearchOnWillDelete(ArkUINodeHandle node,ArkUI_Int64 callback)752 void SetSearchOnWillDelete(ArkUINodeHandle node, ArkUI_Int64 callback)
753 {
754     auto* frameNode = reinterpret_cast<FrameNode*>(node);
755     CHECK_NULL_VOID(frameNode);
756     if (callback) {
757         auto onWillDelete = reinterpret_cast<std::function<bool(const DeleteValueInfo&)>*>(callback);
758         SearchModelNG::SetOnWillDeleteEvent(frameNode, std::move(*onWillDelete));
759     } else {
760         SearchModelNG::SetOnWillDeleteEvent(frameNode, nullptr);
761     }
762 }
763 
ResetSearchOnWillDelete(ArkUINodeHandle node)764 void ResetSearchOnWillDelete(ArkUINodeHandle node)
765 {
766     auto *frameNode = reinterpret_cast<FrameNode *>(node);
767     CHECK_NULL_VOID(frameNode);
768     SearchModelNG::SetOnWillDeleteEvent(frameNode, nullptr);
769 }
770 
SetSearchOnDidDelete(ArkUINodeHandle node,ArkUI_Int64 callback)771 void SetSearchOnDidDelete(ArkUINodeHandle node, ArkUI_Int64 callback)
772 {
773     auto* frameNode = reinterpret_cast<FrameNode*>(node);
774     CHECK_NULL_VOID(frameNode);
775     if (callback) {
776         auto onDidDelete = reinterpret_cast<std::function<void(const DeleteValueInfo&)>*>(callback);
777         SearchModelNG::SetOnDidDeleteEvent(frameNode, std::move(*onDidDelete));
778     } else {
779         SearchModelNG::SetOnDidDeleteEvent(frameNode, nullptr);
780     }
781 }
782 
ResetSearchOnDidDelete(ArkUINodeHandle node)783 void ResetSearchOnDidDelete(ArkUINodeHandle node)
784 {
785     auto *frameNode = reinterpret_cast<FrameNode *>(node);
786     CHECK_NULL_VOID(frameNode);
787     SearchModelNG::SetOnDidDeleteEvent(frameNode, nullptr);
788 }
789 
SetSearchEnablePreviewText(ArkUINodeHandle node,ArkUI_Uint32 value)790 void SetSearchEnablePreviewText(ArkUINodeHandle node, ArkUI_Uint32 value)
791 {
792     auto *frameNode = reinterpret_cast<FrameNode *>(node);
793     CHECK_NULL_VOID(frameNode);
794     SearchModelNG::SetEnablePreviewText(frameNode, static_cast<bool>(value));
795 }
796 
ResetSearchEnablePreviewText(ArkUINodeHandle node)797 void ResetSearchEnablePreviewText(ArkUINodeHandle node)
798 {
799     auto *frameNode = reinterpret_cast<FrameNode *>(node);
800     CHECK_NULL_VOID(frameNode);
801     SearchModelNG::SetEnablePreviewText(frameNode, DEFAULT_ENABLE_PREVIEW_TEXT_VALUE);
802 }
803 
SetSearchCaretPosition(ArkUINodeHandle node,ArkUI_Int32 value)804 void SetSearchCaretPosition(ArkUINodeHandle node, ArkUI_Int32 value)
805 {
806     auto* frameNode = reinterpret_cast<FrameNode*>(node);
807     CHECK_NULL_VOID(frameNode);
808 
809     SearchModelNG::SetCaretPosition(frameNode, value);
810 }
811 
ResetSearchCaretPosition(ArkUINodeHandle node)812 void ResetSearchCaretPosition(ArkUINodeHandle node)
813 {
814     auto* frameNode = reinterpret_cast<FrameNode*>(node);
815     CHECK_NULL_VOID(frameNode);
816 
817     SearchModelNG::SetCaretPosition(frameNode, DEFAULT_CARET_POSITION);
818 }
819 
SetSearchSelectionMenuOptions(ArkUINodeHandle node,void * onCreateMenuCallback,void * onMenuItemClickCallback)820 void SetSearchSelectionMenuOptions(ArkUINodeHandle node, void* onCreateMenuCallback, void* onMenuItemClickCallback)
821 {
822     auto* frameNode = reinterpret_cast<FrameNode*>(node);
823     CHECK_NULL_VOID(frameNode);
824     NG::OnCreateMenuCallback* onCreateMenu = nullptr;
825     NG::OnMenuItemClickCallback* onMenuItemClick = nullptr;
826     if (onCreateMenuCallback) {
827         onCreateMenu = reinterpret_cast<NG::OnCreateMenuCallback*>(onCreateMenuCallback);
828         SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, std::move(*onCreateMenu));
829     } else {
830         SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, nullptr);
831     }
832     if (onMenuItemClickCallback) {
833         onMenuItemClick = reinterpret_cast<NG::OnMenuItemClickCallback*>(onMenuItemClickCallback);
834         SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, std::move(*onMenuItemClick));
835     } else {
836         SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, nullptr);
837     }
838 }
839 
ResetSearchSelectionMenuOptions(ArkUINodeHandle node)840 void ResetSearchSelectionMenuOptions(ArkUINodeHandle node)
841 {
842     auto* frameNode = reinterpret_cast<FrameNode*>(node);
843     CHECK_NULL_VOID(frameNode);
844     NG::OnCreateMenuCallback onCreateMenuCallback;
845     NG::OnMenuItemClickCallback onMenuItemClick;
846     SearchModelNG::OnCreateMenuCallbackUpdate(frameNode, std::move(onCreateMenuCallback));
847     SearchModelNG::OnMenuItemClickCallbackUpdate(frameNode, std::move(onMenuItemClick));
848 }
849 
SetSearchInspectorId(ArkUINodeHandle node,ArkUI_CharPtr key)850 void SetSearchInspectorId(ArkUINodeHandle node, ArkUI_CharPtr key)
851 {
852     auto* frameNode = reinterpret_cast<FrameNode*>(node);
853     CHECK_NULL_VOID(frameNode);
854     SearchModelNG::SetId(frameNode, key);
855 }
856 
ResetSearchInspectorId(ArkUINodeHandle node)857 void ResetSearchInspectorId(ArkUINodeHandle node)
858 {
859     auto* frameNode = reinterpret_cast<FrameNode*>(node);
860     CHECK_NULL_VOID(frameNode);
861     SearchModelNG::SetId(frameNode, "");
862 }
863 
SetSearchEnableHapticFeedback(ArkUINodeHandle node,ArkUI_Uint32 value)864 void SetSearchEnableHapticFeedback(ArkUINodeHandle node, ArkUI_Uint32 value)
865 {
866     auto* frameNode = reinterpret_cast<FrameNode*>(node);
867     CHECK_NULL_VOID(frameNode);
868     SearchModelNG::SetEnableHapticFeedback(frameNode, static_cast<bool>(value));
869 }
870 
ResetSearchEnableHapticFeedback(ArkUINodeHandle node)871 void ResetSearchEnableHapticFeedback(ArkUINodeHandle node)
872 {
873     auto* frameNode = reinterpret_cast<FrameNode*>(node);
874     CHECK_NULL_VOID(frameNode);
875     SearchModelNG::SetEnableHapticFeedback(frameNode, DEFAULT_ENABLE_HAPTIC_FEEDBACK_VALUE);
876 }
877 
SetStopBackPress(ArkUINodeHandle node,ArkUI_Uint32 value)878 void SetStopBackPress(ArkUINodeHandle node, ArkUI_Uint32 value)
879 {
880     auto* frameNode = reinterpret_cast<FrameNode*>(node);
881     CHECK_NULL_VOID(frameNode);
882     SearchModelNG::SetStopBackPress(frameNode, static_cast<bool>(value));
883 }
884 
ResetStopBackPress(ArkUINodeHandle node)885 void ResetStopBackPress(ArkUINodeHandle node)
886 {
887     auto* frameNode = reinterpret_cast<FrameNode*>(node);
888     CHECK_NULL_VOID(frameNode);
889     SearchModelNG::SetStopBackPress(frameNode, true);
890 }
891 
892 namespace NodeModifier {
GetSearchModifier()893 const ArkUISearchModifier* GetSearchModifier()
894 {
895     static const ArkUISearchModifier modifier = { SetSearchPlaceholderColor, ResetSearchPlaceholderColor,
896         SetSearchTextFont, ResetSearchTextFont, SetSearchSelectionMenuHidden, ResetSearchSelectionMenuHidden,
897         SetSearchCaretStyle, ResetSearchCaretStyle, SetSearchTextAlign, ResetSearchTextAlign, SetSearchCancelButton,
898         ResetSearchCancelButton, SetSearchEnableKeyboardOnFocus, ResetSearchEnableKeyboardOnFocus,
899         SetSearchPlaceholderFont, ResetSearchPlaceholderFont, SetSearchSearchIcon, ResetSearchSearchIcon,
900         SetSearchSearchButton, ResetSearchSearchButton, SetSearchFontColor, ResetSearchFontColor, SetSearchCopyOption,
901         ResetSearchCopyOption, SetSearchEnterKeyType, ResetSearchEnterKeyType, SetSearchHeight, ResetSearchHeight,
902         SetSearchFontFeature, ResetSearchFontFeature, SetSearchDecoration, ResetSearchDecoration,
903         SetSearchLetterSpacing, ResetSearchLetterSpacing, SetSearchLineHeight, ResetSearchLineHeight,
904         SetSearchAdaptMinFontSize, ResetSearchAdaptMinFontSize, SetSearchAdaptMaxFontSize, ResetSearchAdaptMaxFontSize,
905         SetSearchSelectedBackgroundColor, ResetSearchSelectedBackgroundColor, SetSearchTextIndent,
906         ResetSearchTextIndent, SetSearchMaxLength, ResetSearchMaxLength, SetSearchType, ResetSearchType,
907         SetSearchOnEditChange, ResetSearchOnEditChange, SetSearchOnSubmitWithEvent, ResetSearchOnSubmitWithEvent,
908         SetSearchOnCopy, ResetSearchOnCopy, SetSearchOnCut, ResetSearchOnCut, SetSearchOnPaste, ResetSearchOnPaste,
909         SetSearchOnChange, ResetSearchOnChange, SetSearchOnTextSelectionChange, ResetSearchOnTextSelectionChange,
910         SetSearchOnContentScroll, ResetSearchOnContentScroll, SetSearchShowCounterOptions,
911         ResetSearchShowCounterOptions, GetSearchController, SetSearchValue, ResetSearchValue, SetSearchPlaceholder,
912         ResetSearchPlaceholder, SetSearchIcon, ResetSearchIcon, SetSearchOnWillInsert, ResetSearchOnWillInsert,
913         SetSearchOnDidInsert, ResetSearchOnDidInsert, SetSearchOnWillDelete, ResetSearchOnWillDelete,
914         SetSearchOnDidDelete, ResetSearchOnDidDelete, SetSearchEnablePreviewText, ResetSearchEnablePreviewText,
915         SetSearchCaretPosition, ResetSearchCaretPosition, SetSearchSelectionMenuOptions,
916         ResetSearchSelectionMenuOptions, SetSearchInspectorId, ResetSearchInspectorId, SetSearchEnableHapticFeedback,
917         ResetSearchEnableHapticFeedback, SetStopBackPress, ResetStopBackPress, SetSearchKeyboardAppearance,
918         ResetSearchKeyboardAppearance, SetSearchOnWillChange, ResetSearchOnWillChange };
919     return &modifier;
920 }
921 
GetCJUISearchModifier()922 const CJUISearchModifier* GetCJUISearchModifier()
923 {
924     static const CJUISearchModifier modifier = { SetSearchPlaceholderColor, ResetSearchPlaceholderColor,
925         SetSearchTextFont, ResetSearchTextFont, SetSearchSelectionMenuHidden, ResetSearchSelectionMenuHidden,
926         SetSearchCaretStyle, ResetSearchCaretStyle, SetSearchTextAlign, ResetSearchTextAlign, SetSearchCancelButton,
927         ResetSearchCancelButton, SetSearchEnableKeyboardOnFocus, ResetSearchEnableKeyboardOnFocus,
928         SetSearchPlaceholderFont, ResetSearchPlaceholderFont, SetSearchSearchIcon, ResetSearchSearchIcon,
929         SetSearchSearchButton, ResetSearchSearchButton, SetSearchFontColor, ResetSearchFontColor, SetSearchCopyOption,
930         ResetSearchCopyOption, SetSearchEnterKeyType, ResetSearchEnterKeyType, SetSearchHeight, ResetSearchHeight,
931         SetSearchFontFeature, ResetSearchFontFeature, SetSearchDecoration, ResetSearchDecoration,
932         SetSearchLetterSpacing, ResetSearchLetterSpacing, SetSearchLineHeight, ResetSearchLineHeight,
933         SetSearchAdaptMinFontSize, ResetSearchAdaptMinFontSize,
934         SetSearchAdaptMaxFontSize, ResetSearchAdaptMaxFontSize,
935         SetSearchSelectedBackgroundColor, ResetSearchSelectedBackgroundColor, SetSearchTextIndent,
936         ResetSearchTextIndent,
937         SetSearchMaxLength, ResetSearchMaxLength, SetSearchType, ResetSearchType,
938         SetSearchOnEditChange, ResetSearchOnEditChange, SetSearchOnSubmitWithEvent, ResetSearchOnSubmitWithEvent,
939         SetSearchOnCopy, ResetSearchOnCopy, SetSearchOnCut, ResetSearchOnCut,
940         SetSearchOnPaste, ResetSearchOnPaste, SetSearchOnChange, ResetSearchOnChange,
941         SetSearchOnTextSelectionChange, ResetSearchOnTextSelectionChange,
942         SetSearchOnContentScroll, ResetSearchOnContentScroll,
943         SetSearchShowCounterOptions, ResetSearchShowCounterOptions, GetSearchController, SetSearchValue,
944         ResetSearchValue, SetSearchPlaceholder, ResetSearchPlaceholder, SetSearchIcon, ResetSearchIcon,
945         SetSearchOnWillInsert, ResetSearchOnWillInsert,
946         SetSearchOnDidInsert, ResetSearchOnDidInsert,
947         SetSearchOnWillDelete, ResetSearchOnWillDelete,
948         SetSearchOnDidDelete, ResetSearchOnDidDelete, SetSearchEnablePreviewText, ResetSearchEnablePreviewText,
949         SetSearchCaretPosition, ResetSearchCaretPosition };
950     return &modifier;
951 }
952 
SetOnSearchSubmit(ArkUINodeHandle node,void * extraParam)953 void SetOnSearchSubmit(ArkUINodeHandle node, void* extraParam)
954 {
955     auto* frameNode = reinterpret_cast<FrameNode*>(node);
956     CHECK_NULL_VOID(frameNode);
957     auto onEvent = [extraParam](const std::string& text, NG::TextFieldCommonEvent& commonEvent) {
958         ArkUINodeEvent event;
959         event.kind = TEXT_INPUT;
960         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
961         event.textInputEvent.subKind = ON_SEARCH_SUBMIT;
962         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
963         SendArkUIAsyncEvent(&event);
964     };
965     SearchModelNG::SetOnSubmit(frameNode, std::move(onEvent));
966 }
967 
SetOnSearchChange(ArkUINodeHandle node,void * extraParam)968 void SetOnSearchChange(ArkUINodeHandle node, void* extraParam)
969 {
970     auto* frameNode = reinterpret_cast<FrameNode*>(node);
971     CHECK_NULL_VOID(frameNode);
972     auto onEvent = [extraParam](const ChangeValueInfo& info) {
973         ArkUINodeEvent event;
974         event.kind = TEXT_INPUT;
975         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
976         event.textInputEvent.subKind = ON_SEARCH_CHANGE;
977         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(info.value.c_str());
978         SendArkUIAsyncEvent(&event);
979     };
980     SearchModelNG::SetOnChange(frameNode, std::move(onEvent));
981 }
982 
SetOnSearchCopy(ArkUINodeHandle node,void * extraParam)983 void SetOnSearchCopy(ArkUINodeHandle node, void* extraParam)
984 {
985     auto* frameNode = reinterpret_cast<FrameNode*>(node);
986     CHECK_NULL_VOID(frameNode);
987     auto onEvent = [extraParam](const std::string& text) {
988         ArkUINodeEvent event;
989         event.kind = TEXT_INPUT;
990         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
991         event.textInputEvent.subKind = ON_SEARCH_COPY;
992         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
993         SendArkUIAsyncEvent(&event);
994     };
995     SearchModelNG::SetOnCopy(frameNode, std::move(onEvent));
996 }
997 
SetOnSearchCut(ArkUINodeHandle node,void * extraParam)998 void SetOnSearchCut(ArkUINodeHandle node, void* extraParam)
999 {
1000     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1001     CHECK_NULL_VOID(frameNode);
1002     auto onEvent = [extraParam](const std::string& text) {
1003         ArkUINodeEvent event;
1004         event.kind = TEXT_INPUT;
1005         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
1006         event.textInputEvent.subKind = ON_SEARCH_CUT;
1007         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
1008         SendArkUIAsyncEvent(&event);
1009     };
1010     SearchModelNG::SetOnCut(frameNode, std::move(onEvent));
1011 }
1012 
SetOnSearchPaste(ArkUINodeHandle node,void * extraParam)1013 void SetOnSearchPaste(ArkUINodeHandle node, void* extraParam)
1014 {
1015     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1016     CHECK_NULL_VOID(frameNode);
1017     auto onEvent = [extraParam](const std::string& text, NG::TextCommonEvent& textEvent) {
1018         ArkUINodeEvent event;
1019         event.kind = TEXT_INPUT;
1020         event.extraParam = reinterpret_cast<intptr_t>(extraParam);
1021         event.textInputEvent.subKind = ON_SEARCH_PASTE;
1022         event.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(text.c_str());
1023         SendArkUIAsyncEvent(&event);
1024     };
1025     SearchModelNG::SetOnPasteWithEvent(frameNode, std::move(onEvent));
1026 }
1027 
SetSearchKeyboardAppearance(ArkUINodeHandle node,ArkUI_Uint32 keyboardAppearance)1028 void SetSearchKeyboardAppearance(ArkUINodeHandle node, ArkUI_Uint32 keyboardAppearance)
1029 {
1030     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1031     CHECK_NULL_VOID(frameNode);
1032     auto value = static_cast<KeyboardAppearance>(keyboardAppearance);
1033     SearchModelNG::SetKeyboardAppearance(frameNode, value);
1034 }
1035 
ResetSearchKeyboardAppearance(ArkUINodeHandle node)1036 void ResetSearchKeyboardAppearance(ArkUINodeHandle node)
1037 {
1038     auto* frameNode = reinterpret_cast<FrameNode*>(node);
1039     CHECK_NULL_VOID(frameNode);
1040     auto value = KeyboardAppearance::NONE_IMMERSIVE;
1041     SearchModelNG::SetKeyboardAppearance(frameNode, value);
1042 }
1043 }
1044 } // namespace OHOS::Ace::NG