1 /* 2 * Copyright (c) 2024 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_DM_SCREEN_MANAGER_H 17 #define FOUNDATION_DM_SCREEN_MANAGER_H 18 19 #include <refbase.h> 20 #include "dm_common.h" 21 #include "wm_single_instance.h" 22 23 namespace OHOS::Rosen { 24 class ScreenManagerLite : public RefBase { 25 WM_DECLARE_SINGLE_INSTANCE_BASE(ScreenManagerLite); 26 friend class DMSDeathRecipientLite; 27 public: 28 /* 29 * used by powermgr 30 */ 31 class IScreenListener : public virtual RefBase { 32 public: 33 /** 34 * @brief Notify when a new screen is connected. 35 */ 36 virtual void OnConnect(ScreenId) = 0; 37 38 /** 39 * @brief Notify when a screen is disconnected. 40 */ 41 virtual void OnDisconnect(ScreenId) = 0; 42 43 /** 44 * @brief Notify when state of the screen is changed. 45 */ 46 virtual void OnChange(ScreenId) = 0; 47 }; 48 49 /** 50 * @brief Register screen listener. 51 * 52 * @param listener IScreenListener. 53 * @return DM_OK means register success, others means register failed. 54 */ 55 DMError RegisterScreenListener(sptr<IScreenListener> listener); 56 57 /** 58 * @brief Unregister screen listener. 59 * 60 * @param listener IScreenListener. 61 * @return DM_OK means unregister success, others means unregister failed. 62 */ 63 DMError UnregisterScreenListener(sptr<IScreenListener> listener); 64 65 /** 66 * @brief Set the screen power state on the specified screen. 67 * 68 * @param screenId Screen id. 69 * @param state Screen power state. 70 * @param reason Reason for power state change. 71 * @return True means set success, false means set failed. 72 */ 73 bool SetSpecifiedScreenPower(ScreenId screenId, ScreenPowerState state, PowerStateChangeReason reason); 74 75 /** 76 * @brief Set the screen power states for all screens. 77 * 78 * @param state Screen power state. 79 * @param reason Reason for power state change. 80 * @return True means set success, false means set failed. 81 */ 82 bool SetScreenPowerForAll(ScreenPowerState state, PowerStateChangeReason reason); 83 84 /** 85 * @brief Get screen power state. 86 * 87 * @param screenId Screen id. 88 * @return Power state of screen. 89 */ 90 ScreenPowerState GetScreenPower(ScreenId screenId); 91 private: 92 ScreenManagerLite(); 93 ~ScreenManagerLite(); 94 void OnRemoteDied(); 95 96 class Impl; 97 sptr<Impl> pImpl_; 98 }; 99 } // namespace OHOS::Rosen 100 101 #endif // FOUNDATION_DM_SCREEN_MANAGER_H