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 #include "auto_fill_manager_util.h" 17 18 #include "hilog_tag_wrapper.h" 19 20 namespace OHOS { 21 namespace AbilityRuntime { ConvertToPopupUIExtensionConfig(const AutoFill::AutoFillCustomConfig & config,Ace::CustomPopupUIExtensionConfig & popupConfig)22void AutoFillManagerUtil::ConvertToPopupUIExtensionConfig(const AutoFill::AutoFillCustomConfig &config, 23 Ace::CustomPopupUIExtensionConfig &popupConfig) 24 { 25 popupConfig.isShowInSubWindow = config.isShowInSubWindow; 26 popupConfig.inspectorId = config.inspectorId; 27 popupConfig.nodeId = config.nodeId; 28 popupConfig.isAutoCancel = config.isAutoCancel; 29 popupConfig.isEnableArrow = config.isEnableArrow; 30 popupConfig.isFocusable = false; 31 if (config.targetSize.has_value()) { 32 Ace::PopupSize popupSize; 33 AutoFill::PopupSize targetSize = config.targetSize.value(); 34 popupSize.unit = ConvertPopupUnit(targetSize.unit); 35 popupSize.width = static_cast<double>(targetSize.width); 36 popupSize.height = static_cast<double>(targetSize.height); 37 popupConfig.targetSize = popupSize; 38 } 39 40 if (config.targetOffset.has_value()) { 41 Ace::PopupOffset popupOffset; 42 AutoFill::PopupOffset targetOffset = config.targetOffset.value(); 43 popupOffset.unit = ConvertPopupUnit(targetOffset.unit); 44 popupOffset.deltaX = static_cast<double>(targetOffset.deltaX); 45 popupOffset.deltaY = static_cast<double>(targetOffset.deltaY); 46 popupConfig.targetOffset = popupOffset; 47 } 48 49 Ace::PopupLength popupLength; 50 if (config.targetSpace.has_value()) { 51 AutoFill::PopupLength targetSpace = config.targetSpace.value(); 52 popupLength.unit = ConvertPopupUnit(targetSpace.unit); 53 popupLength.length = static_cast<double>(targetSpace.length); 54 popupConfig.targetSpace = popupLength; 55 } 56 if (config.arrowOffset.has_value()) { 57 AutoFill::PopupLength arrowOffset = config.arrowOffset.value(); 58 popupLength.unit = ConvertPopupUnit(arrowOffset.unit); 59 popupLength.length = static_cast<double>(arrowOffset.length); 60 popupConfig.arrowOffset = popupLength; 61 } 62 63 if (config.placement.has_value()) { 64 popupConfig.placement = ConvertPopupPlacement(config.placement.value()); 65 } 66 67 popupConfig.backgroundColor = config.backgroundColor; 68 popupConfig.maskColor = config.maskColor; 69 popupConfig.onStateChange = config.onStateChange; 70 } 71 ConvertPopupUnit(const AutoFill::PopupDimensionUnit & unit)72Ace::PopupDimensionUnit AutoFillManagerUtil::ConvertPopupUnit(const AutoFill::PopupDimensionUnit &unit) 73 { 74 Ace::PopupDimensionUnit popupUnit = Ace::PopupDimensionUnit::PX; 75 switch (unit) { 76 case AutoFill::PopupDimensionUnit::VP: 77 popupUnit = Ace::PopupDimensionUnit::VP; 78 break; 79 case AutoFill::PopupDimensionUnit::FP: 80 popupUnit = Ace::PopupDimensionUnit::FP; 81 break; 82 case AutoFill::PopupDimensionUnit::PERCENT: 83 popupUnit = Ace::PopupDimensionUnit::PERCENT; 84 break; 85 case AutoFill::PopupDimensionUnit::LPX: 86 popupUnit = Ace::PopupDimensionUnit::LPX; 87 break; 88 case AutoFill::PopupDimensionUnit::AUTO: 89 popupUnit = Ace::PopupDimensionUnit::AUTO; 90 break; 91 case AutoFill::PopupDimensionUnit::CALC: 92 popupUnit = Ace::PopupDimensionUnit::CALC; 93 break; 94 default: 95 break; 96 } 97 return popupUnit; 98 } 99 ConvertPopupPlacement(const AutoFill::PopupPlacement & placement)100Ace::PopupPlacement AutoFillManagerUtil::ConvertPopupPlacement(const AutoFill::PopupPlacement &placement) 101 { 102 Ace::PopupPlacement popupPlacement = Ace::PopupPlacement::NONE; 103 switch (placement) { 104 case AutoFill::PopupPlacement::LEFT: 105 popupPlacement = Ace::PopupPlacement::LEFT; 106 break; 107 case AutoFill::PopupPlacement::RIGHT: 108 popupPlacement = Ace::PopupPlacement::RIGHT; 109 break; 110 case AutoFill::PopupPlacement::TOP_LEFT: 111 popupPlacement = Ace::PopupPlacement::TOP_LEFT; 112 break; 113 case AutoFill::PopupPlacement::TOP_RIGHT: 114 popupPlacement = Ace::PopupPlacement::TOP_RIGHT; 115 break; 116 case AutoFill::PopupPlacement::BOTTOM_LEFT: 117 popupPlacement = Ace::PopupPlacement::BOTTOM_LEFT; 118 break; 119 case AutoFill::PopupPlacement::BOTTOM_RIGHT: 120 popupPlacement = Ace::PopupPlacement::BOTTOM_RIGHT; 121 break; 122 case AutoFill::PopupPlacement::LEFT_TOP: 123 popupPlacement = Ace::PopupPlacement::LEFT_TOP; 124 break; 125 case AutoFill::PopupPlacement::LEFT_BOTTOM: 126 popupPlacement = Ace::PopupPlacement::LEFT_BOTTOM; 127 break; 128 case AutoFill::PopupPlacement::RIGHT_TOP: 129 popupPlacement = Ace::PopupPlacement::RIGHT_TOP; 130 break; 131 case AutoFill::PopupPlacement::RIGHT_BOTTOM: 132 popupPlacement = Ace::PopupPlacement::RIGHT_BOTTOM; 133 break; 134 default: 135 TAG_LOGE(AAFwkTag::AUTOFILLMGR, "Popup placement invalid"); 136 break; 137 } 138 return popupPlacement; 139 } 140 } // namespace AbilityRuntime 141 } // namespace OHOS 142