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/components_ng/pattern/rich_editor/rich_editor_event_hub.h"
16 #if !defined(PREVIEW) && !defined(ACE_UNITTEST) && defined(OHOS_PLATFORM)
17 #include "interfaces/inner_api/ui_session/ui_session_manager.h"
18 #endif
19
20 #include "core/components_ng/base/frame_node.h"
21 #include "core/components_ng/pattern/rich_editor/rich_editor_pattern.h"
22
23 namespace OHOS::Ace::NG {
SetInsertOffset(int32_t insertOffset)24 void RichEditorInsertValue::SetInsertOffset(int32_t insertOffset)
25 {
26 insertOffset_ = insertOffset;
27 }
28
GetInsertOffset() const29 int32_t RichEditorInsertValue::GetInsertOffset() const
30 {
31 return insertOffset_;
32 }
33
SetInsertValue(const std::string & insertValue)34 void RichEditorInsertValue::SetInsertValue(const std::string& insertValue)
35 {
36 insertValue_ = insertValue;
37 }
38
SetPreviewText(const std::string & previewText)39 void RichEditorInsertValue::SetPreviewText(const std::string& previewText)
40 {
41 previewText_ = previewText;
42 }
43
GetInsertValue() const44 const std::string& RichEditorInsertValue::GetInsertValue() const
45 {
46 return insertValue_;
47 }
48
GetPreviewText() const49 const std::string& RichEditorInsertValue::GetPreviewText() const
50 {
51 return previewText_;
52 }
53
SetSpanIndex(int32_t spanIndex)54 void RichEditorAbstractSpanResult::SetSpanIndex(int32_t spanIndex)
55 {
56 spanIndex_ = spanIndex;
57 }
58
GetSpanIndex() const59 int32_t RichEditorAbstractSpanResult::GetSpanIndex() const
60 {
61 return spanIndex_;
62 }
63
SetSpanRangeStart(int32_t spanRangeStart)64 void RichEditorAbstractSpanResult::SetSpanRangeStart(int32_t spanRangeStart)
65 {
66 spanRangeStart_ = spanRangeStart;
67 }
68
GetSpanRangeStart() const69 int32_t RichEditorAbstractSpanResult::GetSpanRangeStart() const
70 {
71 return spanRangeStart_;
72 }
73
SetSpanRangeEnd(int32_t spanRangeEnd)74 void RichEditorAbstractSpanResult::SetSpanRangeEnd(int32_t spanRangeEnd)
75 {
76 spanRangeEnd_ = spanRangeEnd;
77 }
78
GetSpanRangeEnd() const79 int32_t RichEditorAbstractSpanResult::GetSpanRangeEnd() const
80 {
81 return spanRangeEnd_;
82 }
83
SetSpanType(SpanResultType spanType)84 void RichEditorAbstractSpanResult::SetSpanType(SpanResultType spanType)
85 {
86 spanType_ = spanType;
87 }
88
GetType() const89 SpanResultType RichEditorAbstractSpanResult::GetType() const
90 {
91 return spanType_;
92 }
93
SetOffsetInSpan(int32_t offsetInSpan)94 void RichEditorAbstractSpanResult::SetOffsetInSpan(int32_t offsetInSpan)
95 {
96 offsetInSpan_ = offsetInSpan;
97 }
98
OffsetInSpan() const99 int32_t RichEditorAbstractSpanResult::OffsetInSpan() const
100 {
101 return offsetInSpan_;
102 }
103
SetEraseLength(int32_t eraseLength)104 void RichEditorAbstractSpanResult::SetEraseLength(int32_t eraseLength)
105 {
106 eraseLength_ = eraseLength;
107 }
108
GetEraseLength() const109 int32_t RichEditorAbstractSpanResult::GetEraseLength() const
110 {
111 return eraseLength_;
112 }
113
SetValue(const std::string & value)114 void RichEditorAbstractSpanResult::SetValue(const std::string& value)
115 {
116 value_ = value;
117 }
118
GetValue() const119 const std::string& RichEditorAbstractSpanResult::GetValue() const
120 {
121 return value_;
122 }
123
SetPreviewText(const std::string & previewText)124 void RichEditorAbstractSpanResult::SetPreviewText(const std::string& previewText)
125 {
126 previewText_ = previewText;
127 }
128
GetPreviewText() const129 const std::string& RichEditorAbstractSpanResult::GetPreviewText() const
130 {
131 return previewText_;
132 }
133
SetFontColor(const std::string & fontColor)134 void RichEditorAbstractSpanResult::SetFontColor(const std::string& fontColor)
135 {
136 fontColor_ = fontColor;
137 }
138
SetFontFeature(const FONT_FEATURES_LIST & fontFeature)139 void RichEditorAbstractSpanResult::SetFontFeature(const FONT_FEATURES_LIST& fontFeature)
140 {
141 fontFeature_ = fontFeature;
142 }
143
GetFontFeatures() const144 const FONT_FEATURES_LIST& RichEditorAbstractSpanResult::GetFontFeatures() const
145 {
146 return fontFeature_;
147 }
148
SetTextStyle(TextStyleResult textStyle)149 void RichEditorAbstractSpanResult::SetTextStyle(TextStyleResult textStyle)
150 {
151 textStyle_ = textStyle;
152 }
153
GetTextStyle() const154 TextStyleResult RichEditorAbstractSpanResult::GetTextStyle() const
155 {
156 return textStyle_;
157 }
158
SetLineHeight(double lineHeight)159 void RichEditorAbstractSpanResult::SetLineHeight(double lineHeight)
160 {
161 lineHeight_ = lineHeight;
162 }
163
GetLineHeight() const164 double RichEditorAbstractSpanResult::GetLineHeight() const
165 {
166 return lineHeight_;
167 }
168
SetLetterspacing(double letterSpacing)169 void RichEditorAbstractSpanResult::SetLetterspacing(double letterSpacing)
170 {
171 letterSpacing_ = letterSpacing;
172 }
173
GetLetterspacing() const174 double RichEditorAbstractSpanResult::GetLetterspacing() const
175 {
176 return letterSpacing_;
177 }
178
GetFontColor() const179 const std::string& RichEditorAbstractSpanResult::GetFontColor() const
180 {
181 return fontColor_;
182 }
183
SetFontSize(double fontSize)184 void RichEditorAbstractSpanResult::SetFontSize(double fontSize)
185 {
186 fontSize_ = fontSize;
187 }
188
GetFontSize() const189 double RichEditorAbstractSpanResult::GetFontSize() const
190 {
191 return fontSize_;
192 }
193
SetValueResource(const RefPtr<ResourceObject> & valueResource)194 void RichEditorAbstractSpanResult::SetValueResource(const RefPtr<ResourceObject>& valueResource)
195 {
196 valueResource_ = valueResource;
197 }
198
GetValueResource() const199 const RefPtr<ResourceObject> RichEditorAbstractSpanResult::GetValueResource() const
200 {
201 return valueResource_;
202 }
203
SetValueString(const std::string & valueString)204 void RichEditorAbstractSpanResult::SetValueString(const std::string& valueString)
205 {
206 valueString_ = valueString;
207 }
208
GetValueString() const209 const std::string RichEditorAbstractSpanResult::GetValueString() const
210 {
211 return valueString_;
212 }
213
SetSymbolSpanStyle(const SymbolSpanStyle & symbolSpanStyle)214 void RichEditorAbstractSpanResult::SetSymbolSpanStyle(const SymbolSpanStyle& symbolSpanStyle)
215 {
216 symbolSpanStyle_ = symbolSpanStyle;
217 }
218
GetSymbolSpanStyle() const219 const SymbolSpanStyle RichEditorAbstractSpanResult::GetSymbolSpanStyle() const
220 {
221 return symbolSpanStyle_;
222 }
223
SetFontWeight(int32_t fontWeigth)224 void RichEditorAbstractSpanResult::SetFontWeight(int32_t fontWeigth)
225 {
226 fontWeigth_ = fontWeigth;
227 }
228
GetFontWeight() const229 int32_t RichEditorAbstractSpanResult::GetFontWeight() const
230 {
231 return fontWeigth_;
232 }
233
SetFontFamily(const std::string & fontFamily)234 void RichEditorAbstractSpanResult::SetFontFamily(const std::string& fontFamily)
235 {
236 fontFamily_ = fontFamily;
237 }
238
GetFontFamily() const239 const std::string& RichEditorAbstractSpanResult::GetFontFamily() const
240 {
241 return fontFamily_;
242 }
243
SetTextDecoration(TextDecoration textDecoration)244 void RichEditorAbstractSpanResult::SetTextDecoration(TextDecoration textDecoration)
245 {
246 textDecoration_ = textDecoration;
247 }
248
GetTextDecoration() const249 TextDecoration RichEditorAbstractSpanResult::GetTextDecoration() const
250 {
251 return textDecoration_;
252 }
253
SetColor(const std::string & color)254 void RichEditorAbstractSpanResult::SetColor(const std::string& color)
255 {
256 color_ = color;
257 }
258
GetColor() const259 const std::string& RichEditorAbstractSpanResult::GetColor() const
260 {
261 return color_;
262 }
263
SetTextDecorationStyle(TextDecorationStyle textDecorationStyle)264 void RichEditorAbstractSpanResult::SetTextDecorationStyle(TextDecorationStyle textDecorationStyle)
265 {
266 textDecorationStyle_ = textDecorationStyle;
267 }
268
GetTextDecorationStyle() const269 TextDecorationStyle RichEditorAbstractSpanResult::GetTextDecorationStyle() const
270 {
271 return textDecorationStyle_;
272 }
273
SetValuePixelMap(const RefPtr<PixelMap> & valuePixelMap)274 void RichEditorAbstractSpanResult::SetValuePixelMap(const RefPtr<PixelMap>& valuePixelMap)
275 {
276 valuePixelMap_ = valuePixelMap;
277 }
278
GetValuePixelMap() const279 const RefPtr<PixelMap>& RichEditorAbstractSpanResult::GetValuePixelMap() const
280 {
281 return valuePixelMap_;
282 }
283
SetValueResourceStr(const std::string valueResourceStr)284 void RichEditorAbstractSpanResult::SetValueResourceStr(const std::string valueResourceStr)
285 {
286 valueResourceStr_ = valueResourceStr;
287 }
288
GetValueResourceStr() const289 const std::string& RichEditorAbstractSpanResult::GetValueResourceStr() const
290 {
291 return valueResourceStr_;
292 }
293
SetSizeWidth(int32_t width)294 void RichEditorAbstractSpanResult::SetSizeWidth(int32_t width)
295 {
296 width_ = width;
297 }
298
GetSizeWidth() const299 int32_t RichEditorAbstractSpanResult::GetSizeWidth() const
300 {
301 return width_;
302 }
303
SetSizeHeight(int32_t height)304 void RichEditorAbstractSpanResult::SetSizeHeight(int32_t height)
305 {
306 height_ = height;
307 }
308
GetSizeHeight() const309 int32_t RichEditorAbstractSpanResult::GetSizeHeight() const
310 {
311 return height_;
312 }
313
SetVerticalAlign(VerticalAlign verticalAlign)314 void RichEditorAbstractSpanResult::SetVerticalAlign(VerticalAlign verticalAlign)
315 {
316 verticalAlign_ = verticalAlign;
317 }
318
GetVerticalAlign() const319 VerticalAlign RichEditorAbstractSpanResult::GetVerticalAlign() const
320 {
321 return verticalAlign_;
322 }
323
SetImageFit(ImageFit objectFit)324 void RichEditorAbstractSpanResult::SetImageFit(ImageFit objectFit)
325 {
326 objectFit_ = objectFit;
327 }
328
GetObjectFit() const329 ImageFit RichEditorAbstractSpanResult::GetObjectFit() const
330 {
331 return objectFit_;
332 }
333
SetOffset(int32_t offset)334 void RichEditorDeleteValue::SetOffset(int32_t offset)
335 {
336 offset_ = offset;
337 }
338
GetOffset() const339 int32_t RichEditorDeleteValue::GetOffset() const
340 {
341 return offset_;
342 }
343
SetRichEditorDeleteDirection(RichEditorDeleteDirection direction)344 void RichEditorDeleteValue::SetRichEditorDeleteDirection(RichEditorDeleteDirection direction)
345 {
346 direction_ = direction;
347 }
348
GetRichEditorDeleteDirection() const349 RichEditorDeleteDirection RichEditorDeleteValue::GetRichEditorDeleteDirection() const
350 {
351 return direction_;
352 }
353
SetLength(int32_t length)354 void RichEditorDeleteValue::SetLength(int32_t length)
355 {
356 length_ = length;
357 }
358
GetLength() const359 int32_t RichEditorDeleteValue::GetLength() const
360 {
361 return length_;
362 }
363
SetRichEditorDeleteSpans(const RichEditorAbstractSpanResult & deleteSpan)364 void RichEditorDeleteValue::SetRichEditorDeleteSpans(const RichEditorAbstractSpanResult& deleteSpan)
365 {
366 richEditorDeleteSpans_.emplace_back(deleteSpan);
367 }
368
ResetRichEditorDeleteSpans()369 void RichEditorDeleteValue::ResetRichEditorDeleteSpans()
370 {
371 richEditorDeleteSpans_.clear();
372 }
373
GetRichEditorDeleteSpans() const374 const std::list<RichEditorAbstractSpanResult>& RichEditorDeleteValue::GetRichEditorDeleteSpans() const
375 {
376 return richEditorDeleteSpans_;
377 }
378
SetRichEditorOriginalSpans(const RichEditorAbstractSpanResult & span)379 void RichEditorChangeValue::SetRichEditorOriginalSpans(const RichEditorAbstractSpanResult& span)
380 {
381 originalSpans_.emplace_back(span);
382 }
383
GetRichEditorOriginalSpans() const384 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorOriginalSpans() const
385 {
386 return originalSpans_;
387 }
388
SetRichEditorReplacedSpans(const RichEditorAbstractSpanResult & span)389 void RichEditorChangeValue::SetRichEditorReplacedSpans(const RichEditorAbstractSpanResult& span)
390 {
391 replacedSpans_.emplace_back(span);
392 }
393
GetRichEditorReplacedSpans() const394 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedSpans() const
395 {
396 return replacedSpans_;
397 }
398
SetRichEditorReplacedImageSpans(const RichEditorAbstractSpanResult & span)399 void RichEditorChangeValue::SetRichEditorReplacedImageSpans(const RichEditorAbstractSpanResult& span)
400 {
401 replacedImageSpans_.emplace_back(span);
402 }
403
GetRichEditorReplacedImageSpans() const404 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedImageSpans() const
405 {
406 return replacedImageSpans_;
407 }
408
SetRichEditorReplacedSymbolSpans(const RichEditorAbstractSpanResult & span)409 void RichEditorChangeValue::SetRichEditorReplacedSymbolSpans(const RichEditorAbstractSpanResult& span)
410 {
411 replacedSymbolSpans_.emplace_back(span);
412 }
413
GetRichEditorReplacedSymbolSpans() const414 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedSymbolSpans() const
415 {
416 return replacedSymbolSpans_;
417 }
418
SetRangeBefore(const TextRange & rangeBefore)419 void RichEditorChangeValue::SetRangeBefore(const TextRange& rangeBefore)
420 {
421 rangeBefore_ = rangeBefore;
422 }
423
GetRangeBefore() const424 TextRange RichEditorChangeValue::GetRangeBefore() const
425 {
426 return rangeBefore_;
427 }
428
SetRangeAfter(const TextRange & rangeAfter)429 void RichEditorChangeValue::SetRangeAfter(const TextRange& rangeAfter)
430 {
431 rangeAfter_ = rangeAfter;
432 }
433
GetRangeAfter() const434 TextRange RichEditorChangeValue::GetRangeAfter() const
435 {
436 return rangeAfter_;
437 }
438
SetRangeBefore(const TextRange & range)439 void StyledStringChangeValue::SetRangeBefore(const TextRange& range)
440 {
441 rangeBefore_ = range;
442 }
443
GetRangeBefore() const444 TextRange StyledStringChangeValue::GetRangeBefore() const
445 {
446 return rangeBefore_;
447 }
448
SetRangeAfter(const TextRange & range)449 void StyledStringChangeValue::SetRangeAfter(const TextRange& range)
450 {
451 rangeAfter_ = range;
452 }
453
GetRangeAfter() const454 TextRange StyledStringChangeValue::GetRangeAfter() const
455 {
456 return rangeAfter_;
457 }
458
SetReplacementString(const RefPtr<SpanStringBase> & styledString)459 void StyledStringChangeValue::SetReplacementString(const RefPtr<SpanStringBase>& styledString)
460 {
461 replacementString_ = styledString;
462 }
463
GetReplacementString() const464 const RefPtr<SpanStringBase> StyledStringChangeValue::GetReplacementString() const
465 {
466 return replacementString_;
467 }
468
SetOnReady(std::function<void ()> && func)469 void RichEditorEventHub::SetOnReady(std::function<void()>&& func)
470 {
471 onReady_ = std::move(func);
472 }
473
FireOnReady()474 void RichEditorEventHub::FireOnReady()
475 {
476 if (onReady_) {
477 onReady_();
478 auto host = GetFrameNode();
479 CHECK_NULL_VOID(host);
480 auto* context = host->GetContext();
481 CHECK_NULL_VOID(context);
482 context->AddAfterRenderTask([host]() { host->MarkDirtyNode(PROPERTY_UPDATE_MEASURE); });
483 }
484 }
485
SetAboutToIMEInput(std::function<bool (const RichEditorInsertValue &)> && func)486 void RichEditorEventHub::SetAboutToIMEInput(std::function<bool(const RichEditorInsertValue&)>&& func)
487 {
488 aboutToIMEInput_ = std::move(func);
489 }
490
FireAboutToIMEInput(const RichEditorInsertValue & info)491 bool RichEditorEventHub::FireAboutToIMEInput(const RichEditorInsertValue& info)
492 {
493 return aboutToIMEInput_ ? aboutToIMEInput_(info) : true;
494 }
495
SetOnIMEInputComplete(std::function<void (const RichEditorAbstractSpanResult &)> && func)496 void RichEditorEventHub::SetOnIMEInputComplete(std::function<void(const RichEditorAbstractSpanResult&)>&& func)
497 {
498 onIMEInputComplete_ = std::move(func);
499 }
500
FireOnIMEInputComplete(const RichEditorAbstractSpanResult & info)501 void RichEditorEventHub::FireOnIMEInputComplete(const RichEditorAbstractSpanResult& info)
502 {
503 if (onIMEInputComplete_)
504 onIMEInputComplete_(info);
505 }
506
SetOnDidIMEInput(std::function<void (const TextRange &)> && func)507 void RichEditorEventHub::SetOnDidIMEInput(std::function<void(const TextRange&)>&& func)
508 {
509 onDidIMEInput_ = std::move(func);
510 }
511
FireOnDidIMEInput(const TextRange & range)512 void RichEditorEventHub::FireOnDidIMEInput(const TextRange& range)
513 {
514 if (onDidIMEInput_)
515 onDidIMEInput_(range);
516 }
517
SetAboutToDelete(std::function<bool (const RichEditorDeleteValue &)> && func)518 void RichEditorEventHub::SetAboutToDelete(std::function<bool(const RichEditorDeleteValue&)>&& func)
519 {
520 aboutToDelete_ = std::move(func);
521 }
522
FireAboutToDelete(const RichEditorDeleteValue & info)523 bool RichEditorEventHub::FireAboutToDelete(const RichEditorDeleteValue& info)
524 {
525 return aboutToDelete_ ? aboutToDelete_(info) : true;
526 }
527
SetOnDeleteComplete(std::function<void ()> && func)528 void RichEditorEventHub::SetOnDeleteComplete(std::function<void()>&& func)
529 {
530 onDeleteComplete_ = std::move(func);
531 }
FireOnDeleteComplete()532 void RichEditorEventHub::FireOnDeleteComplete()
533 {
534 if (onDeleteComplete_) {
535 onDeleteComplete_();
536 #if !defined(PREVIEW) && !defined(ACE_UNITTEST) && defined(OHOS_PLATFORM)
537 UiSessionManager::GetInstance().ReportComponentChangeEvent("event", "Radio.onChange");
538 #endif
539 }
540 }
541
GetDragExtraParams(const std::string & extraInfo,const Point & point,DragEventType type)542 std::string RichEditorEventHub::GetDragExtraParams(const std::string& extraInfo, const Point& point, DragEventType type)
543 {
544 auto host = GetFrameNode();
545 CHECK_NULL_RETURN(host, extraInfo);
546 auto pattern = host->GetPattern<RichEditorPattern>();
547 CHECK_NULL_RETURN(host, extraInfo);
548
549 auto json = JsonUtil::Create(true);
550 if (type == DragEventType::DROP && timestamp_ != 0 && pattern->GetTimestamp() == timestamp_) {
551 json->Put("isInComponent", true);
552 timestamp_ = 0;
553 }
554 if (!extraInfo.empty()) {
555 json->Put("extraInfo", extraInfo.c_str());
556 }
557 return json->ToString();
558 }
559
SetOnEditingChange(std::function<void (const bool &)> && func)560 void RichEditorEventHub::SetOnEditingChange(std::function<void(const bool&)>&& func)
561 {
562 onEditingChange_ = std::move(func);
563 }
564
FireOnEditingChange(bool isEditing)565 void RichEditorEventHub::FireOnEditingChange(bool isEditing)
566 {
567 if (onEditingChange_) {
568 onEditingChange_(isEditing);
569 }
570 }
571
SetOnWillChange(std::function<bool (const RichEditorChangeValue &)> && func)572 void RichEditorEventHub::SetOnWillChange(std::function<bool(const RichEditorChangeValue&)>&& func)
573 {
574 onWillChange_ = std::move(func);
575 }
576
FireOnWillChange(const RichEditorChangeValue & info)577 bool RichEditorEventHub::FireOnWillChange(const RichEditorChangeValue& info)
578 {
579 return onWillChange_ ? onWillChange_(info) : true;
580 }
581
HasOnWillChange() const582 bool RichEditorEventHub::HasOnWillChange() const
583 {
584 return static_cast<bool>(onWillChange_);
585 }
586
SetOnDidChange(std::function<void (const RichEditorChangeValue &)> && func)587 void RichEditorEventHub::SetOnDidChange(std::function<void(const RichEditorChangeValue&)>&& func)
588 {
589 onDidChange_ = std::move(func);
590 }
591
FireOnDidChange(const RichEditorChangeValue & changeValue)592 void RichEditorEventHub::FireOnDidChange(const RichEditorChangeValue& changeValue)
593 {
594 if (onDidChange_) {
595 onDidChange_(changeValue);
596 }
597 }
598
HasOnDidChange() const599 bool RichEditorEventHub::HasOnDidChange() const
600 {
601 auto host = GetFrameNode();
602 CHECK_NULL_RETURN(host, false);
603 auto pattern = host->GetPattern<RichEditorPattern>();
604 CHECK_NULL_RETURN(pattern, false);
605 pattern->SetContentChange(true);
606 return static_cast<bool>(onDidChange_);
607 }
608
SetOnCut(std::function<void (NG::TextCommonEvent &)> && func)609 void RichEditorEventHub::SetOnCut(std::function<void(NG::TextCommonEvent&)>&& func)
610 {
611 onCut_ = std::move(func);
612 }
613
FireOnCut(NG::TextCommonEvent & value)614 void RichEditorEventHub::FireOnCut(NG::TextCommonEvent& value)
615 {
616 if (onCut_) {
617 onCut_(value);
618 }
619 }
620
SetOnCopy(std::function<void (NG::TextCommonEvent &)> && func)621 void RichEditorEventHub::SetOnCopy(std::function<void(NG::TextCommonEvent&)>&& func)
622 {
623 onCopy_ = std::move(func);
624 }
625
FireOnCopy(NG::TextCommonEvent & value)626 void RichEditorEventHub::FireOnCopy(NG::TextCommonEvent& value)
627 {
628 if (onCopy_) {
629 onCopy_(value);
630 }
631 }
632
SetOnStyledStringWillChange(std::function<bool (const StyledStringChangeValue &)> && func)633 void RichEditorEventHub::SetOnStyledStringWillChange(std::function<bool(const StyledStringChangeValue&)>&& func)
634 {
635 onStyledStringWillChange_ = std::move(func);
636 }
637
FireOnStyledStringWillChange(const StyledStringChangeValue & info)638 bool RichEditorEventHub::FireOnStyledStringWillChange(const StyledStringChangeValue& info)
639 {
640 return onStyledStringWillChange_ ? onStyledStringWillChange_(info) : true;
641 }
642
HasOnStyledStringWillChange() const643 bool RichEditorEventHub::HasOnStyledStringWillChange() const
644 {
645 return static_cast<bool>(onStyledStringWillChange_);
646 }
647
SetOnStyledStringDidChange(std::function<void (const StyledStringChangeValue &)> && func)648 void RichEditorEventHub::SetOnStyledStringDidChange(std::function<void(const StyledStringChangeValue&)>&& func)
649 {
650 onStyledStringDidChange_ = std::move(func);
651 }
652
FireOnStyledStringDidChange(const StyledStringChangeValue & info)653 void RichEditorEventHub::FireOnStyledStringDidChange(const StyledStringChangeValue& info)
654 {
655 onStyledStringDidChange_(info);
656 }
657
HasOnStyledStringDidChange() const658 bool RichEditorEventHub::HasOnStyledStringDidChange() const
659 {
660 return static_cast<bool>(onStyledStringDidChange_);
661 }
662 } // namespace OHOS::Ace::NG
663