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