1e0dac50fSopenharmony_ci/*
2e0dac50fSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License.
5e0dac50fSopenharmony_ci * You may obtain a copy of the License at
6e0dac50fSopenharmony_ci *
7e0dac50fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e0dac50fSopenharmony_ci *
9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and
13e0dac50fSopenharmony_ci * limitations under the License.
14e0dac50fSopenharmony_ci */
15e0dac50fSopenharmony_ci
16e0dac50fSopenharmony_ci#include "window_option.h"
17e0dac50fSopenharmony_ci#include "window_helper.h"
18e0dac50fSopenharmony_ci#include "wm_common.h"
19e0dac50fSopenharmony_ci
20e0dac50fSopenharmony_cinamespace OHOS {
21e0dac50fSopenharmony_cinamespace Rosen {
22e0dac50fSopenharmony_ciWindowOption::WindowOption(): windowTag_(WindowTag::SYSTEM_WINDOW)
23e0dac50fSopenharmony_ci{
24e0dac50fSopenharmony_ci}
25e0dac50fSopenharmony_ci
26e0dac50fSopenharmony_civoid WindowOption::SetWindowRect(const struct Rect& rect)
27e0dac50fSopenharmony_ci{
28e0dac50fSopenharmony_ci    windowRect_ = rect;
29e0dac50fSopenharmony_ci}
30e0dac50fSopenharmony_ci
31e0dac50fSopenharmony_civoid WindowOption::SetWindowType(WindowType type)
32e0dac50fSopenharmony_ci{
33e0dac50fSopenharmony_ci    type_ = type;
34e0dac50fSopenharmony_ci}
35e0dac50fSopenharmony_ci
36e0dac50fSopenharmony_civoid WindowOption::SetWindowMode(WindowMode mode)
37e0dac50fSopenharmony_ci{
38e0dac50fSopenharmony_ci    if (!WindowHelper::IsValidWindowMode(mode)) {
39e0dac50fSopenharmony_ci        return;
40e0dac50fSopenharmony_ci    }
41e0dac50fSopenharmony_ci    mode_ = mode;
42e0dac50fSopenharmony_ci}
43e0dac50fSopenharmony_ci
44e0dac50fSopenharmony_civoid WindowOption::SetFocusable(bool isFocusable)
45e0dac50fSopenharmony_ci{
46e0dac50fSopenharmony_ci    focusable_ = isFocusable;
47e0dac50fSopenharmony_ci}
48e0dac50fSopenharmony_ci
49e0dac50fSopenharmony_civoid WindowOption::SetTouchable(bool isTouchable)
50e0dac50fSopenharmony_ci{
51e0dac50fSopenharmony_ci    touchable_ = isTouchable;
52e0dac50fSopenharmony_ci}
53e0dac50fSopenharmony_ci
54e0dac50fSopenharmony_civoid WindowOption::SetDisplayId(DisplayId displayId)
55e0dac50fSopenharmony_ci{
56e0dac50fSopenharmony_ci    displayId_ = displayId;
57e0dac50fSopenharmony_ci}
58e0dac50fSopenharmony_ci
59e0dac50fSopenharmony_civoid WindowOption::SetParentId(uint32_t parentId)
60e0dac50fSopenharmony_ci{
61e0dac50fSopenharmony_ci    parentId_ = parentId;
62e0dac50fSopenharmony_ci}
63e0dac50fSopenharmony_ci
64e0dac50fSopenharmony_civoid WindowOption::SetWindowName(const std::string& windowName)
65e0dac50fSopenharmony_ci{
66e0dac50fSopenharmony_ci    windowName_ = windowName;
67e0dac50fSopenharmony_ci}
68e0dac50fSopenharmony_ci
69e0dac50fSopenharmony_civoid WindowOption::AddWindowFlag(WindowFlag flag)
70e0dac50fSopenharmony_ci{
71e0dac50fSopenharmony_ci    flags_ |= static_cast<uint32_t>(flag);
72e0dac50fSopenharmony_ci}
73e0dac50fSopenharmony_ci
74e0dac50fSopenharmony_civoid WindowOption::RemoveWindowFlag(WindowFlag flag)
75e0dac50fSopenharmony_ci{
76e0dac50fSopenharmony_ci    flags_ &= ~(static_cast<uint32_t>(flag));
77e0dac50fSopenharmony_ci}
78e0dac50fSopenharmony_ci
79e0dac50fSopenharmony_civoid WindowOption::SetWindowFlags(uint32_t flags)
80e0dac50fSopenharmony_ci{
81e0dac50fSopenharmony_ci    flags_ = flags;
82e0dac50fSopenharmony_ci}
83e0dac50fSopenharmony_ci
84e0dac50fSopenharmony_civoid WindowOption::SetSystemBarProperty(WindowType type, const SystemBarProperty& property)
85e0dac50fSopenharmony_ci{
86e0dac50fSopenharmony_ci    if (type == WindowType::WINDOW_TYPE_STATUS_BAR || type == WindowType::WINDOW_TYPE_NAVIGATION_BAR) {
87e0dac50fSopenharmony_ci        sysBarPropMap_[type] = property;
88e0dac50fSopenharmony_ci    }
89e0dac50fSopenharmony_ci}
90e0dac50fSopenharmony_ci
91e0dac50fSopenharmony_ciRect WindowOption::GetWindowRect() const
92e0dac50fSopenharmony_ci{
93e0dac50fSopenharmony_ci    return windowRect_;
94e0dac50fSopenharmony_ci}
95e0dac50fSopenharmony_ci
96e0dac50fSopenharmony_ciWindowType WindowOption::GetWindowType() const
97e0dac50fSopenharmony_ci{
98e0dac50fSopenharmony_ci    return type_;
99e0dac50fSopenharmony_ci}
100e0dac50fSopenharmony_ci
101e0dac50fSopenharmony_ciWindowMode WindowOption::GetWindowMode() const
102e0dac50fSopenharmony_ci{
103e0dac50fSopenharmony_ci    return mode_;
104e0dac50fSopenharmony_ci}
105e0dac50fSopenharmony_ci
106e0dac50fSopenharmony_cibool WindowOption::GetFocusable() const
107e0dac50fSopenharmony_ci{
108e0dac50fSopenharmony_ci    return focusable_;
109e0dac50fSopenharmony_ci}
110e0dac50fSopenharmony_ci
111e0dac50fSopenharmony_cibool WindowOption::GetTouchable() const
112e0dac50fSopenharmony_ci{
113e0dac50fSopenharmony_ci    return touchable_;
114e0dac50fSopenharmony_ci}
115e0dac50fSopenharmony_ci
116e0dac50fSopenharmony_ciDisplayId WindowOption::GetDisplayId() const
117e0dac50fSopenharmony_ci{
118e0dac50fSopenharmony_ci    return displayId_;
119e0dac50fSopenharmony_ci}
120e0dac50fSopenharmony_ci
121e0dac50fSopenharmony_ciuint32_t WindowOption::GetParentId() const
122e0dac50fSopenharmony_ci{
123e0dac50fSopenharmony_ci    return parentId_;
124e0dac50fSopenharmony_ci}
125e0dac50fSopenharmony_ci
126e0dac50fSopenharmony_ciconst std::string& WindowOption::GetWindowName() const
127e0dac50fSopenharmony_ci{
128e0dac50fSopenharmony_ci    return windowName_;
129e0dac50fSopenharmony_ci}
130e0dac50fSopenharmony_ci
131e0dac50fSopenharmony_ciuint32_t WindowOption::GetWindowFlags() const
132e0dac50fSopenharmony_ci{
133e0dac50fSopenharmony_ci    return flags_;
134e0dac50fSopenharmony_ci}
135e0dac50fSopenharmony_ci
136e0dac50fSopenharmony_civoid WindowOption::SetHitOffset(int32_t x, int32_t y)
137e0dac50fSopenharmony_ci{
138e0dac50fSopenharmony_ci    hitOffset_.x = x;
139e0dac50fSopenharmony_ci    hitOffset_.y = y;
140e0dac50fSopenharmony_ci}
141e0dac50fSopenharmony_ci
142e0dac50fSopenharmony_civoid WindowOption::SetWindowTag(WindowTag windowTag)
143e0dac50fSopenharmony_ci{
144e0dac50fSopenharmony_ci    windowTag_ = windowTag;
145e0dac50fSopenharmony_ci}
146e0dac50fSopenharmony_ci
147e0dac50fSopenharmony_ciWindowTag WindowOption::GetWindowTag() const
148e0dac50fSopenharmony_ci{
149e0dac50fSopenharmony_ci    return windowTag_;
150e0dac50fSopenharmony_ci}
151e0dac50fSopenharmony_ci
152e0dac50fSopenharmony_civoid WindowOption::SetWindowSessionType(WindowSessionType sessionType)
153e0dac50fSopenharmony_ci{
154e0dac50fSopenharmony_ci    sessionType_ = sessionType;
155e0dac50fSopenharmony_ci}
156e0dac50fSopenharmony_ci
157e0dac50fSopenharmony_ciWindowSessionType WindowOption::GetWindowSessionType() const
158e0dac50fSopenharmony_ci{
159e0dac50fSopenharmony_ci    return sessionType_;
160e0dac50fSopenharmony_ci}
161e0dac50fSopenharmony_ci
162e0dac50fSopenharmony_civoid WindowOption::SetMainHandlerAvailable(bool isMainHandlerAvailable)
163e0dac50fSopenharmony_ci{
164e0dac50fSopenharmony_ci    isMainHandlerAvailable_ = isMainHandlerAvailable;
165e0dac50fSopenharmony_ci}
166e0dac50fSopenharmony_ci
167e0dac50fSopenharmony_cibool WindowOption::GetMainHandlerAvailable() const
168e0dac50fSopenharmony_ci{
169e0dac50fSopenharmony_ci    return isMainHandlerAvailable_;
170e0dac50fSopenharmony_ci}
171e0dac50fSopenharmony_ci
172e0dac50fSopenharmony_ciconst PointInfo& WindowOption::GetHitOffset() const
173e0dac50fSopenharmony_ci{
174e0dac50fSopenharmony_ci    return hitOffset_;
175e0dac50fSopenharmony_ci}
176e0dac50fSopenharmony_ci
177e0dac50fSopenharmony_ciconst std::unordered_map<WindowType, SystemBarProperty>& WindowOption::GetSystemBarProperty() const
178e0dac50fSopenharmony_ci{
179e0dac50fSopenharmony_ci    return sysBarPropMap_;
180e0dac50fSopenharmony_ci}
181e0dac50fSopenharmony_ci
182e0dac50fSopenharmony_civoid WindowOption::SetKeepScreenOn(bool keepScreenOn)
183e0dac50fSopenharmony_ci{
184e0dac50fSopenharmony_ci    keepScreenOn_ = keepScreenOn;
185e0dac50fSopenharmony_ci}
186e0dac50fSopenharmony_ci
187e0dac50fSopenharmony_cibool WindowOption::IsKeepScreenOn() const
188e0dac50fSopenharmony_ci{
189e0dac50fSopenharmony_ci    return keepScreenOn_;
190e0dac50fSopenharmony_ci}
191e0dac50fSopenharmony_ci
192e0dac50fSopenharmony_civoid WindowOption::SetTurnScreenOn(bool turnScreenOn)
193e0dac50fSopenharmony_ci{
194e0dac50fSopenharmony_ci    turnScreenOn_ = turnScreenOn;
195e0dac50fSopenharmony_ci}
196e0dac50fSopenharmony_ci
197e0dac50fSopenharmony_cibool WindowOption::IsTurnScreenOn() const
198e0dac50fSopenharmony_ci{
199e0dac50fSopenharmony_ci    return turnScreenOn_;
200e0dac50fSopenharmony_ci}
201e0dac50fSopenharmony_ci
202e0dac50fSopenharmony_civoid WindowOption::SetBrightness(float brightness)
203e0dac50fSopenharmony_ci{
204e0dac50fSopenharmony_ci    brightness_ = brightness;
205e0dac50fSopenharmony_ci}
206e0dac50fSopenharmony_ci
207e0dac50fSopenharmony_cifloat WindowOption::GetBrightness() const
208e0dac50fSopenharmony_ci{
209e0dac50fSopenharmony_ci    return brightness_;
210e0dac50fSopenharmony_ci}
211e0dac50fSopenharmony_ci
212e0dac50fSopenharmony_civoid WindowOption::SetCallingWindow(uint32_t windowId)
213e0dac50fSopenharmony_ci{
214e0dac50fSopenharmony_ci    callingWindow_ = windowId;
215e0dac50fSopenharmony_ci}
216e0dac50fSopenharmony_ci
217e0dac50fSopenharmony_ciuint32_t WindowOption::GetCallingWindow() const
218e0dac50fSopenharmony_ci{
219e0dac50fSopenharmony_ci    return callingWindow_;
220e0dac50fSopenharmony_ci}
221e0dac50fSopenharmony_ci
222e0dac50fSopenharmony_ciOrientation WindowOption::GetRequestedOrientation() const
223e0dac50fSopenharmony_ci{
224e0dac50fSopenharmony_ci    return requestedOrientation_;
225e0dac50fSopenharmony_ci}
226e0dac50fSopenharmony_ci
227e0dac50fSopenharmony_civoid WindowOption::SetRequestedOrientation(Orientation orientation)
228e0dac50fSopenharmony_ci{
229e0dac50fSopenharmony_ci    requestedOrientation_ = orientation;
230e0dac50fSopenharmony_ci}
231e0dac50fSopenharmony_ci
232e0dac50fSopenharmony_civoid WindowOption::SetBundleName(const std::string bundleName)
233e0dac50fSopenharmony_ci{
234e0dac50fSopenharmony_ci    bundleName_ = bundleName;
235e0dac50fSopenharmony_ci}
236e0dac50fSopenharmony_ci
237e0dac50fSopenharmony_ciconst std::string WindowOption::GetBundleName() const
238e0dac50fSopenharmony_ci{
239e0dac50fSopenharmony_ci    return bundleName_;
240e0dac50fSopenharmony_ci}
241e0dac50fSopenharmony_ci
242e0dac50fSopenharmony_civoid WindowOption::SetSubWindowTitle(const std::string& subWindowTitle)
243e0dac50fSopenharmony_ci{
244e0dac50fSopenharmony_ci    subWindowTitle_ = subWindowTitle;
245e0dac50fSopenharmony_ci}
246e0dac50fSopenharmony_ci
247e0dac50fSopenharmony_cistd::string WindowOption::GetSubWindowTitle() const
248e0dac50fSopenharmony_ci{
249e0dac50fSopenharmony_ci    return subWindowTitle_;
250e0dac50fSopenharmony_ci}
251e0dac50fSopenharmony_ci
252e0dac50fSopenharmony_civoid WindowOption::SetSubWindowDecorEnable(bool subWindowDecorEnable)
253e0dac50fSopenharmony_ci{
254e0dac50fSopenharmony_ci    subWindowDecorEnable_ = subWindowDecorEnable;
255e0dac50fSopenharmony_ci}
256e0dac50fSopenharmony_ci
257e0dac50fSopenharmony_cibool WindowOption::GetSubWindowDecorEnable() const
258e0dac50fSopenharmony_ci{
259e0dac50fSopenharmony_ci    return subWindowDecorEnable_;
260e0dac50fSopenharmony_ci}
261e0dac50fSopenharmony_ci
262e0dac50fSopenharmony_civoid WindowOption::SetOnlySupportSceneBoard(bool onlySupportSceneBoard)
263e0dac50fSopenharmony_ci{
264e0dac50fSopenharmony_ci    onlySupportSceneBoard_ = onlySupportSceneBoard;
265e0dac50fSopenharmony_ci}
266e0dac50fSopenharmony_ci
267e0dac50fSopenharmony_cibool WindowOption::GetOnlySupportSceneBoard() const
268e0dac50fSopenharmony_ci{
269e0dac50fSopenharmony_ci    return onlySupportSceneBoard_;
270e0dac50fSopenharmony_ci}
271e0dac50fSopenharmony_ci
272e0dac50fSopenharmony_civoid WindowOption::SetRealParentId(int32_t realParentId)
273e0dac50fSopenharmony_ci{
274e0dac50fSopenharmony_ci    realParentId_ = realParentId;
275e0dac50fSopenharmony_ci}
276e0dac50fSopenharmony_ci
277e0dac50fSopenharmony_ciint32_t WindowOption::GetRealParentId() const
278e0dac50fSopenharmony_ci{
279e0dac50fSopenharmony_ci    return realParentId_;
280e0dac50fSopenharmony_ci}
281e0dac50fSopenharmony_ci
282e0dac50fSopenharmony_civoid WindowOption::SetParentWindowType(WindowType parentWindowType)
283e0dac50fSopenharmony_ci{
284e0dac50fSopenharmony_ci    parentWindowType_ = parentWindowType;
285e0dac50fSopenharmony_ci}
286e0dac50fSopenharmony_ci
287e0dac50fSopenharmony_ciWindowType WindowOption::GetParentWindowType() const
288e0dac50fSopenharmony_ci{
289e0dac50fSopenharmony_ci    return parentWindowType_;
290e0dac50fSopenharmony_ci}
291e0dac50fSopenharmony_ci
292e0dac50fSopenharmony_civoid WindowOption::SetIsUIExtFirstSubWindow(bool isUIExtFirstSubWindow)
293e0dac50fSopenharmony_ci{
294e0dac50fSopenharmony_ci    isUIExtFirstSubWindow_ = isUIExtFirstSubWindow;
295e0dac50fSopenharmony_ci}
296e0dac50fSopenharmony_ci
297e0dac50fSopenharmony_cibool WindowOption::GetIsUIExtFirstSubWindow() const
298e0dac50fSopenharmony_ci{
299e0dac50fSopenharmony_ci    return isUIExtFirstSubWindow_;
300e0dac50fSopenharmony_ci}
301e0dac50fSopenharmony_ci
302e0dac50fSopenharmony_civoid WindowOption::SetUIExtensionUsage(uint32_t uiExtensionUsage)
303e0dac50fSopenharmony_ci{
304e0dac50fSopenharmony_ci    if (uiExtensionUsage < static_cast<uint32_t>(UIExtensionUsage::UIEXTENSION_USAGE_END)) {
305e0dac50fSopenharmony_ci        uiExtensionUsage_ = uiExtensionUsage;
306e0dac50fSopenharmony_ci    } else {
307e0dac50fSopenharmony_ci        uiExtensionUsage_ = static_cast<uint32_t>(UIExtensionUsage::EMBEDDED);
308e0dac50fSopenharmony_ci    }
309e0dac50fSopenharmony_ci}
310e0dac50fSopenharmony_ci
311e0dac50fSopenharmony_ciuint32_t WindowOption::GetUIExtensionUsage() const
312e0dac50fSopenharmony_ci{
313e0dac50fSopenharmony_ci    return uiExtensionUsage_;
314e0dac50fSopenharmony_ci}
315e0dac50fSopenharmony_ci
316e0dac50fSopenharmony_civoid WindowOption::SetDialogDecorEnable(bool decorEnable)
317e0dac50fSopenharmony_ci{
318e0dac50fSopenharmony_ci    dialogDecorEnable_ = decorEnable;
319e0dac50fSopenharmony_ci}
320e0dac50fSopenharmony_ci
321e0dac50fSopenharmony_civoid WindowOption::SetIsUIExtAnySubWindow(bool isUIExtAnySubWindow)
322e0dac50fSopenharmony_ci{
323e0dac50fSopenharmony_ci    isUIExtAnySubWindow_ = isUIExtAnySubWindow;
324e0dac50fSopenharmony_ci}
325e0dac50fSopenharmony_ci
326e0dac50fSopenharmony_cibool WindowOption::GetIsUIExtAnySubWindow() const
327e0dac50fSopenharmony_ci{
328e0dac50fSopenharmony_ci    return isUIExtAnySubWindow_;
329e0dac50fSopenharmony_ci}
330e0dac50fSopenharmony_ci
331e0dac50fSopenharmony_cibool WindowOption::GetDialogDecorEnable() const
332e0dac50fSopenharmony_ci{
333e0dac50fSopenharmony_ci    return dialogDecorEnable_;
334e0dac50fSopenharmony_ci}
335e0dac50fSopenharmony_ci
336e0dac50fSopenharmony_civoid WindowOption::SetDialogTitle(const std::string& dialogTitle)
337e0dac50fSopenharmony_ci{
338e0dac50fSopenharmony_ci    dialogTitle_ = dialogTitle;
339e0dac50fSopenharmony_ci}
340e0dac50fSopenharmony_ci
341e0dac50fSopenharmony_cistd::string WindowOption::GetDialogTitle() const
342e0dac50fSopenharmony_ci{
343e0dac50fSopenharmony_ci    return dialogTitle_;
344e0dac50fSopenharmony_ci}
345e0dac50fSopenharmony_ci
346e0dac50fSopenharmony_civoid WindowOption::SetWindowTopmost(bool isTopmost)
347e0dac50fSopenharmony_ci{
348e0dac50fSopenharmony_ci    isTopmost_ = isTopmost;
349e0dac50fSopenharmony_ci}
350e0dac50fSopenharmony_ci
351e0dac50fSopenharmony_cibool WindowOption::GetWindowTopmost() const
352e0dac50fSopenharmony_ci{
353e0dac50fSopenharmony_ci    return isTopmost_;
354e0dac50fSopenharmony_ci}
355e0dac50fSopenharmony_ci
356e0dac50fSopenharmony_ci} // namespace Rosen
357e0dac50fSopenharmony_ci} // namespace OHOS
358e0dac50fSopenharmony_ci
359