• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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