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