1e0dac50fSopenharmony_ci/*
2e0dac50fSopenharmony_ci * Copyright (c) 2023 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
18e0dac50fSopenharmony_ci#include "window_helper.h"
19e0dac50fSopenharmony_ci#include "wm_common.h"
20e0dac50fSopenharmony_ci
21e0dac50fSopenharmony_cinamespace OHOS {
22e0dac50fSopenharmony_cinamespace Rosen {
23e0dac50fSopenharmony_ciWindowOption::WindowOption(): windowTag_(WindowTag::SYSTEM_WINDOW)
24e0dac50fSopenharmony_ci{
25e0dac50fSopenharmony_ci    AddWindowFlag(WindowFlag::WINDOW_FLAG_NEED_AVOID);
26e0dac50fSopenharmony_ci}
27e0dac50fSopenharmony_ci
28e0dac50fSopenharmony_civoid WindowOption::SetWindowMode(WindowMode mode)
29e0dac50fSopenharmony_ci{
30e0dac50fSopenharmony_ci    if (!WindowHelper::IsValidWindowMode(mode)) {
31e0dac50fSopenharmony_ci        return;
32e0dac50fSopenharmony_ci    }
33e0dac50fSopenharmony_ci    mode_ = mode;
34e0dac50fSopenharmony_ci}
35e0dac50fSopenharmony_ci
36e0dac50fSopenharmony_civoid WindowOption::SetWindowType(WindowType type)
37e0dac50fSopenharmony_ci{
38e0dac50fSopenharmony_ci    type_ = type;
39e0dac50fSopenharmony_ci}
40e0dac50fSopenharmony_ci
41e0dac50fSopenharmony_civoid WindowOption::SetParentId(uint32_t parentId)
42e0dac50fSopenharmony_ci{
43e0dac50fSopenharmony_ci    parentId_ = parentId;
44e0dac50fSopenharmony_ci}
45e0dac50fSopenharmony_ci
46e0dac50fSopenharmony_civoid WindowOption::SetDisplayId(DisplayId displayId)
47e0dac50fSopenharmony_ci{
48e0dac50fSopenharmony_ci    displayId_ = displayId;
49e0dac50fSopenharmony_ci}
50e0dac50fSopenharmony_ci
51e0dac50fSopenharmony_civoid WindowOption::SetFocusable(bool isFocusable)
52e0dac50fSopenharmony_ci{
53e0dac50fSopenharmony_ci    focusable_ = isFocusable;
54e0dac50fSopenharmony_ci}
55e0dac50fSopenharmony_ci
56e0dac50fSopenharmony_civoid WindowOption::SetTouchable(bool isTouchable)
57e0dac50fSopenharmony_ci{
58e0dac50fSopenharmony_ci    touchable_ = isTouchable;
59e0dac50fSopenharmony_ci}
60e0dac50fSopenharmony_ci
61e0dac50fSopenharmony_civoid WindowOption::SetWindowName(const std::string& windowName)
62e0dac50fSopenharmony_ci{
63e0dac50fSopenharmony_ci    windowName_ = windowName;
64e0dac50fSopenharmony_ci}
65e0dac50fSopenharmony_ci
66e0dac50fSopenharmony_civoid WindowOption::SetWindowFlags(uint32_t flags)
67e0dac50fSopenharmony_ci{
68e0dac50fSopenharmony_ci    flags_ = flags;
69e0dac50fSopenharmony_ci}
70e0dac50fSopenharmony_ci
71e0dac50fSopenharmony_civoid WindowOption::RemoveWindowFlag(WindowFlag flag)
72e0dac50fSopenharmony_ci{
73e0dac50fSopenharmony_ci    flags_ &= ~(static_cast<uint32_t>(flag));
74e0dac50fSopenharmony_ci}
75e0dac50fSopenharmony_ci
76e0dac50fSopenharmony_civoid WindowOption::AddWindowFlag(WindowFlag flag)
77e0dac50fSopenharmony_ci{
78e0dac50fSopenharmony_ci    flags_ |= static_cast<uint32_t>(flag);
79e0dac50fSopenharmony_ci}
80e0dac50fSopenharmony_ci
81e0dac50fSopenharmony_civoid WindowOption::SetWindowTag(WindowTag windowTag)
82e0dac50fSopenharmony_ci{
83e0dac50fSopenharmony_ci    windowTag_ = windowTag;
84e0dac50fSopenharmony_ci}
85e0dac50fSopenharmony_ci
86e0dac50fSopenharmony_civoid WindowOption::SetSystemBarProperty(WindowType type, const SystemBarProperty& property)
87e0dac50fSopenharmony_ci{
88e0dac50fSopenharmony_ci    if (type == WindowType::WINDOW_TYPE_STATUS_BAR || type == WindowType::WINDOW_TYPE_NAVIGATION_BAR) {
89e0dac50fSopenharmony_ci        sysBarPropMap_[type] = property;
90e0dac50fSopenharmony_ci    }
91e0dac50fSopenharmony_ci}
92e0dac50fSopenharmony_ci
93e0dac50fSopenharmony_civoid WindowOption::SetWindowSessionType(WindowSessionType sessionType)
94e0dac50fSopenharmony_ci{
95e0dac50fSopenharmony_ci    sessionType_ = sessionType;
96e0dac50fSopenharmony_ci}
97e0dac50fSopenharmony_ci
98e0dac50fSopenharmony_civoid WindowOption::SetHitOffset(int32_t x, int32_t y)
99e0dac50fSopenharmony_ci{
100e0dac50fSopenharmony_ci    hitOffset_.x = x;
101e0dac50fSopenharmony_ci    hitOffset_.y = y;
102e0dac50fSopenharmony_ci}
103e0dac50fSopenharmony_ci
104e0dac50fSopenharmony_cibool WindowOption::IsTurnScreenOn() const
105e0dac50fSopenharmony_ci{
106e0dac50fSopenharmony_ci    return turnScreenOn_;
107e0dac50fSopenharmony_ci}
108e0dac50fSopenharmony_ci
109e0dac50fSopenharmony_civoid WindowOption::SetTurnScreenOn(bool turnScreenOn)
110e0dac50fSopenharmony_ci{
111e0dac50fSopenharmony_ci    turnScreenOn_ = turnScreenOn;
112e0dac50fSopenharmony_ci}
113e0dac50fSopenharmony_ci
114e0dac50fSopenharmony_cibool WindowOption::IsKeepScreenOn() const
115e0dac50fSopenharmony_ci{
116e0dac50fSopenharmony_ci    return keepScreenOn_;
117e0dac50fSopenharmony_ci}
118e0dac50fSopenharmony_ci
119e0dac50fSopenharmony_civoid WindowOption::SetKeepScreenOn(bool keepScreenOn)
120e0dac50fSopenharmony_ci{
121e0dac50fSopenharmony_ci    keepScreenOn_ = keepScreenOn;
122e0dac50fSopenharmony_ci}
123e0dac50fSopenharmony_ci
124e0dac50fSopenharmony_civoid WindowOption::SetCallingWindow(uint32_t windowId)
125e0dac50fSopenharmony_ci{
126e0dac50fSopenharmony_ci    callingWindow_ = windowId;
127e0dac50fSopenharmony_ci}
128e0dac50fSopenharmony_ci
129e0dac50fSopenharmony_civoid WindowOption::SetRequestedOrientation(Orientation orientation)
130e0dac50fSopenharmony_ci{
131e0dac50fSopenharmony_ci    requestedOrientation_ = orientation;
132e0dac50fSopenharmony_ci}
133e0dac50fSopenharmony_ci
134e0dac50fSopenharmony_civoid WindowOption::SetBrightness(float brightness)
135e0dac50fSopenharmony_ci{
136e0dac50fSopenharmony_ci    brightness_ = brightness;
137e0dac50fSopenharmony_ci}
138e0dac50fSopenharmony_ci
139e0dac50fSopenharmony_civoid WindowOption::SetMainHandlerAvailable(bool isMainHandlerAvailable)
140e0dac50fSopenharmony_ci{
141e0dac50fSopenharmony_ci    isMainHandlerAvailable_ = isMainHandlerAvailable;
142e0dac50fSopenharmony_ci}
143e0dac50fSopenharmony_ci
144e0dac50fSopenharmony_civoid WindowOption::SetSubWindowDecorEnable(bool subWindowDecorEnable)
145e0dac50fSopenharmony_ci{
146e0dac50fSopenharmony_ci    subWindowDecorEnable_ = subWindowDecorEnable;
147e0dac50fSopenharmony_ci}
148e0dac50fSopenharmony_ci
149e0dac50fSopenharmony_civoid WindowOption::SetSubWindowTitle(const std::string& subWindowTitle)
150e0dac50fSopenharmony_ci{
151e0dac50fSopenharmony_ci    subWindowTitle_ = subWindowTitle;
152e0dac50fSopenharmony_ci}
153e0dac50fSopenharmony_ci
154e0dac50fSopenharmony_civoid WindowOption::SetOnlySupportSceneBoard(bool onlySupportSceneBoard)
155e0dac50fSopenharmony_ci{
156e0dac50fSopenharmony_ci    onlySupportSceneBoard_ = onlySupportSceneBoard;
157e0dac50fSopenharmony_ci}
158e0dac50fSopenharmony_ci
159e0dac50fSopenharmony_civoid WindowOption::SetWindowTopmost(bool isTopmost)
160e0dac50fSopenharmony_ci{
161e0dac50fSopenharmony_ci    isTopmost_ = isTopmost;
162e0dac50fSopenharmony_ci}
163e0dac50fSopenharmony_ci
164e0dac50fSopenharmony_ciWindowMode WindowOption::GetWindowMode() const
165e0dac50fSopenharmony_ci{
166e0dac50fSopenharmony_ci    return mode_;
167e0dac50fSopenharmony_ci}
168e0dac50fSopenharmony_ci
169e0dac50fSopenharmony_ciWindowType WindowOption::GetWindowType() const
170e0dac50fSopenharmony_ci{
171e0dac50fSopenharmony_ci    return type_;
172e0dac50fSopenharmony_ci}
173e0dac50fSopenharmony_ci
174e0dac50fSopenharmony_ciRect WindowOption::GetWindowRect() const
175e0dac50fSopenharmony_ci{
176e0dac50fSopenharmony_ci    return windowRect_;
177e0dac50fSopenharmony_ci}
178e0dac50fSopenharmony_ci
179e0dac50fSopenharmony_ciWindowTag WindowOption::GetWindowTag() const
180e0dac50fSopenharmony_ci{
181e0dac50fSopenharmony_ci    return windowTag_;
182e0dac50fSopenharmony_ci}
183e0dac50fSopenharmony_ci
184e0dac50fSopenharmony_ciuint32_t WindowOption::GetParentId() const
185e0dac50fSopenharmony_ci{
186e0dac50fSopenharmony_ci    return parentId_;
187e0dac50fSopenharmony_ci}
188e0dac50fSopenharmony_ci
189e0dac50fSopenharmony_ciDisplayId WindowOption::GetDisplayId() const
190e0dac50fSopenharmony_ci{
191e0dac50fSopenharmony_ci    return displayId_;
192e0dac50fSopenharmony_ci}
193e0dac50fSopenharmony_ci
194e0dac50fSopenharmony_ciuint32_t WindowOption::GetWindowFlags() const
195e0dac50fSopenharmony_ci{
196e0dac50fSopenharmony_ci    return flags_;
197e0dac50fSopenharmony_ci}
198e0dac50fSopenharmony_ci
199e0dac50fSopenharmony_cibool WindowOption::GetTouchable() const
200e0dac50fSopenharmony_ci{
201e0dac50fSopenharmony_ci    return touchable_;
202e0dac50fSopenharmony_ci}
203e0dac50fSopenharmony_ci
204e0dac50fSopenharmony_cibool WindowOption::GetFocusable() const
205e0dac50fSopenharmony_ci{
206e0dac50fSopenharmony_ci    return focusable_;
207e0dac50fSopenharmony_ci}
208e0dac50fSopenharmony_ci
209e0dac50fSopenharmony_ciconst PointInfo& WindowOption::GetHitOffset() const
210e0dac50fSopenharmony_ci{
211e0dac50fSopenharmony_ci    return hitOffset_;
212e0dac50fSopenharmony_ci}
213e0dac50fSopenharmony_ci
214e0dac50fSopenharmony_ciconst std::string& WindowOption::GetWindowName() const
215e0dac50fSopenharmony_ci{
216e0dac50fSopenharmony_ci    return windowName_;
217e0dac50fSopenharmony_ci}
218e0dac50fSopenharmony_ci
219e0dac50fSopenharmony_ciWindowSessionType WindowOption::GetWindowSessionType() const
220e0dac50fSopenharmony_ci{
221e0dac50fSopenharmony_ci    return sessionType_;
222e0dac50fSopenharmony_ci}
223e0dac50fSopenharmony_ci
224e0dac50fSopenharmony_cibool WindowOption::GetMainHandlerAvailable() const
225e0dac50fSopenharmony_ci{
226e0dac50fSopenharmony_ci    return isMainHandlerAvailable_;
227e0dac50fSopenharmony_ci}
228e0dac50fSopenharmony_ci
229e0dac50fSopenharmony_ciconst std::unordered_map<WindowType, SystemBarProperty>& WindowOption::GetSystemBarProperty() const
230e0dac50fSopenharmony_ci{
231e0dac50fSopenharmony_ci    return sysBarPropMap_;
232e0dac50fSopenharmony_ci}
233e0dac50fSopenharmony_ci
234e0dac50fSopenharmony_cibool WindowOption::GetOnlySupportSceneBoard() const
235e0dac50fSopenharmony_ci{
236e0dac50fSopenharmony_ci    return onlySupportSceneBoard_;
237e0dac50fSopenharmony_ci}
238e0dac50fSopenharmony_ci
239e0dac50fSopenharmony_cifloat WindowOption::GetBrightness() const
240e0dac50fSopenharmony_ci{
241e0dac50fSopenharmony_ci    return brightness_;
242e0dac50fSopenharmony_ci}
243e0dac50fSopenharmony_ci
244e0dac50fSopenharmony_ciOrientation WindowOption::GetRequestedOrientation() const
245e0dac50fSopenharmony_ci{
246e0dac50fSopenharmony_ci    return requestedOrientation_;
247e0dac50fSopenharmony_ci}
248e0dac50fSopenharmony_ci
249e0dac50fSopenharmony_ciuint32_t WindowOption::GetCallingWindow() const
250e0dac50fSopenharmony_ci{
251e0dac50fSopenharmony_ci    return callingWindow_;
252e0dac50fSopenharmony_ci}
253e0dac50fSopenharmony_ci
254e0dac50fSopenharmony_cibool WindowOption::GetSubWindowDecorEnable() const
255e0dac50fSopenharmony_ci{
256e0dac50fSopenharmony_ci    return subWindowDecorEnable_;
257e0dac50fSopenharmony_ci}
258e0dac50fSopenharmony_ci
259e0dac50fSopenharmony_cistd::string WindowOption::GetSubWindowTitle() const
260e0dac50fSopenharmony_ci{
261e0dac50fSopenharmony_ci    return subWindowTitle_;
262e0dac50fSopenharmony_ci}
263e0dac50fSopenharmony_ci
264e0dac50fSopenharmony_cibool WindowOption::GetWindowTopmost() const
265e0dac50fSopenharmony_ci{
266e0dac50fSopenharmony_ci    return isTopmost_;
267e0dac50fSopenharmony_ci}
268e0dac50fSopenharmony_ci} // namespace Rosen
269e0dac50fSopenharmony_ci} // namespace OHOS
270e0dac50fSopenharmony_ci
271