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 16 #ifndef PRINT_ATTRIBUTR_PREFERENCE_H 17 #define PRINT_ATTRIBUTR_PREFERENCE_H 18 19 #include <string> 20 #include <vector> 21 #include <nlohmann/json.hpp> 22 23 using json = nlohmann::json; 24 namespace OHOS::Print { 25 class PreferenceSetting { 26 public: 27 std::string pagesizeId; 28 std::string orientation; 29 std::string duplex; 30 std::string quality; PreferenceSetting()31 PreferenceSetting() {}; PreferenceSetting(std::string pagesizeId, std::string orientation, std::string duplex, std::string quality)32 PreferenceSetting(std::string pagesizeId, std::string orientation, std::string duplex, std::string quality) 33 : pagesizeId(pagesizeId), orientation(orientation), duplex(duplex), quality(quality) {} 34 BuildPreferenceSettingFromJson(const json& printerAttr)35 static PreferenceSetting BuildPreferenceSettingFromJson(const json& printerAttr) 36 { 37 PreferenceSetting preferenceSetting; 38 if (printerAttr.contains("pagesizeId")) { 39 preferenceSetting.pagesizeId = printerAttr.at("pagesizeId").get<std::string>(); 40 } 41 if (printerAttr.contains("orientation")) { 42 preferenceSetting.orientation = printerAttr.at("orientation").get<std::string>(); 43 } 44 if (printerAttr.contains("duplex")) { 45 preferenceSetting.duplex = printerAttr.at("duplex").get<std::string>(); 46 } 47 if (printerAttr.contains("quality")) { 48 preferenceSetting.quality = printerAttr.at("quality").get<std::string>(); 49 } 50 return preferenceSetting; 51 } 52 BuildPreferenceSettingJson() const53 json BuildPreferenceSettingJson() const 54 { 55 return json{{"pagesizeId", pagesizeId}, {"orientation", orientation}, 56 {"duplex", duplex}, {"quality", quality}}; 57 } ~PreferenceSetting()58 ~PreferenceSetting() {}; 59 }; 60 61 class PrinterPreference { 62 public: 63 std::vector<std::string> pagesizeId; 64 std::vector<std::string> orientation; 65 std::vector<std::string> duplex; 66 std::vector<std::string> quality; 67 PreferenceSetting defaultSetting; 68 PreferenceSetting setting; PrinterPreference()69 PrinterPreference() {}; PrinterPreference(std::vector<std::string> pagesizeId, std::vector<std::string> orientation, std::vector<std::string> duplex, std::vector<std::string> quality, PreferenceSetting defaultSetting, PreferenceSetting setting)70 PrinterPreference(std::vector<std::string> pagesizeId, std::vector<std::string> orientation, 71 std::vector<std::string> duplex, std::vector<std::string> quality, 72 PreferenceSetting defaultSetting, PreferenceSetting setting) 73 : pagesizeId(pagesizeId), orientation(orientation), duplex(duplex), quality(quality), 74 defaultSetting(defaultSetting), setting(setting) {} 75 BuildPrinterPreferenceFromJson(const json& printerAttrs)76 static PrinterPreference BuildPrinterPreferenceFromJson(const json& printerAttrs) 77 { 78 PrinterPreference printerPreference; 79 if (printerAttrs.contains("pagesizeId")) { 80 printerPreference.pagesizeId = printerAttrs.at("pagesizeId").get<std::vector<std::string>>(); 81 } 82 if (printerAttrs.contains("orientation")) { 83 printerPreference.orientation = printerAttrs.at("orientation").get<std::vector<std::string>>(); 84 } 85 if (printerAttrs.contains("duplex")) { 86 printerPreference.duplex = printerAttrs.at("duplex").get<std::vector<std::string>>(); 87 } 88 if (printerAttrs.contains("quality")) { 89 printerPreference.quality = printerAttrs.at("quality").get<std::vector<std::string>>(); 90 } 91 if (printerAttrs.contains("defaultSetting")) { 92 printerPreference.defaultSetting = 93 PreferenceSetting::BuildPreferenceSettingFromJson(printerAttrs.at("defaultSetting")); 94 } 95 if (printerAttrs.contains("setting")) { 96 printerPreference.setting = PreferenceSetting::BuildPreferenceSettingFromJson(printerAttrs.at("setting")); 97 } 98 return printerPreference; 99 } 100 BuildPrinterPreferenceJson() const101 json BuildPrinterPreferenceJson() const 102 { 103 return json{ 104 {"pagesizeId", pagesizeId}, 105 {"orientation", orientation}, 106 {"duplex", duplex}, 107 {"quality", quality}, 108 {"defaultSetting", defaultSetting.BuildPreferenceSettingJson()}, 109 {"setting", setting.BuildPreferenceSettingJson()} 110 }; 111 } ~PrinterPreference()112 ~PrinterPreference() {}; 113 }; 114 } 115 #endif