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 #include "setting_helper.h"
17
18 #include "power_log.h"
19 #include "power_utils.h"
20 #include <cinttypes>
21 #include <system_ability_definition.h>
22
23 namespace OHOS {
24 namespace PowerMgr {
25 namespace {
26 constexpr int32_t WAKEUP_SOURCE_OPEN = 1;
27 constexpr int32_t WAKEUP_SOURCE_CLOSE = 0;
28 }
29 sptr<SettingObserver> SettingHelper::doubleClickObserver_ = nullptr;
30 sptr<SettingObserver> SettingHelper::pickUpObserver_ = nullptr;
31 sptr<SettingObserver> SettingHelper::powerModeObserver_ = nullptr;
32 sptr<SettingObserver> SettingHelper::lidObserver_ = nullptr;
33
UpdateCurrentUserId()34 void SettingHelper::UpdateCurrentUserId()
35 {
36 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
37 settingProvider.UpdateCurrentUserId();
38 }
39
IsSettingKeyValid(const std::string& key)40 bool SettingHelper::IsSettingKeyValid(const std::string& key)
41 {
42 return SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).IsValidKey(key);
43 }
44
GetSettingIntValue(const std::string& key, int32_t defaultVal)45 int32_t SettingHelper::GetSettingIntValue(const std::string& key, int32_t defaultVal)
46 {
47 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
48 int32_t value = defaultVal;
49 ErrCode ret = settingProvider.GetIntValue(key, value);
50 if (ret != ERR_OK) {
51 POWER_HILOGW(COMP_UTILS, "get setting key=%{public}s failed, ret=%{public}d", key.c_str(), ret);
52 }
53 return value;
54 }
55
SetSettingIntValue(const std::string& key, int32_t value)56 void SettingHelper::SetSettingIntValue(const std::string& key, int32_t value)
57 {
58 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
59 ErrCode ret = settingProvider.PutIntValue(key, value);
60 if (ret != ERR_OK) {
61 POWER_HILOGW(COMP_UTILS,
62 "set setting key=%{public}s value=%{public}d failed, ret=%{public}d",
63 key.c_str(), value, ret);
64 }
65 }
66
GetSettingLongValue(const std::string& key, int64_t defaultVal)67 int64_t SettingHelper::GetSettingLongValue(const std::string& key, int64_t defaultVal)
68 {
69 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
70 int64_t value = defaultVal;
71 ErrCode ret = settingProvider.GetLongValue(key, value);
72 if (ret != ERR_OK) {
73 POWER_HILOGW(COMP_UTILS, "get setting key=%{public}s failed, ret=%{public}d", key.c_str(), ret);
74 }
75 return value;
76 }
77
SetSettingLongValue(const std::string& key, int64_t value)78 void SettingHelper::SetSettingLongValue(const std::string& key, int64_t value)
79 {
80 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
81 ErrCode ret = settingProvider.PutLongValue(key, value);
82 if (ret != ERR_OK) {
83 POWER_HILOGW(COMP_UTILS,
84 "set setting key=%{public}s value=%{public}" PRId64 " failed, ret=%{public}d",
85 key.c_str(), value, ret);
86 }
87 }
88
GetSettingStringValue(const std::string& key)89 const std::string SettingHelper::GetSettingStringValue(const std::string& key)
90 {
91 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
92 std::string value;
93 ErrCode ret = settingProvider.GetStringValue(key, value);
94 if (ret != ERR_OK) {
95 POWER_HILOGW(COMP_UTILS, "get setting key=%{public}s failed, ret=%{public}d", key.c_str(), ret);
96 }
97 return value;
98 }
99
SetSettingJsonStringValue(const std::string& key, const std::string& jsonConfig)100 void SettingHelper::SetSettingJsonStringValue(const std::string& key, const std::string& jsonConfig)
101 {
102 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
103 ErrCode ret = settingProvider.PutStringValue(key, jsonConfig);
104 if (ret != ERR_OK) {
105 POWER_HILOGW(COMP_UTILS,
106 "set setting key=%{public}s failed, jsonConfig=%{public}s, ret=%{public}d",
107 key.c_str(), PowerUtils::JsonToSimpleStr(jsonConfig).c_str(), ret);
108 }
109 }
110
RegisterSettingKeyObserver( const std::string& key, SettingObserver::UpdateFunc& func)111 sptr<SettingObserver> SettingHelper::RegisterSettingKeyObserver(
112 const std::string& key, SettingObserver::UpdateFunc& func)
113 {
114 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
115 auto settingObserver = settingProvider.CreateObserver(key, func);
116 ErrCode ret = settingProvider.RegisterObserver(settingObserver);
117 if (ret != ERR_OK) {
118 POWER_HILOGW(COMP_UTILS, "register setting key=%{public}s observer failed, ret=%{public}d",
119 key.c_str(), ret);
120 return nullptr;
121 }
122 return settingObserver;
123 }
124
UnregisterSettingObserver(sptr<SettingObserver>& observer)125 void SettingHelper::UnregisterSettingObserver(sptr<SettingObserver>& observer)
126 {
127 if (observer == nullptr) {
128 return;
129 }
130 SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).UnregisterObserver(observer);
131 }
132
IsWakeupPickupSettingValid()133 bool SettingHelper::IsWakeupPickupSettingValid()
134 {
135 return IsSettingKeyValid(SETTING_POWER_WAKEUP_PICKUP_KEY);
136 }
137
GetSettingWakeupPickup(const std::string& key)138 bool SettingHelper::GetSettingWakeupPickup(const std::string& key)
139 {
140 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
141 int32_t value = 0;
142 ErrCode ret = settingProvider.GetIntValue(key, value);
143 if (ret != ERR_OK) {
144 POWER_HILOGE(COMP_UTILS, "get setting power wakeup pickup key failed, ret=%{public}d", ret);
145 }
146 return (value == WAKEUP_SOURCE_OPEN);
147 }
148
SetSettingWakeupPickup(bool enable)149 void SettingHelper::SetSettingWakeupPickup(bool enable)
150 {
151 POWER_HILOGI(COMP_UTILS, "SetSettingWakeupPickup switch, enable=%{public}d", enable);
152 int32_t value = enable ? WAKEUP_SOURCE_OPEN : WAKEUP_SOURCE_CLOSE;
153 SetSettingIntValue(SETTING_POWER_WAKEUP_PICKUP_KEY, value);
154 }
155
RegisterSettingWakeupPickupObserver(SettingObserver::UpdateFunc& func)156 void SettingHelper::RegisterSettingWakeupPickupObserver(SettingObserver::UpdateFunc& func)
157 {
158 if (pickUpObserver_) {
159 POWER_HILOGI(COMP_UTILS, "setting wakeup pickup observer is already registered");
160 return;
161 }
162 pickUpObserver_ = RegisterSettingKeyObserver(SETTING_POWER_WAKEUP_PICKUP_KEY, func);
163 }
164
UnregisterSettingWakeupPickupObserver()165 void SettingHelper::UnregisterSettingWakeupPickupObserver()
166 {
167 if (!pickUpObserver_) {
168 POWER_HILOGI(COMP_UTILS, "pickUpObserver_ is nullptr, no need to unregister");
169 return;
170 }
171 UnregisterSettingObserver(pickUpObserver_);
172 pickUpObserver_ = nullptr;
173 }
174
175 #ifdef POWER_MANAGER_ENABLE_CHARGING_TYPE_SETTING
IsDisplayOffTimeSettingValid()176 bool SettingHelper::IsDisplayOffTimeSettingValid()
177 {
178 return IsSettingKeyValid(SETTING_DISPLAY_AC_OFF_TIME_KEY) &&
179 IsSettingKeyValid(SETTING_DISPLAY_DC_OFF_TIME_KEY);
180 }
181
IsSettingDisplayAcScreenOffTimeValid()182 bool SettingHelper::IsSettingDisplayAcScreenOffTimeValid()
183 {
184 return IsSettingKeyValid(SETTING_DISPLAY_AC_OFF_TIME_KEY);
185 }
186
GetSettingDisplayAcScreenOffTime(int64_t defaultVal)187 int64_t SettingHelper::GetSettingDisplayAcScreenOffTime(int64_t defaultVal)
188 {
189 return GetSettingLongValue(SETTING_DISPLAY_AC_OFF_TIME_KEY, defaultVal);
190 }
191
SetSettingDisplayAcScreenOffTime(int64_t time)192 void SettingHelper::SetSettingDisplayAcScreenOffTime(int64_t time)
193 {
194 SetSettingLongValue(SETTING_DISPLAY_AC_OFF_TIME_KEY, time);
195 }
196
RegisterSettingDisplayAcScreenOffTimeObserver(SettingObserver::UpdateFunc& func)197 sptr<SettingObserver> SettingHelper::RegisterSettingDisplayAcScreenOffTimeObserver(SettingObserver::UpdateFunc& func)
198 {
199 return RegisterSettingKeyObserver(SETTING_DISPLAY_AC_OFF_TIME_KEY, func);
200 }
201
IsSettingDisplayDcScreenOffTimeValid()202 bool SettingHelper::IsSettingDisplayDcScreenOffTimeValid()
203 {
204 return IsSettingKeyValid(SETTING_DISPLAY_DC_OFF_TIME_KEY);
205 }
206
GetSettingDisplayDcScreenOffTime(int64_t defaultVal)207 int64_t SettingHelper::GetSettingDisplayDcScreenOffTime(int64_t defaultVal)
208 {
209 return GetSettingLongValue(SETTING_DISPLAY_DC_OFF_TIME_KEY, defaultVal);
210 }
211
SetSettingDisplayDcScreenOffTime(int64_t time)212 void SettingHelper::SetSettingDisplayDcScreenOffTime(int64_t time)
213 {
214 SetSettingLongValue(SETTING_DISPLAY_DC_OFF_TIME_KEY, time);
215 }
216
RegisterSettingDisplayDcScreenOffTimeObserver(SettingObserver::UpdateFunc& func)217 sptr<SettingObserver> SettingHelper::RegisterSettingDisplayDcScreenOffTimeObserver(SettingObserver::UpdateFunc& func)
218 {
219 return RegisterSettingKeyObserver(SETTING_DISPLAY_DC_OFF_TIME_KEY, func);
220 }
221 #else
IsDisplayOffTimeSettingValid()222 bool SettingHelper::IsDisplayOffTimeSettingValid()
223 {
224 return IsSettingKeyValid(SETTING_DISPLAY_OFF_TIME_KEY);
225 }
226
GetSettingDisplayOffTime(int64_t defaultVal)227 int64_t SettingHelper::GetSettingDisplayOffTime(int64_t defaultVal)
228 {
229 return GetSettingLongValue(SETTING_DISPLAY_OFF_TIME_KEY, defaultVal);
230 }
231
SetSettingDisplayOffTime(int64_t time)232 void SettingHelper::SetSettingDisplayOffTime(int64_t time)
233 {
234 SetSettingLongValue(SETTING_DISPLAY_OFF_TIME_KEY, time);
235 }
236
RegisterSettingDisplayOffTimeObserver(SettingObserver::UpdateFunc& func)237 sptr<SettingObserver> SettingHelper::RegisterSettingDisplayOffTimeObserver(SettingObserver::UpdateFunc& func)
238 {
239 return RegisterSettingKeyObserver(SETTING_DISPLAY_OFF_TIME_KEY, func);
240 }
241 #endif
242
IsAutoAdjustBrightnessSettingValid()243 bool SettingHelper::IsAutoAdjustBrightnessSettingValid()
244 {
245 return IsSettingKeyValid(SETTING_AUTO_ADJUST_BRIGHTNESS_KEY);
246 }
247
GetSettingAutoAdjustBrightness(int32_t defaultVal)248 int32_t SettingHelper::GetSettingAutoAdjustBrightness(int32_t defaultVal)
249 {
250 return GetSettingIntValue(SETTING_AUTO_ADJUST_BRIGHTNESS_KEY, defaultVal);
251 }
252
SetSettingAutoAdjustBrightness(SwitchStatus status)253 void SettingHelper::SetSettingAutoAdjustBrightness(SwitchStatus status)
254 {
255 SetSettingIntValue(SETTING_AUTO_ADJUST_BRIGHTNESS_KEY, static_cast<int32_t>(status));
256 }
257
RegisterSettingAutoAdjustBrightnessObserver(SettingObserver::UpdateFunc& func)258 sptr<SettingObserver> SettingHelper::RegisterSettingAutoAdjustBrightnessObserver(SettingObserver::UpdateFunc& func)
259 {
260 return RegisterSettingKeyObserver(SETTING_AUTO_ADJUST_BRIGHTNESS_KEY, func);
261 }
262
IsBrightnessSettingValid()263 bool SettingHelper::IsBrightnessSettingValid()
264 {
265 return IsSettingKeyValid(SETTING_BRIGHTNESS_KEY);
266 }
267
SetSettingBrightness(int32_t brightness)268 void SettingHelper::SetSettingBrightness(int32_t brightness)
269 {
270 SetSettingIntValue(SETTING_BRIGHTNESS_KEY, brightness);
271 }
272
IsVibrationSettingValid()273 bool SettingHelper::IsVibrationSettingValid()
274 {
275 return IsSettingKeyValid(SETTING_VIBRATION_KEY);
276 }
277
GetSettingVibration(int32_t defaultVal)278 int32_t SettingHelper::GetSettingVibration(int32_t defaultVal)
279 {
280 return GetSettingIntValue(SETTING_VIBRATION_KEY, defaultVal);
281 }
282
SetSettingVibration(SwitchStatus status)283 void SettingHelper::SetSettingVibration(SwitchStatus status)
284 {
285 SetSettingIntValue(SETTING_VIBRATION_KEY, static_cast<int32_t>(status));
286 }
287
RegisterSettingVibrationObserver(SettingObserver::UpdateFunc& func)288 sptr<SettingObserver> SettingHelper::RegisterSettingVibrationObserver(SettingObserver::UpdateFunc& func)
289 {
290 return RegisterSettingKeyObserver(SETTING_VIBRATION_KEY, func);
291 }
292
IsWindowRotationSettingValid()293 bool SettingHelper::IsWindowRotationSettingValid()
294 {
295 return IsSettingKeyValid(SETTING_WINDOW_ROTATION_KEY);
296 }
297
GetSettingWindowRotation(int32_t defaultVal)298 int32_t SettingHelper::GetSettingWindowRotation(int32_t defaultVal)
299 {
300 return GetSettingIntValue(SETTING_WINDOW_ROTATION_KEY, defaultVal);
301 }
302
SetSettingWindowRotation(SwitchStatus status)303 void SettingHelper::SetSettingWindowRotation(SwitchStatus status)
304 {
305 SetSettingIntValue(SETTING_WINDOW_ROTATION_KEY, static_cast<int32_t>(status));
306 }
307
RegisterSettingWindowRotationObserver(SettingObserver::UpdateFunc& func)308 sptr<SettingObserver> SettingHelper::RegisterSettingWindowRotationObserver(SettingObserver::UpdateFunc& func)
309 {
310 return RegisterSettingKeyObserver(SETTING_WINDOW_ROTATION_KEY, func);
311 }
312
IsIntellVoiceSettingValid()313 bool SettingHelper::IsIntellVoiceSettingValid()
314 {
315 return IsSettingKeyValid(SETTING_INTELL_VOICE_KEY);
316 }
317
GetSettingIntellVoice(int32_t defaultVal)318 int32_t SettingHelper::GetSettingIntellVoice(int32_t defaultVal)
319 {
320 return GetSettingIntValue(SETTING_INTELL_VOICE_KEY, defaultVal);
321 }
322
SetSettingIntellVoice(SwitchStatus status)323 void SettingHelper::SetSettingIntellVoice(SwitchStatus status)
324 {
325 SetSettingIntValue(SETTING_INTELL_VOICE_KEY, static_cast<int32_t>(status));
326 }
327
RegisterSettingIntellVoiceObserver(SettingObserver::UpdateFunc& func)328 sptr<SettingObserver> SettingHelper::RegisterSettingIntellVoiceObserver(SettingObserver::UpdateFunc& func)
329 {
330 return RegisterSettingKeyObserver(SETTING_INTELL_VOICE_KEY, func);
331 }
332
333 #ifdef POWER_MANAGER_ENABLE_CHARGING_TYPE_SETTING
RegisterSettingAcSuspendSourcesObserver(SettingObserver::UpdateFunc& func)334 sptr<SettingObserver> SettingHelper::RegisterSettingAcSuspendSourcesObserver(SettingObserver::UpdateFunc& func)
335 {
336 return RegisterSettingKeyObserver(SETTING_POWER_AC_SUSPEND_SOURCES_KEY, func);
337 }
338
IsSuspendSourcesSettingValid()339 bool SettingHelper::IsSuspendSourcesSettingValid()
340 {
341 return IsSettingKeyValid(SETTING_POWER_AC_SUSPEND_SOURCES_KEY) &&
342 IsSettingKeyValid(SETTING_POWER_DC_SUSPEND_SOURCES_KEY);
343 }
344
IsSettingAcSuspendSourcesValid()345 bool SettingHelper::IsSettingAcSuspendSourcesValid()
346 {
347 return IsSettingKeyValid(SETTING_POWER_AC_SUSPEND_SOURCES_KEY);
348 }
349
GetSettingAcSuspendSources()350 const std::string SettingHelper::GetSettingAcSuspendSources()
351 {
352 return GetSettingStringValue(SETTING_POWER_AC_SUSPEND_SOURCES_KEY);
353 }
354
SetSettingAcSuspendSources(const std::string& jsonConfig)355 void SettingHelper::SetSettingAcSuspendSources(const std::string& jsonConfig)
356 {
357 SetSettingJsonStringValue(SETTING_POWER_AC_SUSPEND_SOURCES_KEY, jsonConfig);
358 }
359
RegisterSettingDcSuspendSourcesObserver(SettingObserver::UpdateFunc& func)360 sptr<SettingObserver> SettingHelper::RegisterSettingDcSuspendSourcesObserver(SettingObserver::UpdateFunc& func)
361 {
362 return RegisterSettingKeyObserver(SETTING_POWER_DC_SUSPEND_SOURCES_KEY, func);
363 }
364
IsSettingDcSuspendSourcesValid()365 bool SettingHelper::IsSettingDcSuspendSourcesValid()
366 {
367 return IsSettingKeyValid(SETTING_POWER_DC_SUSPEND_SOURCES_KEY);
368 }
369
GetSettingDcSuspendSources()370 const std::string SettingHelper::GetSettingDcSuspendSources()
371 {
372 return GetSettingStringValue(SETTING_POWER_DC_SUSPEND_SOURCES_KEY);
373 }
374
SetSettingDcSuspendSources(const std::string& jsonConfig)375 void SettingHelper::SetSettingDcSuspendSources(const std::string& jsonConfig)
376 {
377 SetSettingJsonStringValue(SETTING_POWER_DC_SUSPEND_SOURCES_KEY, jsonConfig);
378 }
379 #else
RegisterSettingSuspendSourcesObserver(SettingObserver::UpdateFunc& func)380 sptr<SettingObserver> SettingHelper::RegisterSettingSuspendSourcesObserver(SettingObserver::UpdateFunc& func)
381 {
382 return RegisterSettingKeyObserver(SETTING_POWER_SUSPEND_SOURCES_KEY, func);
383 }
384
IsSuspendSourcesSettingValid()385 bool SettingHelper::IsSuspendSourcesSettingValid()
386 {
387 return IsSettingKeyValid(SETTING_POWER_SUSPEND_SOURCES_KEY);
388 }
389
GetSettingSuspendSources()390 const std::string SettingHelper::GetSettingSuspendSources()
391 {
392 return GetSettingStringValue(SETTING_POWER_SUSPEND_SOURCES_KEY);
393 }
394
SetSettingSuspendSources(const std::string& jsonConfig)395 void SettingHelper::SetSettingSuspendSources(const std::string& jsonConfig)
396 {
397 SetSettingJsonStringValue(SETTING_POWER_SUSPEND_SOURCES_KEY, jsonConfig);
398 }
399 #endif
400
RegisterSettingWakeupSourcesObserver(SettingObserver::UpdateFunc& func)401 sptr<SettingObserver> SettingHelper::RegisterSettingWakeupSourcesObserver(SettingObserver::UpdateFunc& func)
402 {
403 return RegisterSettingKeyObserver(SETTING_POWER_WAKEUP_SOURCES_KEY, func);
404 }
405
IsWakeupSourcesSettingValid()406 bool SettingHelper::IsWakeupSourcesSettingValid()
407 {
408 return IsSettingKeyValid(SETTING_POWER_WAKEUP_SOURCES_KEY);
409 }
410
GetSettingWakeupSources()411 const std::string SettingHelper::GetSettingWakeupSources()
412 {
413 return GetSettingStringValue(SETTING_POWER_WAKEUP_SOURCES_KEY);
414 }
415
SetSettingWakeupSources(const std::string& jsonConfig)416 void SettingHelper::SetSettingWakeupSources(const std::string& jsonConfig)
417 {
418 SetSettingJsonStringValue(SETTING_POWER_WAKEUP_SOURCES_KEY, jsonConfig);
419 }
420
IsWakeupDoubleSettingValid()421 bool SettingHelper::IsWakeupDoubleSettingValid()
422 {
423 return IsSettingKeyValid(SETTING_POWER_WAKEUP_DOUBLE_KEY);
424 }
425
GetSettingWakeupDouble(const std::string& key)426 bool SettingHelper::GetSettingWakeupDouble(const std::string& key)
427 {
428 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
429 int32_t value;
430 ErrCode ret = settingProvider.GetIntValue(key, value);
431 if (ret != ERR_OK) {
432 POWER_HILOGE(COMP_UTILS, "get setting power Wakeup double key failed, ret=%{public}d", ret);
433 }
434 return (value == WAKEUP_SOURCE_OPEN);
435 }
436
SetSettingWakeupDouble(bool enable)437 void SettingHelper::SetSettingWakeupDouble(bool enable)
438 {
439 POWER_HILOGI(COMP_UTILS, "SetSettingWakeupDouble switch, enable=%{public}d", enable);
440 int32_t value = enable ? WAKEUP_SOURCE_OPEN : WAKEUP_SOURCE_CLOSE;
441 SetSettingIntValue(SETTING_POWER_WAKEUP_DOUBLE_KEY, value);
442 }
443
RegisterSettingWakeupDoubleObserver(SettingObserver::UpdateFunc& func)444 void SettingHelper::RegisterSettingWakeupDoubleObserver(SettingObserver::UpdateFunc& func)
445 {
446 if (doubleClickObserver_) {
447 POWER_HILOGI(COMP_UTILS, "setting wakeup double click observer is already registered");
448 return;
449 }
450 doubleClickObserver_ = RegisterSettingKeyObserver(SETTING_POWER_WAKEUP_DOUBLE_KEY, func);
451 }
452
UnregisterSettingWakeupDoubleObserver()453 void SettingHelper::UnregisterSettingWakeupDoubleObserver()
454 {
455 if (!doubleClickObserver_) {
456 POWER_HILOGI(COMP_UTILS, "doubleClickObserver_ is nullptr, no need to unregister");
457 return;
458 }
459 UnregisterSettingObserver(doubleClickObserver_);
460 doubleClickObserver_ = nullptr;
461 }
462
SaveCurrentMode(int32_t mode)463 void SettingHelper::SaveCurrentMode(int32_t mode)
464 {
465 SetSettingIntValue(SETTING_POWER_MODE_KEY, mode);
466 }
467
ReadCurrentMode(int32_t defaultMode)468 int32_t SettingHelper::ReadCurrentMode(int32_t defaultMode)
469 {
470 return GetSettingIntValue(SETTING_POWER_MODE_KEY, defaultMode);
471 }
472
RegisterSettingPowerModeObserver(SettingObserver::UpdateFunc& func)473 void SettingHelper::RegisterSettingPowerModeObserver(SettingObserver::UpdateFunc& func)
474 {
475 if (powerModeObserver_) {
476 POWER_HILOGI(COMP_UTILS, "setting power mode observer is already registered");
477 return;
478 }
479 powerModeObserver_ = RegisterSettingKeyObserver(SETTING_POWER_MODE_KEY, func);
480 }
481
UnRegisterSettingPowerModeObserver()482 void SettingHelper::UnRegisterSettingPowerModeObserver()
483 {
484 if (!powerModeObserver_) {
485 POWER_HILOGI(COMP_UTILS, "powerModeObserver_ is nullptr, no need to unregister");
486 return;
487 }
488 auto ret = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).UnregisterObserver(powerModeObserver_);
489 if (ret != ERR_OK) {
490 POWER_HILOGE(COMP_UTILS, "unregister setting power mode observer failed, ret=%{public}d", ret);
491 }
492 powerModeObserver_ = nullptr;
493 }
494
ReadPowerModeRecoverMap()495 const std::string SettingHelper::ReadPowerModeRecoverMap()
496 {
497 return GetSettingStringValue(SETTING_POWER_MODE_BACKUP_KEY);
498 }
499
SavePowerModeRecoverMap(const std::string& jsonConfig)500 void SettingHelper::SavePowerModeRecoverMap(const std::string& jsonConfig)
501 {
502 SetSettingJsonStringValue(SETTING_POWER_MODE_BACKUP_KEY, jsonConfig);
503 }
504
IsWakeupLidSettingValid()505 bool SettingHelper::IsWakeupLidSettingValid()
506 {
507 return IsSettingKeyValid(SETTING_POWER_WAKEUP_LID_KEY);
508 }
509
RegisterSettingWakeupLidObserver(SettingObserver::UpdateFunc& func)510 void SettingHelper::RegisterSettingWakeupLidObserver(SettingObserver::UpdateFunc& func)
511 {
512 if (!IsWakeupLidSettingValid()) {
513 POWER_HILOGE(COMP_UTILS, "settings.power.wakeup_lid is valid.");
514 return;
515 }
516 lidObserver_ = RegisterSettingKeyObserver(SETTING_POWER_WAKEUP_LID_KEY, func);
517 }
518
UnRegisterSettingWakeupLidObserver()519 void SettingHelper::UnRegisterSettingWakeupLidObserver()
520 {
521 if (!lidObserver_) {
522 POWER_HILOGI(COMP_UTILS, "lidObserver_ is nullptr, no need to unregister");
523 return;
524 }
525 if (!IsWakeupLidSettingValid()) {
526 POWER_HILOGE(COMP_UTILS, "settings.power.wakeup_lid is valid.");
527 return;
528 }
529 auto ret = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).UnregisterObserver(lidObserver_);
530 if (ret != ERR_OK) {
531 POWER_HILOGE(COMP_UTILS, "unregister setting wakeup lid observer failed, ret=%{public}d", ret);
532 }
533 lidObserver_ = nullptr;
534 }
535
GetSettingWakeupLid(const std::string& key)536 bool SettingHelper::GetSettingWakeupLid(const std::string& key)
537 {
538 if (!IsWakeupLidSettingValid()) {
539 POWER_HILOGE(COMP_UTILS, "settings.power.wakeup_lid is valid.");
540 return false;
541 }
542 SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
543 int32_t value = 0;
544 ErrCode ret = settingProvider.GetIntValue(SETTING_POWER_WAKEUP_LID_KEY, value);
545 if (ret != ERR_OK) {
546 POWER_HILOGE(COMP_UTILS, "get setting power wakeup lid key failed, ret=%{public}d", ret);
547 }
548 return (value == WAKEUP_SOURCE_OPEN);
549 }
550
SetSettingWakeupLid(bool enable)551 void SettingHelper::SetSettingWakeupLid(bool enable)
552 {
553 POWER_HILOGI(COMP_UTILS, "SetSettingWakeupLid, enable=%{public}d", enable);
554 int32_t value = enable ? WAKEUP_SOURCE_OPEN : WAKEUP_SOURCE_CLOSE;
555 SetSettingIntValue(SETTING_POWER_WAKEUP_LID_KEY, value);
556 }
557 } // namespace PowerMgr
558 } // namespace OHOS
559