1 /* 2 * Copyright (C) 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 #ifndef PASTE_BOARD_UTILS_H 16 #define PASTE_BOARD_UTILS_H 17 18 #include "paste_data.h" 19 #include "paste_data_record.h" 20 #include "unified_data.h" 21 #include "unified_record.h" 22 namespace OHOS { 23 namespace MiscServices { 24 class API_EXPORT PasteboardUtils { 25 public: 26 using UnifiedRecord = UDMF::UnifiedRecord; 27 using UnifiedData = UDMF::UnifiedData; 28 using UnifiedDataProperties = UDMF::UnifiedDataProperties; 29 using UDType = UDMF::UDType; 30 using ShareOptions = UDMF::ShareOptions; 31 static PasteboardUtils& GetInstance(); 32 std::shared_ptr<PasteData> Convert(const UnifiedData& unifiedData); 33 std::shared_ptr<UnifiedData> Convert(const PasteData& pasteData); 34 std::vector<std::string> DeduplicateVector(const std::vector<std::string> &vec); 35 36 private: 37 using Convert2URecord = std::function<std::shared_ptr<UnifiedRecord>(std::shared_ptr<PasteDataRecord>)>; 38 using Convert2PRecord = std::function<std::shared_ptr<PasteDataRecord>(std::shared_ptr<UnifiedRecord>)>; 39 40 PasteboardUtils(); 41 42 std::vector<std::shared_ptr<PasteDataRecord>> Convert(const std::vector<std::shared_ptr<UnifiedRecord>>& records); 43 static PasteDataProperty Convert(const UnifiedDataProperties& properties); 44 static std::shared_ptr<UnifiedDataProperties> Convert(const PasteDataProperty& properties); 45 static std::vector<std::string> Convert(const std::vector<std::string>& utdIds); 46 static std::string Convert(UDType uDType); 47 static UDType Convert(int32_t uDType, const std::string& mimeType); 48 49 void InitDecodeMap(); 50 51 static std::shared_ptr<UnifiedRecord> PasteRecord2Text(std::shared_ptr<PasteDataRecord> record); 52 static std::shared_ptr<UnifiedRecord> PasteRecord2PlaintText(std::shared_ptr<PasteDataRecord> record); 53 static std::shared_ptr<UnifiedRecord> PasteRecord2Want(std::shared_ptr<PasteDataRecord> record); 54 static std::shared_ptr<UnifiedRecord> PasteRecord2Html(std::shared_ptr<PasteDataRecord> record); 55 static std::shared_ptr<UnifiedRecord> PasteRecord2Link(std::shared_ptr<PasteDataRecord> record); 56 static std::shared_ptr<UnifiedRecord> PasteRecord2File(std::shared_ptr<PasteDataRecord> record); 57 static std::shared_ptr<UnifiedRecord> PasteRecord2Image(std::shared_ptr<PasteDataRecord> record); 58 static std::shared_ptr<UnifiedRecord> PasteRecord2Video(std::shared_ptr<PasteDataRecord> record); 59 static std::shared_ptr<UnifiedRecord> PasteRecord2Audio(std::shared_ptr<PasteDataRecord> record); 60 static std::shared_ptr<UnifiedRecord> PasteRecord2Folder(std::shared_ptr<PasteDataRecord> record); 61 static std::shared_ptr<UnifiedRecord> PasteRecord2PixelMap(std::shared_ptr<PasteDataRecord> record); 62 static std::shared_ptr<UnifiedRecord> PasteRecord2SystemDefined(std::shared_ptr<PasteDataRecord> record); 63 static std::shared_ptr<UnifiedRecord> PasteRecord2AppItem(std::shared_ptr<PasteDataRecord> record); 64 static std::shared_ptr<UnifiedRecord> PasteRecord2Form(std::shared_ptr<PasteDataRecord> record); 65 static std::vector<std::shared_ptr<UnifiedRecord>> Custom2AppDefined( 66 std::shared_ptr<PasteDataRecord> record); 67 68 static std::shared_ptr<PasteDataRecord> Text2PasteRecord(std::shared_ptr<UnifiedRecord> record); 69 static std::shared_ptr<PasteDataRecord> PlainText2PasteRecord(std::shared_ptr<UnifiedRecord> record); 70 static std::shared_ptr<PasteDataRecord> Want2PasteRecord(std::shared_ptr<UnifiedRecord> record); 71 static std::shared_ptr<PasteDataRecord> Html2PasteRecord(std::shared_ptr<UnifiedRecord> record); 72 static std::shared_ptr<PasteDataRecord> Link2PasteRecord(std::shared_ptr<UnifiedRecord> record); 73 static std::shared_ptr<PasteDataRecord> File2PasteRecord(std::shared_ptr<UnifiedRecord> record); 74 static std::shared_ptr<PasteDataRecord> Image2PasteRecord(std::shared_ptr<UnifiedRecord> record); 75 static std::shared_ptr<PasteDataRecord> Video2PasteRecord(std::shared_ptr<UnifiedRecord> record); 76 static std::shared_ptr<PasteDataRecord> Audio2PasteRecord(std::shared_ptr<UnifiedRecord> record); 77 static std::shared_ptr<PasteDataRecord> Folder2PasteRecord(std::shared_ptr<UnifiedRecord> record); 78 static std::shared_ptr<PasteDataRecord> PixelMap2PasteRecord(std::shared_ptr<UnifiedRecord> record); 79 static std::shared_ptr<PasteDataRecord> AppItem2PasteRecord(std::shared_ptr<UnifiedRecord> record); 80 static std::shared_ptr<PasteDataRecord> Form2PasteRecord(std::shared_ptr<UnifiedRecord> record); 81 static std::shared_ptr<PasteDataRecord> SystemDefined2PasteRecord(std::shared_ptr<UnifiedRecord> record); 82 static std::shared_ptr<PasteDataRecord> AppDefined2PasteRecord(std::shared_ptr<UnifiedRecord> record); 83 84 std::map<int32_t, Convert2URecord> convert2URecordMap_; 85 std::map<int32_t, Convert2PRecord> convert2PRecordMap_; 86 static ShareOption UdmfOptions2PbOption(ShareOptions udmfOptions); 87 static ShareOptions PbOption2UdmfOptions(ShareOption pbOption); 88 }; 89 } // namespace MiscServices 90 } // namespace OHOS 91 #endif // PASTE_BOARD_UTILS_H