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 POWERMGR_POWER_MANAGER_SETTING_HELPER_H
17 #define POWERMGR_POWER_MANAGER_SETTING_HELPER_H
18 
19 #include <cstdint>
20 #include <string>
21 
22 #include "setting_provider.h"
23 
24 namespace OHOS {
25 namespace PowerMgr {
26 class SettingHelper {
27 public:
28     enum class SwitchStatus : int32_t {
29         INVALID = -1,
30         DISABLE = 0,
31         ENABLE = 1,
32     };
33     static void UpdateCurrentUserId();
34 #ifdef POWER_WAKEUPDOUBLE_OR_PICKUP_ENABLE
35     static void CopyDataForUpdateScene();
36 #endif
37     static void UnregisterSettingObserver(sptr<SettingObserver>& observer);
38     static bool IsDisplayOffTimeSettingValid();
39     static bool IsSuspendSourcesSettingValid();
40 #ifdef POWER_MANAGER_ENABLE_CHARGING_TYPE_SETTING
41     static bool IsSettingDisplayAcScreenOffTimeValid();
42     static int64_t GetSettingDisplayAcScreenOffTime(int64_t defaultVal);
43     static void SetSettingDisplayAcScreenOffTime(int64_t time);
44     static sptr<SettingObserver> RegisterSettingDisplayAcScreenOffTimeObserver(SettingObserver::UpdateFunc& func);
45     static bool IsSettingDisplayDcScreenOffTimeValid();
46     static int64_t GetSettingDisplayDcScreenOffTime(int64_t defaultVal);
47     static void SetSettingDisplayDcScreenOffTime(int64_t time);
48     static sptr<SettingObserver> RegisterSettingDisplayDcScreenOffTimeObserver(SettingObserver::UpdateFunc& func);
49     static bool IsSettingAcSuspendSourcesValid();
50     static const std::string GetSettingAcSuspendSources();
51     static void SetSettingAcSuspendSources(const std::string& jsonConfig);
52     static sptr<SettingObserver> RegisterSettingAcSuspendSourcesObserver(SettingObserver::UpdateFunc& func);
53     static bool IsSettingDcSuspendSourcesValid();
54     static const std::string GetSettingDcSuspendSources();
55     static void SetSettingDcSuspendSources(const std::string& jsonConfig);
56     static sptr<SettingObserver> RegisterSettingDcSuspendSourcesObserver(SettingObserver::UpdateFunc& func);
57 #else
58     static int64_t GetSettingDisplayOffTime(int64_t defaultVal);
59     static void SetSettingDisplayOffTime(int64_t time);
60     static sptr<SettingObserver> RegisterSettingDisplayOffTimeObserver(SettingObserver::UpdateFunc& func);
61     static sptr<SettingObserver> RegisterSettingSuspendSourcesObserver(SettingObserver::UpdateFunc& func);
62     static const std::string GetSettingSuspendSources();
63     static void SetSettingSuspendSources(const std::string& jsonConfig);
64 #endif
65     static bool IsAutoAdjustBrightnessSettingValid();
66     static int32_t GetSettingAutoAdjustBrightness(int32_t defaultVal);
67     static void SetSettingAutoAdjustBrightness(SwitchStatus status);
68     static sptr<SettingObserver> RegisterSettingAutoAdjustBrightnessObserver(SettingObserver::UpdateFunc& func);
69     static bool IsBrightnessSettingValid();
70     static void SetSettingBrightness(int32_t brightness);
71     static bool IsVibrationSettingValid();
72     static int32_t GetSettingVibration(int32_t defaultVal);
73     static void SetSettingVibration(SwitchStatus status);
74     static sptr<SettingObserver> RegisterSettingVibrationObserver(SettingObserver::UpdateFunc& func);
75     static bool IsWindowRotationSettingValid();
76     static int32_t GetSettingWindowRotation(int32_t defaultVal);
77     static void SetSettingWindowRotation(SwitchStatus status);
78     static sptr<SettingObserver> RegisterSettingWindowRotationObserver(SettingObserver::UpdateFunc& func);
79     static bool IsIntellVoiceSettingValid();
80     static int32_t GetSettingIntellVoice(int32_t defaultVal);
81     static void SetSettingIntellVoice(SwitchStatus status);
82     static sptr<SettingObserver> RegisterSettingIntellVoiceObserver(SettingObserver::UpdateFunc& func);
83     static sptr<SettingObserver> RegisterSettingWakeupSourcesObserver(SettingObserver::UpdateFunc& func);
84     static bool IsWakeupSourcesSettingValid();
85     static const std::string GetSettingWakeupSources();
86     static void SetSettingWakeupSources(const std::string& jsonConfig);
87     static bool IsWakeupDoubleSettingValid();
88     static bool GetSettingWakeupDouble(const std::string& key = SETTING_POWER_WAKEUP_DOUBLE_KEY);
89     static void SetSettingWakeupDouble(bool enable);
90     static void RegisterSettingWakeupDoubleObserver(SettingObserver::UpdateFunc& func);
91     static void UnregisterSettingWakeupDoubleObserver();
92     static bool IsWakeupPickupSettingValid();
93     static bool GetSettingWakeupPickup(const std::string& key = SETTING_POWER_WAKEUP_PICKUP_KEY);
94     static void SetSettingWakeupPickup(bool enable);
95     static void RegisterSettingWakeupPickupObserver(SettingObserver::UpdateFunc& func);
96     static void UnregisterSettingWakeupPickupObserver();
97     static void SaveCurrentMode(int32_t mode);
98     static int32_t ReadCurrentMode(int32_t defaultMode);
99     static const std::string ReadPowerModeRecoverMap();
100     static void SavePowerModeRecoverMap(const std::string &jsonConfig);
101     static void RegisterSettingPowerModeObserver(SettingObserver::UpdateFunc& func);
102     static void UnRegisterSettingPowerModeObserver();
103     static void RegisterSettingWakeupLidObserver(SettingObserver::UpdateFunc& func);
104     static void UnRegisterSettingWakeupLidObserver();
105     static bool GetSettingWakeupLid(const std::string& key = SETTING_POWER_WAKEUP_LID_KEY);
106     static void SetSettingWakeupLid(bool enable);
107     static bool IsWakeupLidSettingValid();
108 
109 private:
110     static bool IsSettingKeyValid(const std::string& key);
111     static int32_t GetSettingIntValue(const std::string& key, int32_t defaultVal);
112     static void SetSettingIntValue(const std::string& key, int32_t value);
113     static int64_t GetSettingLongValue(const std::string& key, int64_t defaultVal);
114     static void SetSettingLongValue(const std::string& key, int64_t value);
115     static const std::string GetSettingStringValue(const std::string& key);
116     static void SetSettingJsonStringValue(const std::string& key, const std::string& jsonConfig);
117     static sptr<SettingObserver> RegisterSettingKeyObserver(const std::string& key, SettingObserver::UpdateFunc& func);
118 
119 #ifdef POWER_MANAGER_ENABLE_CHARGING_TYPE_SETTING
120     // AC for Alternating Current, means charing supply
121     // DC for Direct Current, means battery supply
122     static constexpr const char* SETTING_DISPLAY_AC_OFF_TIME_KEY {"settings.display.ac.screen_off_timeout"};
123     static constexpr const char* SETTING_DISPLAY_DC_OFF_TIME_KEY {"settings.display.dc.screen_off_timeout"};
124     static constexpr const char* SETTING_POWER_AC_SUSPEND_SOURCES_KEY {"settings.power.ac.suspend_sources"};
125     static constexpr const char* SETTING_POWER_DC_SUSPEND_SOURCES_KEY {"settings.power.dc.suspend_sources"};
126 #else
127     static constexpr const char* SETTING_DISPLAY_OFF_TIME_KEY {"settings.display.screen_off_timeout"};
128     static constexpr const char* SETTING_POWER_SUSPEND_SOURCES_KEY {"settings.power.suspend_sources"};
129 #endif
130     static constexpr const char* SETTING_AUTO_ADJUST_BRIGHTNESS_KEY {"settings.display.auto_screen_brightness"};
131     static constexpr const char* SETTING_BRIGHTNESS_KEY {"settings.display.screen_brightness_status"};
132     static constexpr const char* SETTING_VIBRATION_KEY {"physic_navi_haptic_feedback_enabled"};
133     static constexpr const char* SETTING_WINDOW_ROTATION_KEY {"settings.general.accelerometer_rotation_status"};
134     static constexpr const char* SETTING_POWER_WAKEUP_SOURCES_KEY {"settings.power.wakeup_sources"};
135     static constexpr const char* SETTING_INTELL_VOICE_KEY {"intell_voice_trigger_enabled"};
136     static constexpr const char* SETTING_POWER_WAKEUP_DOUBLE_KEY {"settings.power.wakeup_double_click"};
137     static constexpr const char* SETTING_POWER_WAKEUP_PICKUP_KEY {"settings.power.wakeup_pick_up"};
138     static constexpr const char* SETTING_POWER_MODE_KEY {"settings.power.smart_mode_status"};
139     static constexpr const char* SETTING_POWER_MODE_BACKUP_KEY {"settings.power.smart_mode_status.backup"};
140     static constexpr const char* SETTING_POWER_WAKEUP_LID_KEY {"settings.power.wakeup_lid"};
141     static sptr<SettingObserver> doubleClickObserver_;
142     static sptr<SettingObserver> pickUpObserver_;
143     static sptr<SettingObserver> powerModeObserver_;
144     static sptr<SettingObserver> lidObserver_;
145 };
146 } // namespace PowerMgr
147 } // namespace OHOS
148 
149 #endif // POWERMGR_POWER_MANAGER_SETTING_HELPER_H
150