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