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