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 PasteboardUtils(); 36 37 std::vector<std::shared_ptr<PasteDataRecord>> Convert(const std::vector<std::shared_ptr<UnifiedRecord>>& records); 38 static PasteDataProperty Convert(const UnifiedDataProperties& properties); 39 static std::shared_ptr<UnifiedDataProperties> Convert(const PasteDataProperty& properties); 40 static std::vector<std::string> Convert(const std::vector<std::string>& utdIds); 41 static std::string Convert(UDType uDType); 42 static UDType Convert(int32_t uDType, const std::string& mimeType); 43 44 static std::shared_ptr<UnifiedRecord> PasteRecord2Text(std::shared_ptr<PasteDataRecord> record); 45 static std::shared_ptr<UnifiedRecord> PasteRecord2PlaintText(std::shared_ptr<PasteDataRecord> record); 46 static std::shared_ptr<UnifiedRecord> PasteRecord2Want(std::shared_ptr<PasteDataRecord> record); 47 static std::shared_ptr<UnifiedRecord> PasteRecord2Html(std::shared_ptr<PasteDataRecord> record); 48 static std::shared_ptr<UnifiedRecord> PasteRecord2Link(std::shared_ptr<PasteDataRecord> record); 49 static std::shared_ptr<UnifiedRecord> PasteRecord2File(std::shared_ptr<PasteDataRecord> record); 50 static std::shared_ptr<UnifiedRecord> PasteRecord2Image(std::shared_ptr<PasteDataRecord> record); 51 static std::shared_ptr<UnifiedRecord> PasteRecord2Video(std::shared_ptr<PasteDataRecord> record); 52 static std::shared_ptr<UnifiedRecord> PasteRecord2Audio(std::shared_ptr<PasteDataRecord> record); 53 static std::shared_ptr<UnifiedRecord> PasteRecord2Folder(std::shared_ptr<PasteDataRecord> record); 54 static std::shared_ptr<UnifiedRecord> PasteRecord2PixelMap(std::shared_ptr<PasteDataRecord> record); 55 static std::shared_ptr<UnifiedRecord> PasteRecord2SystemDefined(std::shared_ptr<PasteDataRecord> record); 56 static std::shared_ptr<UnifiedRecord> PasteRecord2AppItem(std::shared_ptr<PasteDataRecord> record); 57 static std::shared_ptr<UnifiedRecord> PasteRecord2Form(std::shared_ptr<PasteDataRecord> record); 58 static std::vector<std::shared_ptr<UnifiedRecord>> Custom2AppDefined( 59 std::shared_ptr<PasteDataRecord> record); 60 61 static std::shared_ptr<PasteDataRecord> Text2PasteRecord(std::shared_ptr<UnifiedRecord> record); 62 static std::shared_ptr<PasteDataRecord> PlainText2PasteRecord(std::shared_ptr<UnifiedRecord> record); 63 static std::shared_ptr<PasteDataRecord> Want2PasteRecord(std::shared_ptr<UnifiedRecord> record); 64 static std::shared_ptr<PasteDataRecord> Html2PasteRecord(std::shared_ptr<UnifiedRecord> record); 65 static std::shared_ptr<PasteDataRecord> Link2PasteRecord(std::shared_ptr<UnifiedRecord> record); 66 static std::shared_ptr<PasteDataRecord> File2PasteRecord(std::shared_ptr<UnifiedRecord> record); 67 static std::shared_ptr<PasteDataRecord> Image2PasteRecord(std::shared_ptr<UnifiedRecord> record); 68 static std::shared_ptr<PasteDataRecord> Video2PasteRecord(std::shared_ptr<UnifiedRecord> record); 69 static std::shared_ptr<PasteDataRecord> Audio2PasteRecord(std::shared_ptr<UnifiedRecord> record); 70 static std::shared_ptr<PasteDataRecord> Folder2PasteRecord(std::shared_ptr<UnifiedRecord> record); 71 static std::shared_ptr<PasteDataRecord> PixelMap2PasteRecord(std::shared_ptr<UnifiedRecord> record); 72 static std::shared_ptr<PasteDataRecord> AppItem2PasteRecord(std::shared_ptr<UnifiedRecord> record); 73 static std::shared_ptr<PasteDataRecord> Form2PasteRecord(std::shared_ptr<UnifiedRecord> record); 74 static std::shared_ptr<PasteDataRecord> SystemDefined2PasteRecord(std::shared_ptr<UnifiedRecord> record); 75 static std::shared_ptr<PasteDataRecord> AppDefined2PasteRecord(std::shared_ptr<UnifiedRecord> record); 76 77 static ShareOption UdmfOptions2PbOption(ShareOptions udmfOptions); 78 static ShareOptions PbOption2UdmfOptions(ShareOption pbOption); 79 80 std::shared_ptr<UnifiedRecord> ConvertToUnifiedRecord(const std::shared_ptr<PasteDataRecord> &record); 81 std::shared_ptr<PasteDataRecord> ConvertToPasteDataRecord(const std::shared_ptr<UnifiedRecord> &record); 82 }; 83 } // namespace MiscServices 84 } // namespace OHOS 85 #endif // PASTE_BOARD_UTILS_H