• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_PIPELINE_CONTAINER_WINDOW_MANAGER_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_PIPELINE_CONTAINER_WINDOW_MANAGER_H
18 
19 #include <functional>
20 
21 #include "base/memory/ace_type.h"
22 #include "base/system_bar/system_bar_style.h"
23 #include "core/components/common/layout/constants.h"
24 
25 namespace OHOS::Ace {
26 
27 using WindowCallback = std::function<void(void)>;
28 using WindowModeCallback = std::function<WindowMode(void)>;
29 using WindowMidSceneCallback = std::function<int32_t(bool&)>;
30 using WindowTypeCallback = std::function<WindowType(void)>;
31 using WindowSetMaximizeModeCallback = std::function<void(MaximizeMode)>;
32 using WindowGetMaximizeModeCallback = std::function<MaximizeMode(void)>;
33 using GetSystemBarStyleCallback = std::function<RefPtr<SystemBarStyle>(void)>;
34 using SetSystemBarStyleCallback = std::function<void(const RefPtr<SystemBarStyle>&)>;
35 using GetFreeMultiWindowModeEnabledStateCallback = std::function<bool(void)>;
36 using WindowIsStartMovingCallback = std::function<bool(void)>;
37 using WindowCallNativeCallback = std::function<void(const std::string&, const std::string&)>;
38 
39 class WindowManager : public virtual AceType {
40     DECLARE_ACE_TYPE(WindowManager, AceType);
41 
42 public:
43     WindowManager() = default;
44     ~WindowManager() override = default;
45 
SetAppIconId(int32_t id)46     void SetAppIconId(int32_t id)
47     {
48         appIconId_ = id;
49     }
50 
GetAppIconId()51     int32_t GetAppIconId() const
52     {
53         return appIconId_;
54     }
55 
SetAppLabelId(int32_t id)56     void SetAppLabelId(int32_t id)
57     {
58         appLabelId_ = id;
59     }
60 
GetAppLabelId()61     int32_t GetAppLabelId() const
62     {
63         return appLabelId_;
64     }
65 
SetWindowMinimizeCallBack(WindowCallback && callback)66     void SetWindowMinimizeCallBack(WindowCallback&& callback)
67     {
68         windowMinimizeCallback_ = std::move(callback);
69     }
70 
SetWindowMaximizeCallBack(WindowCallback && callback)71     void SetWindowMaximizeCallBack(WindowCallback&& callback)
72     {
73         windowMaximizeCallback_ = std::move(callback);
74     }
75 
SetWindowMaximizeFloatingCallBack(WindowCallback && callback)76     void SetWindowMaximizeFloatingCallBack(WindowCallback&& callback)
77     {
78         windowMaximizeFloatingCallback_ = std::move(callback);
79     }
80 
SetWindowRecoverCallBack(WindowCallback && callback)81     void SetWindowRecoverCallBack(WindowCallback&& callback)
82     {
83         windowRecoverCallback_ = std::move(callback);
84     }
85 
SetWindowCloseCallBack(WindowCallback && callback)86     void SetWindowCloseCallBack(WindowCallback&& callback)
87     {
88         windowCloseCallback_ = std::move(callback);
89     }
90 
SetWindowSplitPrimaryCallBack(WindowCallback && callback)91     void SetWindowSplitPrimaryCallBack(WindowCallback&& callback)
92     {
93         windowSplitPrimaryCallback_ = std::move(callback);
94     }
95 
SetWindowSplitSecondaryCallBack(WindowCallback && callback)96     void SetWindowSplitSecondaryCallBack(WindowCallback&& callback)
97     {
98         windowSplitSecondaryCallback_ = std::move(callback);
99     }
100 
SetWindowGetModeCallBack(WindowModeCallback && callback)101     void SetWindowGetModeCallBack(WindowModeCallback&& callback)
102     {
103         windowGetModeCallback_ = std::move(callback);
104     }
105 
SetWindowGetIsMidSceneCallBack(WindowMidSceneCallback && callback)106     void SetWindowGetIsMidSceneCallBack(WindowMidSceneCallback&& callback)
107     {
108         windowGetIsMidSceneCallback_ = std::move(callback);
109     }
110 
SetWindowGetTypeCallBack(WindowTypeCallback && callback)111     void SetWindowGetTypeCallBack(WindowTypeCallback&& callback)
112     {
113         windowGetTypeCallback_ = std::move(callback);
114     }
115 
SetWindowStartMoveCallBack(WindowCallback && callback)116     void SetWindowStartMoveCallBack(WindowCallback&& callback)
117     {
118         windowStartMoveCallback_ = std::move(callback);
119     }
120 
SetWindowIsStartMovingCallBack(WindowIsStartMovingCallback && callback)121     void SetWindowIsStartMovingCallBack(WindowIsStartMovingCallback&& callback)
122     {
123         WindowIsStartMovingCallback_ = std::move(callback);
124     }
125 
SetWindowSetMaximizeModeCallBack(WindowSetMaximizeModeCallback && callback)126     void SetWindowSetMaximizeModeCallBack(WindowSetMaximizeModeCallback&& callback)
127     {
128         windowSetMaximizeModeCallback_ = std::move(callback);
129     }
130 
SetWindowGetMaximizeModeCallBack(WindowGetMaximizeModeCallback && callback)131     void SetWindowGetMaximizeModeCallBack(WindowGetMaximizeModeCallback&& callback)
132     {
133         windowGetMaximizeModeCallback_ = std::move(callback);
134     }
135 
SetGetSystemBarStyleCallBack(GetSystemBarStyleCallback && callback)136     void SetGetSystemBarStyleCallBack(GetSystemBarStyleCallback&& callback)
137     {
138         getSystemBarStyleCallback_ = std::move(callback);
139     }
140 
SetSetSystemBarStyleCallBack(SetSystemBarStyleCallback && callback)141     void SetSetSystemBarStyleCallBack(SetSystemBarStyleCallback&& callback)
142     {
143         setSystemBarStyleCallback_ = std::move(callback);
144     }
145 
SetGetFreeMultiWindowModeEnabledStateCallback(GetFreeMultiWindowModeEnabledStateCallback && callback)146     void SetGetFreeMultiWindowModeEnabledStateCallback(GetFreeMultiWindowModeEnabledStateCallback&& callback)
147     {
148         getFreeMultiWindowModeEnabledStateCallback_ = std::move(callback);
149     }
150 
SetPerformBackCallback(WindowCallback && callback)151     void SetPerformBackCallback(WindowCallback&& callback)
152     {
153         windowPerformBackCallback_ = callback;
154     }
155 
SetWindowCallNativeCallback(WindowCallNativeCallback && callback)156     void SetWindowCallNativeCallback(WindowCallNativeCallback&& callback)
157     {
158         callNativeCallback_ = std::move(callback);
159     }
160 
FireWindowCallNativeCallback(const std::string & name,const std::string & value)161     void FireWindowCallNativeCallback(const std::string& name, const std::string& value)
162     {
163         if (callNativeCallback_) {
164             callNativeCallback_(name, value);
165         }
166     }
167 
WindowMinimize()168     void WindowMinimize() const
169     {
170         if (windowMinimizeCallback_) {
171             windowMinimizeCallback_();
172         }
173     }
174 
175     void WindowMaximize(bool supportFloatingMaximize = false)
176     {
177         if (supportFloatingMaximize && windowMaximizeFloatingCallback_) {
178             windowMaximizeFloatingCallback_();
179             maximizeMode_ = GetWindowMaximizeMode();
180         }
181         if (!supportFloatingMaximize && windowMaximizeCallback_) {
182             windowMaximizeCallback_();
183         }
184     }
185 
WindowRecover()186     void WindowRecover()
187     {
188         if (windowRecoverCallback_) {
189             windowRecoverCallback_();
190             maximizeMode_ = MaximizeMode::MODE_RECOVER;
191         }
192     }
193 
194     void FireWindowSplitCallBack(bool isPrimary = true) const
195     {
196         if (isPrimary && windowSplitPrimaryCallback_) {
197             windowSplitPrimaryCallback_();
198         }
199         if (!isPrimary && windowSplitSecondaryCallback_) {
200             windowSplitSecondaryCallback_();
201         }
202     }
203 
WindowClose()204     void WindowClose() const
205     {
206         if (windowCloseCallback_) {
207             windowCloseCallback_();
208         }
209     }
210 
WindowStartMove()211     void WindowStartMove() const
212     {
213         if (windowStartMoveCallback_) {
214             windowStartMoveCallback_();
215         }
216     }
217 
WindowIsStartMoving()218     bool WindowIsStartMoving() const
219     {
220         if (WindowIsStartMovingCallback_) {
221             return WindowIsStartMovingCallback_();
222         }
223         return false;
224     }
225 
WindowPerformBack()226     void WindowPerformBack() const
227     {
228         if (windowPerformBackCallback_) {
229             windowPerformBackCallback_();
230         }
231     }
232 
GetWindowMode()233     WindowMode GetWindowMode() const
234     {
235         if (windowGetModeCallback_) {
236             return windowGetModeCallback_();
237         }
238         return WindowMode::WINDOW_MODE_UNDEFINED;
239     }
240 
GetIsMidScene(bool & isMidScene)241     int32_t GetIsMidScene(bool& isMidScene) const
242     {
243         if (windowGetIsMidSceneCallback_) {
244             return windowGetIsMidSceneCallback_(isMidScene);
245         }
246         return -1;
247     }
248 
GetWindowType()249     WindowType GetWindowType() const
250     {
251         if (windowGetTypeCallback_) {
252             return windowGetTypeCallback_();
253         }
254         return WindowType::WINDOW_TYPE_UNDEFINED;
255     }
256 
SetWindowMaximizeMode(MaximizeMode mode)257     void SetWindowMaximizeMode(MaximizeMode mode)
258     {
259         if (windowSetMaximizeModeCallback_) {
260             windowSetMaximizeModeCallback_(mode);
261         }
262     }
263 
GetWindowMaximizeMode()264     MaximizeMode GetWindowMaximizeMode() const
265     {
266         if (windowGetMaximizeModeCallback_) {
267             return windowGetMaximizeModeCallback_();
268         }
269         return MaximizeMode::MODE_RECOVER;
270     }
271 
GetCurrentWindowMaximizeMode()272     MaximizeMode GetCurrentWindowMaximizeMode() const
273     {
274         return maximizeMode_;
275     }
276 
SetCurrentWindowMaximizeMode(MaximizeMode mode)277     void SetCurrentWindowMaximizeMode(MaximizeMode mode)
278     {
279         maximizeMode_ = mode;
280     }
281 
GetSystemBarStyle()282     RefPtr<SystemBarStyle> GetSystemBarStyle()
283     {
284         if (getSystemBarStyleCallback_) {
285             return getSystemBarStyleCallback_();
286         }
287         return nullptr;
288     }
289 
SetSystemBarStyle(const RefPtr<SystemBarStyle> & style)290     void SetSystemBarStyle(const RefPtr<SystemBarStyle>& style)
291     {
292         if (setSystemBarStyleCallback_) {
293             setSystemBarStyleCallback_(style);
294         }
295     }
296 
GetFreeMultiWindowModeEnabledState()297     bool GetFreeMultiWindowModeEnabledState() const
298     {
299         if (getFreeMultiWindowModeEnabledStateCallback_) {
300             return getFreeMultiWindowModeEnabledStateCallback_();
301         }
302         return false;
303     }
304 
305 private:
306     int32_t appLabelId_ = 0;
307     int32_t appIconId_ = 0;
308     MaximizeMode maximizeMode_ = MaximizeMode::MODE_RECOVER;
309     WindowCallback windowMinimizeCallback_;
310     WindowCallback windowRecoverCallback_;
311     WindowCallback windowCloseCallback_;
312     WindowCallback windowSplitPrimaryCallback_;
313     WindowCallback windowSplitSecondaryCallback_;
314     WindowCallback windowStartMoveCallback_;
315     WindowIsStartMovingCallback WindowIsStartMovingCallback_;
316     WindowCallback windowPerformBackCallback_;
317     WindowCallback windowMaximizeCallback_;
318     WindowCallback windowMaximizeFloatingCallback_;
319     WindowSetMaximizeModeCallback windowSetMaximizeModeCallback_;
320     WindowGetMaximizeModeCallback windowGetMaximizeModeCallback_;
321     WindowModeCallback windowGetModeCallback_;
322     WindowMidSceneCallback windowGetIsMidSceneCallback_;
323     WindowTypeCallback windowGetTypeCallback_;
324     GetSystemBarStyleCallback getSystemBarStyleCallback_;
325     SetSystemBarStyleCallback setSystemBarStyleCallback_;
326     GetFreeMultiWindowModeEnabledStateCallback getFreeMultiWindowModeEnabledStateCallback_;
327     WindowCallNativeCallback callNativeCallback_;
328 };
329 
330 } // namespace OHOS::Ace
331 
332 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_PIPELINE_CONTAINER_WINDOW_MANAGER_H
333