1e0dac50fSopenharmony_ci/*
2e0dac50fSopenharmony_ci * Copyright (c) 2023-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 "picture_in_picture_option.h"
17e0dac50fSopenharmony_ci#include "window_manager_hilog.h"
18e0dac50fSopenharmony_ci
19e0dac50fSopenharmony_cinamespace OHOS {
20e0dac50fSopenharmony_cinamespace Rosen {
21e0dac50fSopenharmony_ciPipOption::PipOption()
22e0dac50fSopenharmony_ci{
23e0dac50fSopenharmony_ci}
24e0dac50fSopenharmony_ci
25e0dac50fSopenharmony_civoid PipOption::SetContext(void* contextPtr)
26e0dac50fSopenharmony_ci{
27e0dac50fSopenharmony_ci    contextPtr_ = contextPtr;
28e0dac50fSopenharmony_ci}
29e0dac50fSopenharmony_ci
30e0dac50fSopenharmony_civoid PipOption::SetNavigationId(const std::string& navigationId)
31e0dac50fSopenharmony_ci{
32e0dac50fSopenharmony_ci    navigationId_ = navigationId;
33e0dac50fSopenharmony_ci}
34e0dac50fSopenharmony_ci
35e0dac50fSopenharmony_civoid PipOption::SetPipTemplate(uint32_t templateType)
36e0dac50fSopenharmony_ci{
37e0dac50fSopenharmony_ci    templateType_ = templateType;
38e0dac50fSopenharmony_ci}
39e0dac50fSopenharmony_ci
40e0dac50fSopenharmony_civoid PipOption::SetPiPControlStatus(PiPControlType controlType, PiPControlStatus status)
41e0dac50fSopenharmony_ci{
42e0dac50fSopenharmony_ci    for (auto& controlStatusInfo : pipControlStatusInfoList_) {
43e0dac50fSopenharmony_ci        if (controlType == controlStatusInfo.controlType) {
44e0dac50fSopenharmony_ci            controlStatusInfo.status = status;
45e0dac50fSopenharmony_ci            return;
46e0dac50fSopenharmony_ci        }
47e0dac50fSopenharmony_ci    }
48e0dac50fSopenharmony_ci    PiPControlStatusInfo newPiPControlStatusInfo {controlType, status};
49e0dac50fSopenharmony_ci    pipControlStatusInfoList_.push_back(newPiPControlStatusInfo);
50e0dac50fSopenharmony_ci}
51e0dac50fSopenharmony_ci
52e0dac50fSopenharmony_civoid PipOption::SetPiPControlEnabled(PiPControlType controlType, PiPControlStatus enabled)
53e0dac50fSopenharmony_ci{
54e0dac50fSopenharmony_ci    for (auto& controlEnableInfo : pipControlEnableInfoList_) {
55e0dac50fSopenharmony_ci        if (controlType == controlEnableInfo.controlType) {
56e0dac50fSopenharmony_ci            controlEnableInfo.enabled = enabled;
57e0dac50fSopenharmony_ci            return;
58e0dac50fSopenharmony_ci        }
59e0dac50fSopenharmony_ci    }
60e0dac50fSopenharmony_ci    PiPControlEnableInfo newPiPControlEnableInfo {controlType, enabled};
61e0dac50fSopenharmony_ci    pipControlEnableInfoList_.push_back(newPiPControlEnableInfo);
62e0dac50fSopenharmony_ci}
63e0dac50fSopenharmony_ci
64e0dac50fSopenharmony_civoid PipOption::SetContentSize(uint32_t width, uint32_t height)
65e0dac50fSopenharmony_ci{
66e0dac50fSopenharmony_ci    contentWidth_ = width;
67e0dac50fSopenharmony_ci    contentHeight_ = height;
68e0dac50fSopenharmony_ci}
69e0dac50fSopenharmony_ci
70e0dac50fSopenharmony_civoid PipOption::SetControlGroup(std::vector<std::uint32_t> controlGroup)
71e0dac50fSopenharmony_ci{
72e0dac50fSopenharmony_ci    controlGroup_ = controlGroup;
73e0dac50fSopenharmony_ci}
74e0dac50fSopenharmony_ci
75e0dac50fSopenharmony_civoid PipOption::SetNodeControllerRef(napi_ref ref)
76e0dac50fSopenharmony_ci{
77e0dac50fSopenharmony_ci    customNodeController_ = ref;
78e0dac50fSopenharmony_ci}
79e0dac50fSopenharmony_ci
80e0dac50fSopenharmony_cinapi_ref PipOption::GetNodeControllerRef() const
81e0dac50fSopenharmony_ci{
82e0dac50fSopenharmony_ci    return customNodeController_;
83e0dac50fSopenharmony_ci}
84e0dac50fSopenharmony_ci
85e0dac50fSopenharmony_civoid PipOption::SetTypeNodeRef(napi_ref ref)
86e0dac50fSopenharmony_ci{
87e0dac50fSopenharmony_ci    typeNode_ = ref;
88e0dac50fSopenharmony_ci}
89e0dac50fSopenharmony_ci
90e0dac50fSopenharmony_cinapi_ref PipOption::GetTypeNodeRef() const
91e0dac50fSopenharmony_ci{
92e0dac50fSopenharmony_ci    return typeNode_;
93e0dac50fSopenharmony_ci}
94e0dac50fSopenharmony_ci
95e0dac50fSopenharmony_civoid* PipOption::GetContext() const
96e0dac50fSopenharmony_ci{
97e0dac50fSopenharmony_ci    return contextPtr_;
98e0dac50fSopenharmony_ci}
99e0dac50fSopenharmony_ci
100e0dac50fSopenharmony_cistd::string PipOption::GetNavigationId() const
101e0dac50fSopenharmony_ci{
102e0dac50fSopenharmony_ci    return navigationId_;
103e0dac50fSopenharmony_ci}
104e0dac50fSopenharmony_ci
105e0dac50fSopenharmony_ciuint32_t PipOption::GetPipTemplate()
106e0dac50fSopenharmony_ci{
107e0dac50fSopenharmony_ci    return templateType_;
108e0dac50fSopenharmony_ci}
109e0dac50fSopenharmony_ci
110e0dac50fSopenharmony_civoid PipOption::GetContentSize(uint32_t& width, uint32_t& height)
111e0dac50fSopenharmony_ci{
112e0dac50fSopenharmony_ci    width = contentWidth_;
113e0dac50fSopenharmony_ci    height = contentHeight_;
114e0dac50fSopenharmony_ci}
115e0dac50fSopenharmony_ci
116e0dac50fSopenharmony_cistd::vector<std::uint32_t> PipOption::GetControlGroup()
117e0dac50fSopenharmony_ci{
118e0dac50fSopenharmony_ci    return controlGroup_;
119e0dac50fSopenharmony_ci}
120e0dac50fSopenharmony_ci
121e0dac50fSopenharmony_cistd::vector<PiPControlStatusInfo> PipOption::GetControlStatus()
122e0dac50fSopenharmony_ci{
123e0dac50fSopenharmony_ci    return pipControlStatusInfoList_;
124e0dac50fSopenharmony_ci}
125e0dac50fSopenharmony_ci
126e0dac50fSopenharmony_cistd::vector<PiPControlEnableInfo> PipOption::GetControlEnable()
127e0dac50fSopenharmony_ci{
128e0dac50fSopenharmony_ci    return pipControlEnableInfoList_;
129e0dac50fSopenharmony_ci}
130e0dac50fSopenharmony_ci
131e0dac50fSopenharmony_civoid PipOption::SetXComponentController(std::shared_ptr<XComponentController> xComponentController)
132e0dac50fSopenharmony_ci{
133e0dac50fSopenharmony_ci    xComponentController_ = xComponentController;
134e0dac50fSopenharmony_ci}
135e0dac50fSopenharmony_ci
136e0dac50fSopenharmony_cistd::shared_ptr<XComponentController> PipOption::GetXComponentController()
137e0dac50fSopenharmony_ci{
138e0dac50fSopenharmony_ci    return xComponentController_;
139e0dac50fSopenharmony_ci}
140e0dac50fSopenharmony_ci
141e0dac50fSopenharmony_civoid PipOption::SetTypeNodeEnabled(bool enable)
142e0dac50fSopenharmony_ci{
143e0dac50fSopenharmony_ci    useTypeNode_ = enable;
144e0dac50fSopenharmony_ci}
145e0dac50fSopenharmony_ci
146e0dac50fSopenharmony_cibool PipOption::IsTypeNodeEnabled() const
147e0dac50fSopenharmony_ci{
148e0dac50fSopenharmony_ci    return useTypeNode_;
149e0dac50fSopenharmony_ci}
150e0dac50fSopenharmony_ci} // namespace Rosen
151e0dac50fSopenharmony_ci} // namespace OHOS