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 "util/ClipboardHelper.h"
19
20 #include "frameworks/base/utils/utils.h"
21
22 namespace OHOS::Ace::Platform {
23
AddPixelMapRecord(const RefPtr<PasteDataMix> & pasteData,const RefPtr<PixelMap> & pixmap)24 void ClipboardImpl::AddPixelMapRecord(const RefPtr<PasteDataMix>& pasteData, const RefPtr<PixelMap>& pixmap) {}
AddImageRecord(const RefPtr<PasteDataMix> & pasteData,const std::string & uri)25 void ClipboardImpl::AddImageRecord(const RefPtr<PasteDataMix>& pasteData, const std::string& uri) {}
AddTextRecord(const RefPtr<PasteDataMix> & pasteData,const std::string & selectedStr)26 void ClipboardImpl::AddTextRecord(const RefPtr<PasteDataMix>& pasteData, const std::string& selectedStr) {}
SetData(const RefPtr<PasteDataMix> & pasteData,CopyOptions copyOption)27 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)28 void ClipboardImpl::GetData(const std::function<void(const std::string&, bool isLastRecord)>& textCallback,
29 const std::function<void(const RefPtr<PixelMap>&, bool isLastRecord)>& pixelMapCallback,
30 const std::function<void(const std::string&, bool isLastRecord)>& urlCallback, bool syncMode)
31 {}
32
CreatePasteDataMix()33 RefPtr<PasteDataMix> ClipboardImpl::CreatePasteDataMix()
34 {
35 return AceType::MakeRefPtr<PasteDataMix>();
36 }
37
SetData(const std::string & data,CopyOptions copyOption,bool isDragData)38 void ClipboardImpl::SetData(const std::string& data, CopyOptions copyOption, bool isDragData)
39 {
40 CHECK_NULL_VOID(taskExecutor_);
41 taskExecutor_->PostTask([data] { ClipboardHelper::SetClipboardData(data); },
42 TaskExecutor::TaskType::UI);
43 }
44
GetData(const std::function<void (const std::string &)> & callback,bool syncMode)45 void ClipboardImpl::GetData(const std::function<void(const std::string&)>& callback, bool syncMode)
46 {
47 if (!taskExecutor_ || !callback) {
48 LOGE("Failed to get the data from clipboard.");
49 return;
50 }
51 taskExecutor_->PostTask([callback] { callback(ClipboardHelper::GetClipboardData()); },
52 TaskExecutor::TaskType::UI);
53 }
54
HasData(const std::function<void (bool hasData)> & callback)55 void ClipboardImpl::HasData(const std::function<void(bool hasData)>& callback)
56 {
57 if (!taskExecutor_ || !callback) {
58 LOGE("Failed to know if data exists from clipboard.");
59 return;
60 }
61 taskExecutor_->PostTask([callback] { callback(!ClipboardHelper::GetClipboardData().empty()); },
62 TaskExecutor::TaskType::UI);
63 }
64
SetPixelMapData(const RefPtr<PixelMap> & pixmap,CopyOptions copyOption)65 void ClipboardImpl::SetPixelMapData(const RefPtr<PixelMap>& pixmap, CopyOptions copyOption)
66 {
67 if (!taskExecutor_ || !callbackSetClipboardPixmapData_) {
68 LOGE("Failed to set the pixmap data to clipboard.");
69 return;
70 }
71 taskExecutor_->PostTask([callbackSetClipboardPixmapData = callbackSetClipboardPixmapData_,
72 pixmap] { callbackSetClipboardPixmapData(pixmap); },
73 TaskExecutor::TaskType::UI);
74 }
75
GetPixelMapData(const std::function<void (const RefPtr<PixelMap> &)> & callback,bool syncMode)76 void ClipboardImpl::GetPixelMapData(const std::function<void(const RefPtr<PixelMap>&)>& callback, bool syncMode)
77 {
78 if (!taskExecutor_ || !callbackGetClipboardPixmapData_ || !callback) {
79 LOGE("Failed to get the pixmap data from clipboard.");
80 return;
81 }
82 taskExecutor_->PostTask([callbackGetClipboardPixmapData = callbackGetClipboardPixmapData_,
83 callback] { callback(callbackGetClipboardPixmapData()); },
84 TaskExecutor::TaskType::UI);
85 }
86
Clear()87 void ClipboardImpl::Clear() {}
88
RegisterCallbackSetClipboardPixmapData(CallbackSetClipboardPixmapData callback)89 void ClipboardImpl::RegisterCallbackSetClipboardPixmapData(CallbackSetClipboardPixmapData callback)
90 {
91 callbackSetClipboardPixmapData_ = callback;
92 }
93
RegisterCallbackGetClipboardPixmapData(CallbackGetClipboardPixmapData callback)94 void ClipboardImpl::RegisterCallbackGetClipboardPixmapData(CallbackGetClipboardPixmapData callback)
95 {
96 callbackGetClipboardPixmapData_ = callback;
97 }
98 } // namespace OHOS::Ace::Platform
99