2 * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 #include "system_settings.h"
19 #include "sst_vconf.h"
20 #include "sst_sound.h"
21 #include "sst_interface.h"
23 API int system_settings_set_value_int(system_settings_key_e key, int value)
26 sst_interface *iface = NULL;
27 ret = sst_get_interface(key, &iface);
28 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
29 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
33 if (SYSTEM_SETTING_DATA_TYPE_INT != iface->data_type) {
34 ERR("Invalid type for key(%d) : %d", key, iface->data_type);
35 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
38 if (NULL == iface->setter.i) {
39 ERR("No setter for key(%d)", key);
40 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
43 ret = iface->setter.i(iface, value);
44 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
45 ERR("setter(%d) Fail(%d)", key, ret);
49 return SYSTEM_SETTINGS_ERROR_NONE;
52 API int system_settings_get_value_int(system_settings_key_e key, int *value)
55 sst_interface *iface = NULL;
58 ERR("Invalid input parameter value == NULL");
59 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
62 ret = sst_get_interface(key, &iface);
63 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
64 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
68 if (SYSTEM_SETTING_DATA_TYPE_INT != iface->data_type) {
69 ERR("Invalid type for key(%d) : %d", key, iface->data_type);
70 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
73 if (NULL == iface->getter.i) {
74 ERR("No getter for key(%d)", key);
75 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
79 ret = iface->getter.i(iface, &result);
80 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
81 ERR("getter(%d) Fail(%d)", key, ret);
86 return SYSTEM_SETTINGS_ERROR_NONE;
89 API int system_settings_set_value_bool(system_settings_key_e key, bool value)
92 sst_interface *iface = NULL;
93 ret = sst_get_interface(key, &iface);
94 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
95 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
99 if (SYSTEM_SETTING_DATA_TYPE_BOOL != iface->data_type) {
100 ERR("Invalid type for key(%d) : %d", key, iface->data_type);
101 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
104 if (NULL == iface->setter.b) {
105 ERR("No setter for key(%d)", key);
106 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
109 ret = iface->setter.b(iface, value);
110 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
111 ERR("setter(%d) Fail(%d)", key, ret);
115 return SYSTEM_SETTINGS_ERROR_NONE;
118 API int system_settings_get_value_bool(system_settings_key_e key, bool *value)
121 sst_interface *iface = NULL;
124 ERR("Invalid input parameter value == NULL");
125 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
128 ret = sst_get_interface(key, &iface);
129 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
130 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
134 if (SYSTEM_SETTING_DATA_TYPE_BOOL != iface->data_type) {
135 ERR("Invalid type for key(%d) : %d", key, iface->data_type);
136 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
139 if (NULL == iface->getter.b) {
140 ERR("No getter for key(%d)", key);
141 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
145 ret = iface->getter.b(iface, &result);
146 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
147 ERR("getter(%d) Fail(%d)", key, ret);
152 return SYSTEM_SETTINGS_ERROR_NONE;
155 API int system_settings_set_value_string(system_settings_key_e key, const char *value)
158 sst_interface *iface = NULL;
159 ret = sst_get_interface(key, &iface);
160 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
161 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
165 if (SYSTEM_SETTING_DATA_TYPE_STRING != iface->data_type) {
166 ERR("Invalid type for key(%d) : %d", key, iface->data_type);
167 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
170 if (NULL == iface->setter.s) {
171 ERR("No setter for key(%d)", key);
172 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
175 ret = iface->setter.s(iface, value);
176 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
177 ERR("setter(%d) Fail(%d)", key, ret);
181 return SYSTEM_SETTINGS_ERROR_NONE;
184 API int system_settings_get_value_string(system_settings_key_e key, char **value)
187 sst_interface *iface = NULL;
189 ERR("Invalid input parameter value == NULL");
190 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
193 ret = sst_get_interface(key, &iface);
194 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
195 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
199 if (SYSTEM_SETTING_DATA_TYPE_STRING != iface->data_type) {
200 ERR("Invalid type for key(%d) : %d", key, iface->data_type);
201 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
204 if (NULL == iface->getter.s) {
205 ERR("No getter for key(%d)", key);
206 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
210 ret = iface->getter.s(iface, &result);
211 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
212 ERR("getter(%d) Fail(%d)", key, ret);
217 return SYSTEM_SETTINGS_ERROR_NONE;
220 //todo: need to deprecate
221 API int system_settings_set_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
225 RETV_IF(NULL == callback, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
227 sst_interface *iface = NULL;
228 ret = sst_get_interface(key, &iface);
229 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
230 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
234 if (NULL == iface->vconf_key) {
235 ERR("NULL set_changed_cb of key(%d)", key);
236 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
239 return sst_vconf_set_cb(iface, callback, user_data);
242 //todo: need to deprecate
243 API int system_settings_unset_changed_cb(system_settings_key_e key)
245 sst_interface *iface = NULL;
246 int ret = sst_get_interface(key, &iface);
247 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
248 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
252 if (NULL == iface->vconf_key) {
253 ERR("NULL set_changed_cb of key(%d)", key);
254 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
257 return sst_vconf_unset_cb(iface);
260 API int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *value)
263 RETVM_IF(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE != key,
264 SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER,
265 "Invalid Key(%d)", key);
267 return sst_sound_get_call_ringtone_list(key, callback, value);
270 API int system_settings_add_value_string(system_settings_key_e key, const char* value)
273 RETVM_IF(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE != key,
274 SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER,
275 "Invalid Key(%d)", key);
277 return sst_sound_add_call_ringtone(key, value);
280 API int system_settings_delete_value_string(system_settings_key_e key, const char* value)
283 RETVM_IF(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE != key,
284 SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER,
285 "Invalid Key(%d)", key);
287 return sst_sound_del_call_ringtone(key, value);
290 API int system_settings_add_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
294 RETV_IF(NULL == callback, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
296 sst_interface *iface = NULL;
297 ret = sst_get_interface(key, &iface);
298 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
299 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
303 if (NULL == iface->vconf_key) {
304 ERR("NULL vconf_key of key(%d)", key);
305 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
308 INFO("key = %d, %s", key, iface->vconf_key);
310 ret = sst_vconf_add_multi_cb(iface, callback, user_data);
311 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
312 ERR("sst_vconf_add_multi_cb() Fail(%d)", ret);
316 return SYSTEM_SETTINGS_ERROR_NONE;
319 API int system_settings_remove_changed_cb(system_settings_key_e key, system_settings_changed_cb callback)
323 RETV_IF(NULL == callback, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
325 sst_interface *iface = NULL;
326 ret = sst_get_interface(key, &iface);
327 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
328 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
332 if (NULL == iface->vconf_key) {
333 ERR("NULL vconf_key of key(%d)", key);
334 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
337 ret = sst_vconf_del_multi_cb(iface, callback);
338 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
339 ERR("sst_vconf_del_multi_cb() Fail(%d)", ret);
343 return SYSTEM_SETTINGS_ERROR_NONE;
346 int system_settings_subscribe_changes(system_settings_key_e key, system_settings_changed_cb callback, void *user_data, system_settings_cb_id *id)
350 RETV_IF(NULL == id, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
351 RETV_IF(NULL == callback, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
353 sst_interface *iface = NULL;
354 ret = sst_get_interface(key, &iface);
355 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
356 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
360 if (NULL == iface->vconf_key) {
361 ERR("NULL vconf_key of key(%d)", key);
362 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
365 ret = sst_vconf_subscribe(iface, callback, user_data, id);
366 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
367 ERR("sst_vconf_subscribe() Fail(%d)", ret);
370 return SYSTEM_SETTINGS_ERROR_NONE;
373 int system_settings_unsubscribe_changes(system_settings_key_e key, system_settings_cb_id id)
377 RETV_IF(NULL == id, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
379 sst_interface *iface = NULL;
380 ret = sst_get_interface(key, &iface);
381 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
382 ERR("sst_get_interface(%d) Fail(%d)", key, ret);
386 if (NULL == iface->vconf_key) {
387 ERR("NULL vconf_key of key(%d)", key);
388 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
391 ret = sst_vconf_unsubscribe(iface, id);
392 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
393 ERR("sst_vconf_unsubscribe() Fail(%d)", ret);
396 return SYSTEM_SETTINGS_ERROR_NONE;