• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)23 void 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)73 Ace::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)101 Ace::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