1 /* 2 * Copyright (c) 2023 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 OHOS_ROSEN_WINDOW_SCENE_SCREEN_SETTING_HELPER_H 17 #define OHOS_ROSEN_WINDOW_SCENE_SCREEN_SETTING_HELPER_H 18 19 #include <charconv> 20 #include <cstdint> 21 #include <string> 22 #include <sstream> 23 #include <cinttypes> 24 #include <set> 25 26 #include "screen_edid_parse.h" 27 #include "setting_observer.h" 28 #include "dm_common.h" 29 30 namespace OHOS { 31 namespace Rosen { 32 class ScreenSettingHelper { 33 public: 34 static void RegisterSettingDpiObserver(SettingObserver::UpdateFunc func); 35 static void UnregisterSettingDpiObserver(); 36 static bool GetSettingDpi(uint32_t& dpi, const std::string& key = SETTING_DPI_KEY); 37 static bool SetSettingDefaultDpi(uint32_t& dpi, const std::string& key); 38 static bool GetSettingValue(uint32_t& value, const std::string& key); 39 static bool SetSettingValue(const std::string& key, uint32_t value); 40 static bool GetSettingValue(const std::string& key, std::string& value); 41 static bool SetSettingValue(const std::string& key, const std::string& value); 42 static void RegisterSettingCastObserver(SettingObserver::UpdateFunc func); 43 static void UnregisterSettingCastObserver(); 44 static bool GetSettingCast(bool& enable, const std::string& key = SETTING_CAST_KEY); 45 static void RegisterSettingRotationObserver(SettingObserver::UpdateFunc func); 46 static void UnregisterSettingRotationObserver(); 47 static void SetSettingRotation(int32_t rotation); 48 static void SetSettingRotationScreenId(int32_t screenId); 49 static bool GetSettingRotation(int32_t& rotation, const std::string& key = SETTING_ROTATION_KEY); 50 static bool GetSettingRotationScreenID(int32_t& screenId, const std::string& key = SETTING_ROTATION_SCREEN_ID_KEY); 51 static std::string RemoveInvalidChar(const std::string& input); 52 static bool SplitString(std::vector<std::string>& splitValues, const std::string& input, char delimiter = ','); 53 static bool IsNumber(const std::string& str); 54 static std::map<std::string, MultiScreenInfo> GetMultiScreenInfo(const std::string& key = SETTING_SCREEN_MODE_KEY); 55 static bool GetScreenMode(MultiScreenInfo& info, const std::string& inputString); 56 static bool UpdateScreenMode(MultiScreenInfo& info, uint32_t mode, bool isExternal); 57 static bool GetScreenRelativePosition(MultiScreenInfo& info, const std::string& inputString); 58 static ScreenShape GetScreenShape(ScreenId screenId); 59 static void RegisterSettingWireCastObserver(SettingObserver::UpdateFunc func); 60 static void UnregisterSettingWireCastObserver(); 61 static void RegisterSettingExtendScreenDpiObserver(SettingObserver::UpdateFunc func); 62 static void UnRegisterSettingExtendScreenDpiObserver(); 63 static void RegisterSettingDuringCallStateObserver(SettingObserver::UpdateFunc func); 64 static void UnregisterSettingDuringCallStateObserver(); 65 static bool GetSettingDuringCallState(bool& enable, const std::string& key = SETTING_DURING_CALL_KEY); 66 static bool SetSettingDuringCallState(const std::string& key, bool value); 67 static bool GetSettingExtendScreenDpi(float& coef, const std::string& key = SETTING_EXTEND_DPI_KEY); 68 static bool ConvertStrToUint64(const std::string& str, uint64_t& num); 69 static bool ConvertStrToInt32(const std::string& str, int32_t& num); 70 71 private: 72 static const constexpr char* SETTING_DPI_KEY {"user_set_dpi_value"}; 73 static const constexpr char* SETTING_CAST_KEY {"huaweicast.data.privacy_projection_state"}; 74 static const constexpr char* SETTING_ROTATION_KEY {"screen_rotation_value"}; 75 static const constexpr char* SETTING_ROTATION_SCREEN_ID_KEY {"screen_rotation_screen_id_value"}; 76 static const constexpr char* SETTING_SCREEN_MODE_KEY {"user_set_screen_mode_edid"}; 77 static const constexpr char* SETTING_EXTEND_DPI_KEY {"user_set_dpi_extend"}; 78 static const constexpr char* SETTING_DURING_CALL_KEY {"during_call_state"}; 79 static const constexpr uint32_t BASE_TEN = 10; 80 static sptr<SettingObserver> dpiObserver_; 81 static sptr<SettingObserver> castObserver_; 82 static sptr<SettingObserver> rotationObserver_; 83 static sptr<SettingObserver> wireCastObserver_; 84 static sptr<SettingObserver> extendScreenDpiObserver_; 85 static sptr<SettingObserver> duringCallStateObserver_; 86 }; 87 } // namespace Rosen 88 } // namespace OHOS 89 90 #endif // OHOS_ROSEN_WINDOW_SCENE_SCREEN_SETTING_HELPER_H 91