1 /*
2 * Copyright (c) 2023-2024 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/components_ng/pattern/rich_editor/rich_editor_event_hub.h"
16 #include "base/utils/utf_helper.h"
17 #include "interfaces/inner_api/ui_session/ui_session_manager.h"
18
19 #include "core/components_ng/pattern/rich_editor/rich_editor_pattern.h"
20
21 namespace OHOS::Ace::NG {
SetInsertOffset(int32_t insertOffset)22 void RichEditorInsertValue::SetInsertOffset(int32_t insertOffset)
23 {
24 insertOffset_ = insertOffset;
25 }
26
GetInsertOffset() const27 int32_t RichEditorInsertValue::GetInsertOffset() const
28 {
29 return insertOffset_;
30 }
31
SetInsertValue(const std::u16string & insertValue)32 void RichEditorInsertValue::SetInsertValue(const std::u16string& insertValue)
33 {
34 insertValue_ = insertValue;
35 }
36
SetPreviewText(const std::u16string & previewText)37 void RichEditorInsertValue::SetPreviewText(const std::u16string& previewText)
38 {
39 previewText_ = previewText;
40 }
41
GetInsertValue() const42 const std::u16string& RichEditorInsertValue::GetInsertValue() const
43 {
44 return insertValue_;
45 }
46
GetPreviewText() const47 const std::u16string& RichEditorInsertValue::GetPreviewText() const
48 {
49 return previewText_;
50 }
51
SetSpanIndex(int32_t spanIndex)52 void RichEditorAbstractSpanResult::SetSpanIndex(int32_t spanIndex)
53 {
54 spanIndex_ = spanIndex;
55 }
56
GetSpanIndex() const57 int32_t RichEditorAbstractSpanResult::GetSpanIndex() const
58 {
59 return spanIndex_;
60 }
61
SetSpanRangeStart(int32_t spanRangeStart)62 void RichEditorAbstractSpanResult::SetSpanRangeStart(int32_t spanRangeStart)
63 {
64 spanRangeStart_ = spanRangeStart;
65 }
66
GetSpanRangeStart() const67 int32_t RichEditorAbstractSpanResult::GetSpanRangeStart() const
68 {
69 return spanRangeStart_;
70 }
71
SetSpanRangeEnd(int32_t spanRangeEnd)72 void RichEditorAbstractSpanResult::SetSpanRangeEnd(int32_t spanRangeEnd)
73 {
74 spanRangeEnd_ = spanRangeEnd;
75 }
76
GetSpanRangeEnd() const77 int32_t RichEditorAbstractSpanResult::GetSpanRangeEnd() const
78 {
79 return spanRangeEnd_;
80 }
81
SetSpanType(SpanResultType spanType)82 void RichEditorAbstractSpanResult::SetSpanType(SpanResultType spanType)
83 {
84 spanType_ = spanType;
85 }
86
GetType() const87 SpanResultType RichEditorAbstractSpanResult::GetType() const
88 {
89 return spanType_;
90 }
91
SetOffsetInSpan(int32_t offsetInSpan)92 void RichEditorAbstractSpanResult::SetOffsetInSpan(int32_t offsetInSpan)
93 {
94 offsetInSpan_ = offsetInSpan;
95 }
96
OffsetInSpan() const97 int32_t RichEditorAbstractSpanResult::OffsetInSpan() const
98 {
99 return offsetInSpan_;
100 }
101
SetEraseLength(int32_t eraseLength)102 void RichEditorAbstractSpanResult::SetEraseLength(int32_t eraseLength)
103 {
104 eraseLength_ = eraseLength;
105 }
106
GetEraseLength() const107 int32_t RichEditorAbstractSpanResult::GetEraseLength() const
108 {
109 return eraseLength_;
110 }
111
SetValue(const std::u16string & value)112 void RichEditorAbstractSpanResult::SetValue(const std::u16string& value)
113 {
114 value_ = value;
115 }
116
GetValue() const117 const std::u16string& RichEditorAbstractSpanResult::GetValue() const
118 {
119 return value_;
120 }
121
SetPreviewText(const std::u16string & previewText)122 void RichEditorAbstractSpanResult::SetPreviewText(const std::u16string& previewText)
123 {
124 previewText_ = previewText;
125 }
126
GetPreviewText() const127 const std::u16string& RichEditorAbstractSpanResult::GetPreviewText() const
128 {
129 return previewText_;
130 }
131
SetFontColor(const std::string & fontColor)132 void RichEditorAbstractSpanResult::SetFontColor(const std::string& fontColor)
133 {
134 fontColor_ = fontColor;
135 }
136
SetFontFeature(const FONT_FEATURES_LIST & fontFeature)137 void RichEditorAbstractSpanResult::SetFontFeature(const FONT_FEATURES_LIST& fontFeature)
138 {
139 fontFeature_ = fontFeature;
140 }
141
GetFontFeatures() const142 const FONT_FEATURES_LIST& RichEditorAbstractSpanResult::GetFontFeatures() const
143 {
144 return fontFeature_;
145 }
146
SetTextStyle(TextStyleResult textStyle)147 void RichEditorAbstractSpanResult::SetTextStyle(TextStyleResult textStyle)
148 {
149 textStyle_ = textStyle;
150 }
151
GetTextStyle() const152 TextStyleResult RichEditorAbstractSpanResult::GetTextStyle() const
153 {
154 return textStyle_;
155 }
156
SetLineHeight(double lineHeight)157 void RichEditorAbstractSpanResult::SetLineHeight(double lineHeight)
158 {
159 lineHeight_ = lineHeight;
160 }
161
GetLineHeight() const162 double RichEditorAbstractSpanResult::GetLineHeight() const
163 {
164 return lineHeight_;
165 }
166
SetHalfLeading(bool halfLeading)167 void RichEditorAbstractSpanResult::SetHalfLeading(bool halfLeading)
168 {
169 halfLeading_ = halfLeading;
170 }
171
GetHalfLeading() const172 bool RichEditorAbstractSpanResult::GetHalfLeading() const
173 {
174 return halfLeading_;
175 }
176
SetLetterspacing(double letterSpacing)177 void RichEditorAbstractSpanResult::SetLetterspacing(double letterSpacing)
178 {
179 letterSpacing_ = letterSpacing;
180 }
181
GetLetterspacing() const182 double RichEditorAbstractSpanResult::GetLetterspacing() const
183 {
184 return letterSpacing_;
185 }
186
GetFontColor() const187 const std::string& RichEditorAbstractSpanResult::GetFontColor() const
188 {
189 return fontColor_;
190 }
191
SetFontSize(double fontSize)192 void RichEditorAbstractSpanResult::SetFontSize(double fontSize)
193 {
194 fontSize_ = fontSize;
195 }
196
GetFontSize() const197 double RichEditorAbstractSpanResult::GetFontSize() const
198 {
199 return fontSize_;
200 }
201
SetValueResource(const RefPtr<ResourceObject> & valueResource)202 void RichEditorAbstractSpanResult::SetValueResource(const RefPtr<ResourceObject>& valueResource)
203 {
204 valueResource_ = valueResource;
205 }
206
GetValueResource() const207 const RefPtr<ResourceObject> RichEditorAbstractSpanResult::GetValueResource() const
208 {
209 return valueResource_;
210 }
211
SetValueString(const std::string & valueString)212 void RichEditorAbstractSpanResult::SetValueString(const std::string& valueString)
213 {
214 valueString_ = valueString;
215 }
216
GetValueString() const217 const std::string RichEditorAbstractSpanResult::GetValueString() const
218 {
219 return valueString_;
220 }
221
SetSymbolSpanStyle(const SymbolSpanStyle & symbolSpanStyle)222 void RichEditorAbstractSpanResult::SetSymbolSpanStyle(const SymbolSpanStyle& symbolSpanStyle)
223 {
224 symbolSpanStyle_ = symbolSpanStyle;
225 }
226
GetSymbolSpanStyle() const227 const SymbolSpanStyle RichEditorAbstractSpanResult::GetSymbolSpanStyle() const
228 {
229 return symbolSpanStyle_;
230 }
231
SetFontWeight(int32_t fontWeigth)232 void RichEditorAbstractSpanResult::SetFontWeight(int32_t fontWeigth)
233 {
234 fontWeigth_ = fontWeigth;
235 }
236
GetFontWeight() const237 int32_t RichEditorAbstractSpanResult::GetFontWeight() const
238 {
239 return fontWeigth_;
240 }
241
SetFontFamily(const std::string & fontFamily)242 void RichEditorAbstractSpanResult::SetFontFamily(const std::string& fontFamily)
243 {
244 fontFamily_ = fontFamily;
245 }
246
GetFontFamily() const247 const std::string& RichEditorAbstractSpanResult::GetFontFamily() const
248 {
249 return fontFamily_;
250 }
251
SetTextDecoration(TextDecoration textDecoration)252 void RichEditorAbstractSpanResult::SetTextDecoration(TextDecoration textDecoration)
253 {
254 textDecoration_ = textDecoration;
255 }
256
GetTextDecoration() const257 TextDecoration RichEditorAbstractSpanResult::GetTextDecoration() const
258 {
259 return textDecoration_;
260 }
261
SetColor(const std::string & color)262 void RichEditorAbstractSpanResult::SetColor(const std::string& color)
263 {
264 color_ = color;
265 }
266
GetColor() const267 const std::string& RichEditorAbstractSpanResult::GetColor() const
268 {
269 return color_;
270 }
271
SetTextDecorationStyle(TextDecorationStyle textDecorationStyle)272 void RichEditorAbstractSpanResult::SetTextDecorationStyle(TextDecorationStyle textDecorationStyle)
273 {
274 textDecorationStyle_ = textDecorationStyle;
275 }
276
GetTextDecorationStyle() const277 TextDecorationStyle RichEditorAbstractSpanResult::GetTextDecorationStyle() const
278 {
279 return textDecorationStyle_;
280 }
281
SetLineThicknessScale(float thicknessScale)282 void RichEditorAbstractSpanResult::SetLineThicknessScale(float thicknessScale)
283 {
284 lineThicknessScale_ = thicknessScale;
285 }
286
GetLineThicknessScale() const287 float RichEditorAbstractSpanResult::GetLineThicknessScale() const
288 {
289 return lineThicknessScale_;
290 }
291
SetValuePixelMap(const RefPtr<PixelMap> & valuePixelMap)292 void RichEditorAbstractSpanResult::SetValuePixelMap(const RefPtr<PixelMap>& valuePixelMap)
293 {
294 valuePixelMap_ = valuePixelMap;
295 }
296
GetValuePixelMap() const297 const RefPtr<PixelMap>& RichEditorAbstractSpanResult::GetValuePixelMap() const
298 {
299 return valuePixelMap_;
300 }
301
SetValueResourceStr(const std::string valueResourceStr)302 void RichEditorAbstractSpanResult::SetValueResourceStr(const std::string valueResourceStr)
303 {
304 valueResourceStr_ = valueResourceStr;
305 }
306
GetValueResourceStr() const307 const std::string& RichEditorAbstractSpanResult::GetValueResourceStr() const
308 {
309 return valueResourceStr_;
310 }
311
SetSizeWidth(int32_t width)312 void RichEditorAbstractSpanResult::SetSizeWidth(int32_t width)
313 {
314 width_ = width;
315 }
316
GetSizeWidth() const317 int32_t RichEditorAbstractSpanResult::GetSizeWidth() const
318 {
319 return width_;
320 }
321
SetSizeHeight(int32_t height)322 void RichEditorAbstractSpanResult::SetSizeHeight(int32_t height)
323 {
324 height_ = height;
325 }
326
GetSizeHeight() const327 int32_t RichEditorAbstractSpanResult::GetSizeHeight() const
328 {
329 return height_;
330 }
331
SetVerticalAlign(VerticalAlign verticalAlign)332 void RichEditorAbstractSpanResult::SetVerticalAlign(VerticalAlign verticalAlign)
333 {
334 verticalAlign_ = verticalAlign;
335 }
336
GetVerticalAlign() const337 VerticalAlign RichEditorAbstractSpanResult::GetVerticalAlign() const
338 {
339 return verticalAlign_;
340 }
341
SetImageFit(ImageFit objectFit)342 void RichEditorAbstractSpanResult::SetImageFit(ImageFit objectFit)
343 {
344 objectFit_ = objectFit;
345 }
346
GetObjectFit() const347 ImageFit RichEditorAbstractSpanResult::GetObjectFit() const
348 {
349 return objectFit_;
350 }
351
SetUrlAddress(const std::u16string & urlAddress)352 void RichEditorAbstractSpanResult::SetUrlAddress(const std::u16string& urlAddress)
353 {
354 urlAddress_ = urlAddress;
355 }
356
GetUrlAddress() const357 const std::u16string& RichEditorAbstractSpanResult::GetUrlAddress() const
358 {
359 return urlAddress_;
360 }
361
SetOffset(int32_t offset)362 void RichEditorDeleteValue::SetOffset(int32_t offset)
363 {
364 offset_ = offset;
365 }
366
GetOffset() const367 int32_t RichEditorDeleteValue::GetOffset() const
368 {
369 return offset_;
370 }
371
SetRichEditorDeleteDirection(RichEditorDeleteDirection direction)372 void RichEditorDeleteValue::SetRichEditorDeleteDirection(RichEditorDeleteDirection direction)
373 {
374 direction_ = direction;
375 }
376
GetRichEditorDeleteDirection() const377 RichEditorDeleteDirection RichEditorDeleteValue::GetRichEditorDeleteDirection() const
378 {
379 return direction_;
380 }
381
SetLength(int32_t length)382 void RichEditorDeleteValue::SetLength(int32_t length)
383 {
384 length_ = length;
385 }
386
GetLength() const387 int32_t RichEditorDeleteValue::GetLength() const
388 {
389 return length_;
390 }
391
SetRichEditorDeleteSpans(const RichEditorAbstractSpanResult & deleteSpan)392 void RichEditorDeleteValue::SetRichEditorDeleteSpans(const RichEditorAbstractSpanResult& deleteSpan)
393 {
394 richEditorDeleteSpans_.emplace_back(deleteSpan);
395 }
396
ResetRichEditorDeleteSpans()397 void RichEditorDeleteValue::ResetRichEditorDeleteSpans()
398 {
399 richEditorDeleteSpans_.clear();
400 }
401
GetRichEditorDeleteSpans() const402 const std::list<RichEditorAbstractSpanResult>& RichEditorDeleteValue::GetRichEditorDeleteSpans() const
403 {
404 return richEditorDeleteSpans_;
405 }
406
SetRichEditorOriginalSpans(const RichEditorAbstractSpanResult & span)407 void RichEditorChangeValue::SetRichEditorOriginalSpans(const RichEditorAbstractSpanResult& span)
408 {
409 originalSpans_.emplace_back(span);
410 }
411
GetRichEditorOriginalSpans() const412 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorOriginalSpans() const
413 {
414 return originalSpans_;
415 }
416
SetRichEditorReplacedSpans(const RichEditorAbstractSpanResult & span)417 void RichEditorChangeValue::SetRichEditorReplacedSpans(const RichEditorAbstractSpanResult& span)
418 {
419 replacedSpans_.emplace_back(span);
420 }
421
GetRichEditorReplacedSpans() const422 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedSpans() const
423 {
424 return replacedSpans_;
425 }
426
SetRichEditorReplacedImageSpans(const RichEditorAbstractSpanResult & span)427 void RichEditorChangeValue::SetRichEditorReplacedImageSpans(const RichEditorAbstractSpanResult& span)
428 {
429 replacedImageSpans_.emplace_back(span);
430 }
431
GetRichEditorReplacedImageSpans() const432 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedImageSpans() const
433 {
434 return replacedImageSpans_;
435 }
436
SetRichEditorReplacedSymbolSpans(const RichEditorAbstractSpanResult & span)437 void RichEditorChangeValue::SetRichEditorReplacedSymbolSpans(const RichEditorAbstractSpanResult& span)
438 {
439 replacedSymbolSpans_.emplace_back(span);
440 }
441
GetRichEditorReplacedSymbolSpans() const442 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedSymbolSpans() const
443 {
444 return replacedSymbolSpans_;
445 }
446
SetRangeBefore(const TextRange & rangeBefore)447 void RichEditorChangeValue::SetRangeBefore(const TextRange& rangeBefore)
448 {
449 rangeBefore_ = rangeBefore;
450 }
451
GetRangeBefore() const452 TextRange RichEditorChangeValue::GetRangeBefore() const
453 {
454 return rangeBefore_;
455 }
456
SetRangeAfter(const TextRange & rangeAfter)457 void RichEditorChangeValue::SetRangeAfter(const TextRange& rangeAfter)
458 {
459 rangeAfter_ = rangeAfter;
460 }
461
GetRangeAfter() const462 TextRange RichEditorChangeValue::GetRangeAfter() const
463 {
464 return rangeAfter_;
465 }
466
GetChangeReason() const467 TextChangeReason RichEditorChangeValue::GetChangeReason() const
468 {
469 return changeReason_;
470 }
471
SetRangeBefore(const TextRange & range)472 void StyledStringChangeValue::SetRangeBefore(const TextRange& range)
473 {
474 rangeBefore_ = range;
475 }
476
GetRangeBefore() const477 TextRange StyledStringChangeValue::GetRangeBefore() const
478 {
479 return rangeBefore_;
480 }
481
SetRangeAfter(const TextRange & range)482 void StyledStringChangeValue::SetRangeAfter(const TextRange& range)
483 {
484 rangeAfter_ = range;
485 }
486
GetRangeAfter() const487 TextRange StyledStringChangeValue::GetRangeAfter() const
488 {
489 return rangeAfter_;
490 }
491
SetReplacementString(const RefPtr<SpanStringBase> & styledString)492 void StyledStringChangeValue::SetReplacementString(const RefPtr<SpanStringBase>& styledString)
493 {
494 replacementString_ = styledString;
495 }
496
GetReplacementString() const497 const RefPtr<SpanStringBase> StyledStringChangeValue::GetReplacementString() const
498 {
499 return replacementString_;
500 }
501
SetPreviewText(const RefPtr<SpanStringBase> & previewText)502 void StyledStringChangeValue::SetPreviewText(const RefPtr<SpanStringBase>& previewText)
503 {
504 previewText_ = previewText;
505 }
506
GetPreviewText() const507 const RefPtr<SpanStringBase> StyledStringChangeValue::GetPreviewText() const
508 {
509 return previewText_;
510 }
511
SetOnReady(std::function<void ()> && func)512 void RichEditorEventHub::SetOnReady(std::function<void()>&& func)
513 {
514 onReady_ = std::move(func);
515 }
516
FireOnReady()517 void RichEditorEventHub::FireOnReady()
518 {
519 if (onReady_) {
520 onReady_();
521 auto host = GetFrameNode();
522 CHECK_NULL_VOID(host);
523 auto* context = host->GetContext();
524 CHECK_NULL_VOID(context);
525 context->AddAfterRenderTask([host]() { host->MarkDirtyNode(PROPERTY_UPDATE_MEASURE); });
526 }
527 }
528
SetAboutToIMEInput(std::function<bool (const RichEditorInsertValue &)> && func)529 void RichEditorEventHub::SetAboutToIMEInput(std::function<bool(const RichEditorInsertValue&)>&& func)
530 {
531 aboutToIMEInput_ = std::move(func);
532 }
533
FireAboutToIMEInput(const RichEditorInsertValue & info)534 bool RichEditorEventHub::FireAboutToIMEInput(const RichEditorInsertValue& info)
535 {
536 return aboutToIMEInput_ ? aboutToIMEInput_(info) : true;
537 }
538
SetOnIMEInputComplete(std::function<void (const RichEditorAbstractSpanResult &)> && func)539 void RichEditorEventHub::SetOnIMEInputComplete(std::function<void(const RichEditorAbstractSpanResult&)>&& func)
540 {
541 onIMEInputComplete_ = std::move(func);
542 }
543
FireOnIMEInputComplete(const RichEditorAbstractSpanResult & info)544 void RichEditorEventHub::FireOnIMEInputComplete(const RichEditorAbstractSpanResult& info)
545 {
546 if (onIMEInputComplete_)
547 onIMEInputComplete_(info);
548 }
549
SetOnDidIMEInput(std::function<void (const TextRange &)> && func)550 void RichEditorEventHub::SetOnDidIMEInput(std::function<void(const TextRange&)>&& func)
551 {
552 onDidIMEInput_ = std::move(func);
553 }
554
FireOnDidIMEInput(const TextRange & range)555 void RichEditorEventHub::FireOnDidIMEInput(const TextRange& range)
556 {
557 if (onDidIMEInput_)
558 onDidIMEInput_(range);
559 }
560
SetAboutToDelete(std::function<bool (const RichEditorDeleteValue &)> && func)561 void RichEditorEventHub::SetAboutToDelete(std::function<bool(const RichEditorDeleteValue&)>&& func)
562 {
563 aboutToDelete_ = std::move(func);
564 }
565
FireAboutToDelete(const RichEditorDeleteValue & info)566 bool RichEditorEventHub::FireAboutToDelete(const RichEditorDeleteValue& info)
567 {
568 return aboutToDelete_ ? aboutToDelete_(info) : true;
569 }
570
SetOnDeleteComplete(std::function<void ()> && func)571 void RichEditorEventHub::SetOnDeleteComplete(std::function<void()>&& func)
572 {
573 onDeleteComplete_ = std::move(func);
574 }
FireOnDeleteComplete()575 void RichEditorEventHub::FireOnDeleteComplete()
576 {
577 if (onDeleteComplete_) {
578 onDeleteComplete_();
579 UiSessionManager::GetInstance()->ReportComponentChangeEvent("event", "Radio.onChange");
580 }
581 }
582
GetDragExtraParams(const std::string & extraInfo,const Point & point,DragEventType type)583 std::string RichEditorEventHub::GetDragExtraParams(const std::string& extraInfo, const Point& point, DragEventType type)
584 {
585 auto host = GetFrameNode();
586 CHECK_NULL_RETURN(host, extraInfo);
587 auto pattern = host->GetPattern<RichEditorPattern>();
588 CHECK_NULL_RETURN(host, extraInfo);
589
590 auto json = JsonUtil::Create(true);
591 if (type == DragEventType::DROP && timestamp_ != 0 && pattern->GetTimestamp() == timestamp_) {
592 json->Put("isInComponent", true);
593 timestamp_ = 0;
594 }
595 if (!extraInfo.empty()) {
596 json->Put("extraInfo", extraInfo.c_str());
597 }
598 return json->ToString();
599 }
600
SetOnEditingChange(std::function<void (const bool &)> && func)601 void RichEditorEventHub::SetOnEditingChange(std::function<void(const bool&)>&& func)
602 {
603 onEditingChange_ = std::move(func);
604 }
605
FireOnEditingChange(bool isEditing)606 void RichEditorEventHub::FireOnEditingChange(bool isEditing)
607 {
608 if (onEditingChange_) {
609 onEditingChange_(isEditing);
610 }
611 }
612
SetOnWillChange(std::function<bool (const RichEditorChangeValue &)> && func)613 void RichEditorEventHub::SetOnWillChange(std::function<bool(const RichEditorChangeValue&)>&& func)
614 {
615 onWillChange_ = std::move(func);
616 }
617
FireOnWillChange(const RichEditorChangeValue & info)618 bool RichEditorEventHub::FireOnWillChange(const RichEditorChangeValue& info)
619 {
620 return onWillChange_ ? onWillChange_(info) : true;
621 }
622
HasOnWillChange() const623 bool RichEditorEventHub::HasOnWillChange() const
624 {
625 return static_cast<bool>(onWillChange_);
626 }
627
SetOnDidChange(std::function<void (const RichEditorChangeValue &)> && func)628 void RichEditorEventHub::SetOnDidChange(std::function<void(const RichEditorChangeValue&)>&& func)
629 {
630 onDidChange_ = std::move(func);
631 }
632
FireOnDidChange(const RichEditorChangeValue & changeValue)633 void RichEditorEventHub::FireOnDidChange(const RichEditorChangeValue& changeValue)
634 {
635 if (onDidChange_) {
636 onDidChange_(changeValue);
637 }
638 }
639
HasOnDidChange() const640 bool RichEditorEventHub::HasOnDidChange() const
641 {
642 auto host = GetFrameNode();
643 CHECK_NULL_RETURN(host, false);
644 auto pattern = host->GetPattern<RichEditorPattern>();
645 CHECK_NULL_RETURN(pattern, false);
646 pattern->SetContentChange(true);
647 return static_cast<bool>(onDidChange_);
648 }
649
SetOnCut(std::function<void (NG::TextCommonEvent &)> && func)650 void RichEditorEventHub::SetOnCut(std::function<void(NG::TextCommonEvent&)>&& func)
651 {
652 onCut_ = std::move(func);
653 }
654
FireOnCut(NG::TextCommonEvent & value)655 void RichEditorEventHub::FireOnCut(NG::TextCommonEvent& value)
656 {
657 if (onCut_) {
658 onCut_(value);
659 }
660 }
661
SetOnCopy(std::function<void (NG::TextCommonEvent &)> && func)662 void RichEditorEventHub::SetOnCopy(std::function<void(NG::TextCommonEvent&)>&& func)
663 {
664 onCopy_ = std::move(func);
665 }
666
FireOnCopy(NG::TextCommonEvent & value)667 void RichEditorEventHub::FireOnCopy(NG::TextCommonEvent& value)
668 {
669 if (onCopy_) {
670 onCopy_(value);
671 }
672 }
673
SetOnShare(std::function<void (NG::TextCommonEvent &)> && func)674 void RichEditorEventHub::SetOnShare(std::function<void(NG::TextCommonEvent&)>&& func)
675 {
676 onShare_ = std::move(func);
677 }
678
FireOnShare(NG::TextCommonEvent & value)679 void RichEditorEventHub::FireOnShare(NG::TextCommonEvent& value)
680 {
681 if (onShare_) {
682 onShare_(value);
683 }
684 }
685
SetOnStyledStringWillChange(std::function<bool (const StyledStringChangeValue &)> && func)686 void RichEditorEventHub::SetOnStyledStringWillChange(std::function<bool(const StyledStringChangeValue&)> && func)
687 {
688 onStyledStringWillChange_ = std::move(func);
689 }
690
FireOnStyledStringWillChange(const StyledStringChangeValue & info)691 bool RichEditorEventHub::FireOnStyledStringWillChange(const StyledStringChangeValue& info)
692 {
693 return onStyledStringWillChange_ ? onStyledStringWillChange_(info) : true;
694 }
695
HasOnStyledStringWillChange() const696 bool RichEditorEventHub::HasOnStyledStringWillChange() const
697 {
698 return static_cast<bool>(onStyledStringWillChange_);
699 }
700
SetOnStyledStringDidChange(std::function<void (const StyledStringChangeValue &)> && func)701 void RichEditorEventHub::SetOnStyledStringDidChange(std::function<void(const StyledStringChangeValue&)> && func)
702 {
703 onStyledStringDidChange_ = std::move(func);
704 }
705
FireOnStyledStringDidChange(const StyledStringChangeValue & info)706 void RichEditorEventHub::FireOnStyledStringDidChange(const StyledStringChangeValue& info)
707 {
708 onStyledStringDidChange_(info);
709 }
710
HasOnStyledStringDidChange() const711 bool RichEditorEventHub::HasOnStyledStringDidChange() const
712 {
713 return static_cast<bool>(onStyledStringDidChange_);
714 }
715 } // namespace OHOS::Ace::NG
716