1 /*
2 * Copyright (c) 2022 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
16 #include "adapter/preview/entrance/clipboard/clipboard_impl.h"
17
18 #include "adapter/preview/entrance/ace_preview_helper.h"
19 #include "frameworks/base/utils/utils.h"
20
21 namespace OHOS::Ace::Platform {
22
AddPixelMapRecord(const RefPtr<PasteDataMix> & pasteData,const RefPtr<PixelMap> & pixmap)23 void ClipboardImpl::AddPixelMapRecord(const RefPtr<PasteDataMix>& pasteData, const RefPtr<PixelMap>& pixmap) {}
AddImageRecord(const RefPtr<PasteDataMix> & pasteData,const std::string & uri)24 void ClipboardImpl::AddImageRecord(const RefPtr<PasteDataMix>& pasteData, const std::string& uri) {}
AddTextRecord(const RefPtr<PasteDataMix> & pasteData,const std::string & selectedStr)25 void ClipboardImpl::AddTextRecord(const RefPtr<PasteDataMix>& pasteData, const std::string& selectedStr) {}
SetData(const RefPtr<PasteDataMix> & pasteData,CopyOptions copyOption)26 void ClipboardImpl::SetData(const RefPtr<PasteDataMix>& pasteData, CopyOptions copyOption) {}
GetData(const std::function<void (const std::string &,bool isLastRecord)> & textCallback,const std::function<void (const RefPtr<PixelMap> &,bool isLastRecord)> & pixelMapCallback,const std::function<void (const std::string &,bool isLastRecord)> & urlCallback,bool syncMode)27 void ClipboardImpl::GetData(const std::function<void(const std::string&, bool isLastRecord)>& textCallback,
28 const std::function<void(const RefPtr<PixelMap>&, bool isLastRecord)>& pixelMapCallback,
29 const std::function<void(const std::string&, bool isLastRecord)>& urlCallback, bool syncMode)
30 {}
31
CreatePasteDataMix()32 RefPtr<PasteDataMix> ClipboardImpl::CreatePasteDataMix()
33 {
34 return AceType::MakeRefPtr<PasteDataMix>();
35 }
36
SetData(const std::string & data,CopyOptions copyOption,bool isDragData)37 void ClipboardImpl::SetData(const std::string& data, CopyOptions copyOption, bool isDragData)
38 {
39 CHECK_NULL_VOID(taskExecutor_);
40 taskExecutor_->PostTask(
41 [data] {
42 auto setClipboardData = AcePreviewHelper::GetInstance()->GetCallbackOfSetClipboardData();
43 if (setClipboardData) {
44 setClipboardData(data);
45 }
46 },
47 TaskExecutor::TaskType::UI);
48 }
49
GetData(const std::function<void (const std::string &)> & callback,bool syncMode)50 void ClipboardImpl::GetData(const std::function<void(const std::string&)>& callback, bool syncMode)
51 {
52 if (!taskExecutor_ || !callback) {
53 return;
54 }
55 taskExecutor_->PostTask(
56 [callback] {
57 auto getClipboardData = AcePreviewHelper::GetInstance()->GetCallbackOfGetClipboardData();
58 if (callback && getClipboardData) {
59 callback(getClipboardData());
60 }
61 },
62 TaskExecutor::TaskType::UI);
63 }
64
HasData(const std::function<void (bool hasData)> & callback)65 void ClipboardImpl::HasData(const std::function<void(bool hasData)>& callback)
66 {
67 if (!taskExecutor_ || !callback) {
68 return;
69 }
70 taskExecutor_->PostTask(
71 [callback] {
72 auto getClipboardData = AcePreviewHelper::GetInstance()->GetCallbackOfGetClipboardData();
73 if (callback && getClipboardData) {
74 callback(!getClipboardData().empty());
75 }
76 },
77 TaskExecutor::TaskType::UI);
78 }
79
SetPixelMapData(const RefPtr<PixelMap> & pixmap,CopyOptions copyOption)80 void ClipboardImpl::SetPixelMapData(const RefPtr<PixelMap>& pixmap, CopyOptions copyOption)
81 {
82 if (!taskExecutor_ || !callbackSetClipboardPixmapData_) {
83 return;
84 }
85 taskExecutor_->PostTask([callbackSetClipboardPixmapData = callbackSetClipboardPixmapData_,
86 pixmap] { callbackSetClipboardPixmapData(pixmap); },
87 TaskExecutor::TaskType::UI);
88 }
89
GetPixelMapData(const std::function<void (const RefPtr<PixelMap> &)> & callback,bool syncMode)90 void ClipboardImpl::GetPixelMapData(const std::function<void(const RefPtr<PixelMap>&)>& callback, bool syncMode)
91 {
92 if (!taskExecutor_ || !callbackGetClipboardPixmapData_ || !callback) {
93 return;
94 }
95 taskExecutor_->PostTask([callbackGetClipboardPixmapData = callbackGetClipboardPixmapData_,
96 callback] { callback(callbackGetClipboardPixmapData()); },
97 TaskExecutor::TaskType::UI);
98 }
99
Clear()100 void ClipboardImpl::Clear() {}
101
RegisterCallbackSetClipboardPixmapData(CallbackSetClipboardPixmapData callback)102 void ClipboardImpl::RegisterCallbackSetClipboardPixmapData(CallbackSetClipboardPixmapData callback)
103 {
104 callbackSetClipboardPixmapData_ = callback;
105 }
106
RegisterCallbackGetClipboardPixmapData(CallbackGetClipboardPixmapData callback)107 void ClipboardImpl::RegisterCallbackGetClipboardPixmapData(CallbackGetClipboardPixmapData callback)
108 {
109 callbackGetClipboardPixmapData_ = callback;
110 }
111 } // namespace OHOS::Ace::Platform
112