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