2 * Copyright (c) 2011 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.
24 #include <system_settings.h>
25 #include <system_settings_private.h>
34 #define LOG_TAG "TIZEN_N_SYSTEM_SETTINGS"
36 #define SYSTEM_SETTINGS_MAX -1
40 system_setting_s system_setting_table[] = {
43 SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
44 SYSTEM_SETTING_DATA_TYPE_STRING,
45 system_setting_get_incoming_call_ringtone,
46 system_setting_set_incoming_call_ringtone,
47 system_setting_set_changed_callback_incoming_call_ringtone,
48 system_setting_unset_changed_callback_incoming_call_ringtone,
50 system_setting_add_incoming_call_ringtone, /* ADD */
51 system_setting_del_incoming_call_ringtone, /* DEL */
52 system_setting_list_incoming_call_ringtone, /* LIST */
57 SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN,
58 SYSTEM_SETTING_DATA_TYPE_STRING,
59 system_setting_get_wallpaper_home_screen,
60 system_setting_set_wallpaper_home_screen,
61 system_setting_set_changed_callback_wallpaper_home_screen,
62 system_setting_unset_changed_callback_wallpaper_home_screen,
71 SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN,
72 SYSTEM_SETTING_DATA_TYPE_STRING,
73 system_setting_get_wallpaper_lock_screen,
74 system_setting_set_wallpaper_lock_screen,
75 system_setting_set_changed_callback_wallpaper_lock_screen,
76 system_setting_unset_changed_callback_wallpaper_lock_screen,
85 SYSTEM_SETTINGS_KEY_FONT_SIZE,
86 SYSTEM_SETTING_DATA_TYPE_INT,
87 system_setting_get_font_size,
88 system_setting_set_font_size,
89 system_setting_set_changed_callback_font_size,
90 system_setting_unset_changed_callback_font_size,
99 SYSTEM_SETTINGS_KEY_FONT_TYPE,
100 SYSTEM_SETTING_DATA_TYPE_STRING,
101 system_setting_get_font_type,
102 system_setting_set_font_type,
103 system_setting_set_changed_callback_font_type,
104 system_setting_unset_changed_callback_font_type,
113 SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION,
114 SYSTEM_SETTING_DATA_TYPE_BOOL,
115 system_setting_get_motion_activation,
116 system_setting_set_motion_activation,
117 system_setting_set_changed_callback_motion_activation,
118 system_setting_unset_changed_callback_motion_activation,
127 SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE,
128 SYSTEM_SETTING_DATA_TYPE_STRING,
129 system_setting_get_email_alert_ringtone,
130 system_setting_set_email_alert_ringtone,
131 system_setting_set_changed_callback_email_alert_ringtone,
132 system_setting_unset_changed_callback_email_alert_ringtone,
140 SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED,
141 SYSTEM_SETTING_DATA_TYPE_BOOL,
142 system_setting_get_usb_debugging_option,
143 system_setting_set_usb_debugging_option,
144 system_setting_set_changed_callback_usb_debugging_option,
145 system_setting_unset_changed_callback_usb_debugging_option,
153 SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED,
154 SYSTEM_SETTING_DATA_TYPE_BOOL,
155 system_setting_get_3g_data_network,
156 system_setting_set_3g_data_network,
157 system_setting_set_changed_callback_3g_data_network,
158 system_setting_unset_changed_callback_3g_data_network,
166 SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP,
167 SYSTEM_SETTING_DATA_TYPE_STRING,
168 system_setting_get_lockscreen_app,
169 system_setting_set_lockscreen_app,
170 system_setting_set_changed_callback_lockscreen_app,
171 system_setting_unset_changed_callback_lockscreen_app,
179 SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE,
180 SYSTEM_SETTING_DATA_TYPE_STRING,
181 system_setting_get_default_font_type,
192 SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
193 SYSTEM_SETTING_DATA_TYPE_STRING,
194 system_setting_get_locale_country,
195 system_setting_set_locale_country,
196 system_setting_set_changed_callback_locale_country,
197 system_setting_unset_changed_callback_locale_country,
205 SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
206 SYSTEM_SETTING_DATA_TYPE_STRING,
207 system_setting_get_locale_language,
208 system_setting_set_locale_language,
209 system_setting_set_changed_callback_locale_language,
210 system_setting_unset_changed_callback_locale_language,
218 SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR,
219 SYSTEM_SETTING_DATA_TYPE_BOOL,
220 system_setting_get_locale_timeformat_24hour,
221 system_setting_set_locale_timeformat_24hour,
222 system_setting_set_changed_callback_locale_timeformat_24hour,
223 system_setting_unset_changed_callback_locale_timeformat_24hour,
231 SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE,
232 SYSTEM_SETTING_DATA_TYPE_STRING,
233 system_setting_get_locale_timezone,
234 system_setting_set_locale_timezone,
235 system_setting_set_changed_callback_locale_timezone,
236 system_setting_unset_changed_callback_locale_timezone,
244 SYSTEM_SETTINGS_KEY_TIME_CHANGED,
245 SYSTEM_SETTING_DATA_TYPE_INT,
246 system_setting_get_time_changed,
248 system_setting_set_changed_callback_time_changed,
249 system_setting_unset_changed_callback_time_changed,
257 SYSTEM_SETTINGS_KEY_SOUND_LOCK,
258 SYSTEM_SETTING_DATA_TYPE_BOOL,
259 system_setting_get_sound_lock,
261 system_setting_set_changed_callback_sound_lock,
262 system_setting_unset_changed_callback_sound_lock,
270 SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
271 SYSTEM_SETTING_DATA_TYPE_BOOL,
272 system_setting_get_sound_silent_mode,
273 system_setting_set_sound_silent_mode,
274 system_setting_set_changed_callback_sound_silent_mode,
275 system_setting_unset_changed_callback_sound_silent_mode,
283 SYSTEM_SETTINGS_KEY_SOUND_TOUCH,
284 SYSTEM_SETTING_DATA_TYPE_BOOL,
285 system_setting_get_sound_touch,
287 system_setting_set_changed_callback_sound_touch,
288 system_setting_unset_changed_callback_sound_touch,
296 SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO,
297 SYSTEM_SETTING_DATA_TYPE_BOOL,
298 system_setting_get_auto_rotation_mode,
299 system_setting_set_auto_rotation_mode,
300 system_setting_set_changed_callback_auto_rotation_mode,
301 system_setting_unset_changed_callback_auto_rotation_mode,
309 SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME,
310 SYSTEM_SETTING_DATA_TYPE_INT,
311 system_setting_get_screen_backlight_time,
312 system_setting_set_screen_backlight_time,
313 system_setting_set_changed_callback_screen_backlight_time,
314 system_setting_unset_changed_callback_screen_backlight_time,
322 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
323 SYSTEM_SETTING_DATA_TYPE_STRING,
324 system_setting_get_sound_notification,
325 system_setting_set_sound_notification,
326 system_setting_set_changed_callback_sound_notification,
327 system_setting_unset_changed_callback_sound_notification,
335 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD,
336 SYSTEM_SETTING_DATA_TYPE_INT,
337 system_setting_get_notification_repetition_period,
338 system_setting_set_notification_repetition_period,
339 system_setting_set_changed_callback_notification_repetition_period,
340 system_setting_unset_changed_callback_notification_repetition_period,
348 SYSTEM_SETTINGS_KEY_DEVICE_NAME,
349 SYSTEM_SETTING_DATA_TYPE_STRING,
350 system_setting_get_device_name,
352 system_setting_set_changed_callback_device_name,
353 system_setting_unset_changed_callback_device_name,
361 SYSTEM_SETTINGS_KEY_MOTION_ENABLED,
362 SYSTEM_SETTING_DATA_TYPE_BOOL,
363 system_setting_get_motion_activation,
365 system_setting_set_changed_callback_motion_activation,
366 system_setting_unset_changed_callback_motion_activation,
374 SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE,
375 SYSTEM_SETTING_DATA_TYPE_BOOL,
376 system_setting_get_network_flight_mode,
378 system_setting_set_changed_callback_network_flight_mode,
379 system_setting_unset_changed_callback_network_flight_mode,
387 SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION,
388 SYSTEM_SETTING_DATA_TYPE_BOOL,
389 system_setting_get_network_wifi_notification,
391 system_setting_set_changed_callback_network_wifi_notification,
392 system_setting_unset_changed_callback_network_wifi_notification,
400 SYSTEM_SETTINGS_KEY_LOCK_STATE,
401 SYSTEM_SETTING_DATA_TYPE_INT,
402 system_setting_get_lock_state,
403 system_setting_set_lock_state,
404 system_setting_set_changed_callback_lock_state,
405 system_setting_unset_changed_callback_lock_state,
413 SYSTEM_SETTINGS_KEY_ADS_ID,
414 SYSTEM_SETTING_DATA_TYPE_STRING,
415 system_setting_get_ads_id,
416 system_setting_set_ads_id,
417 system_setting_set_changed_callback_ads_id,
418 system_setting_unset_changed_callback_ads_id,
427 SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL
432 static void _dump_context()
435 /*int max = SYSTEM_SETTINGS_MAX; */
436 int max = sizeof(system_setting_table) / sizeof(system_setting_s) - 1 ;
438 for (i = 0; i < max; i++) {
439 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
440 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
441 LOGE("[%s] system_setting_table[i].get_value_cb = %x", __FUNCTION__, system_setting_table[i].get_value_cb);
442 LOGE("[%s] system_setting_table[i].set_value_cb = %x", __FUNCTION__, system_setting_table[i].set_value_cb);
444 LOGE("[%s] system_setting_table[i].set_changed_cb = %x <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
445 LOGE("[%s] system_setting_table[i].unset_changed_cb = %x", __FUNCTION__, system_setting_table[i].unset_changed_cb);
446 LOGE("[%s] system_setting_table[i].changed_cb = %x", __FUNCTION__, system_setting_table[i].changed_cb);
451 /* LCOV_EXCL_START */
452 static int _dump_context_node(int key)
456 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
457 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
460 while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
461 if (system_setting_table[index].key == key) {
463 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
464 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
465 LOGE("[%s] system_setting_table[i].get_value_cb = %x", __FUNCTION__, system_setting_table[i].get_value_cb);
466 LOGE("[%s] system_setting_table[i].set_value_cb = %x", __FUNCTION__, system_setting_table[i].set_value_cb);
467 LOGE("[%s] system_setting_table[i].set_changed_cb = %x <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
468 LOGE("[%s] system_setting_table[i].unset_changed_cb = %x", __FUNCTION__, system_setting_table[i].unset_changed_cb);
469 LOGE("[%s] system_setting_table[i].changed_cb = %x", __FUNCTION__, system_setting_table[i].changed_cb);
479 int system_settings_get_item(system_settings_key_e key, system_setting_h *item)
481 LOGE("Enter [%s], key=%d", __FUNCTION__, key);
483 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
484 LOGE("Enter [%s] catch invalid parameter error (%d) ", __FUNCTION__, key);
485 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
491 while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
492 if (system_setting_table[index].key == key) {
493 *item = &system_setting_table[index];
494 LOGE("Enter [%s], index = %d, key = %d, type = %d", __FUNCTION__, index, key, (*item)->data_type);
495 return SYSTEM_SETTINGS_ERROR_NONE;
501 return TIZEN_ERROR_INVALID_PARAMETER;
504 int system_settings_get_value(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
506 LOGE("Enter [%s]", __FUNCTION__);
507 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
508 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
511 system_setting_h system_setting_item;
512 system_setting_get_value_cb system_setting_getter;
514 if (0 != system_settings_get_item(key, &system_setting_item)) {
515 _dump_context_node(key);
516 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key --- (%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key);
517 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
520 if (system_setting_item->data_type != data_type) {
521 _dump_context_node(key);
522 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type --- key : (%d), datatype:(%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key, data_type);
523 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
526 system_setting_getter = system_setting_item->get_value_cb;
528 if (system_setting_getter == NULL) {
529 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
530 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
533 return system_setting_getter(key, system_setting_item->data_type, value);
536 /* LCOV_EXCL_START */
537 int system_settings_set_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
539 LOGE("Enter [%s]", __FUNCTION__);
540 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
541 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
545 system_setting_h system_setting_item;
546 system_setting_set_value_cb system_setting_setter;
548 int ret = system_settings_get_item(key, &system_setting_item);
551 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
552 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
556 if (system_setting_item->data_type != data_type) {
557 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
558 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
561 system_setting_setter = system_setting_item->set_value_cb;
563 if (system_setting_setter == NULL) {
564 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
565 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
568 return system_setting_setter(key, system_setting_item->data_type, value);
574 int system_settings_add_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
576 LOGE("Enter [%s]", __FUNCTION__);
577 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
578 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
582 system_setting_h system_setting_item;
583 system_setting_add_value_cb system_setting_adder;
585 int ret = system_settings_get_item(key, &system_setting_item);
588 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
589 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
593 if (system_setting_item->data_type != data_type) {
594 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
595 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
598 system_setting_adder = system_setting_item->add_value_cb;
600 if (system_setting_adder == NULL) {
601 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
602 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
605 return system_setting_adder(key, system_setting_item->data_type, value);
609 int system_settings_del_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
611 LOGE("Enter [%s]", __FUNCTION__);
612 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
613 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
617 system_setting_h system_setting_item;
618 system_setting_del_value_cb system_setting_deler;
620 int ret = system_settings_get_item(key, &system_setting_item);
623 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
624 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
628 if (system_setting_item->data_type != data_type) {
629 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
630 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
633 system_setting_deler = system_setting_item->del_value_cb;
635 if (system_setting_deler == NULL) {
636 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
637 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
640 return system_setting_deler(key, system_setting_item->data_type, value);
647 int system_settings_list_value(system_settings_key_e key, system_setting_data_type_e data_type, bool (*system_setting_data_iterator)(int, const char* , void *), void *user_data)
649 LOGE("Enter [%s]", __FUNCTION__);
650 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
651 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
655 system_setting_h system_setting_item;
656 system_setting_list_value_cb system_setting_lister;
658 int ret = system_settings_get_item(key, &system_setting_item);
661 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
662 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
666 if (system_setting_item->data_type != data_type) {
667 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
668 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
671 //system_setting_list_value_cb list_changed_cb;
672 system_setting_lister = system_setting_item->list_value_cb;
674 if (system_setting_lister == NULL) {
675 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
676 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
679 return system_setting_lister(key, system_setting_item->data_type, system_setting_data_iterator, user_data);
687 /* LCOV_EXCL_START */
688 int system_settings_set_value_int(system_settings_key_e key, int value)
690 LOGE("Enter [%s]", __FUNCTION__);
691 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
692 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
697 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void *)p_ptr);
701 int system_settings_get_value_int(system_settings_key_e key, int *value)
703 LOGE("Enter [%s]", __FUNCTION__);
704 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
705 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
708 int *ptr = &value_int;
711 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void **)p_ptr);
716 /* LCOV_EXCL_START */
717 int system_settings_set_value_bool(system_settings_key_e key, bool value)
719 LOGE("Enter [%s]", __FUNCTION__);
720 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
721 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
725 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void *)ptr);
729 int system_settings_get_value_bool(system_settings_key_e key, bool *value)
731 LOGE("Enter [%s]", __FUNCTION__);
732 SETTING_TRACE(" SIGNED LONG here ******************* log here *************** ");
733 signed long flag = 0;
737 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
738 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
741 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void **)&flag);
742 SETTING_TRACE(" inf (flag) value : %d ", flag);
745 SETTING_TRACE(" flag == 0 ");
746 } else if (flag == 1) {
748 SETTING_TRACE(" flag == 1 ");
751 SETTING_TRACE(" exception here!!! ");
757 /* LCOV_EXCL_START */
758 int system_settings_set_value_string(system_settings_key_e key, const char *value)
760 LOGE("Enter [%s]", __FUNCTION__);
761 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
762 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
766 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
767 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
769 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
773 int system_settings_get_value_string(system_settings_key_e key, char **value)
775 LOGE("Enter [%s]", __FUNCTION__);
776 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
777 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
780 return system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void **)value);
785 int system_settings_set_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
787 LOGE("Enter [%s]", __FUNCTION__);
788 system_setting_h system_setting_item;
789 system_setting_set_changed_callback_cb system_setting_set_changed_cb;
791 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
792 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
795 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
796 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
798 if (system_settings_get_item(key, &system_setting_item)) {
799 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
800 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
803 system_setting_set_changed_cb = system_setting_item->set_changed_cb;
806 /* Store the callback function from application side */
808 system_setting_item->changed_cb = callback;
811 system_setting_item->user_data = user_data;
813 if (system_setting_set_changed_cb == NULL) {
814 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
815 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
818 return system_setting_set_changed_cb(key, callback, user_data);
822 int system_settings_unset_changed_cb(system_settings_key_e key)
824 LOGE("Enter [%s]", __FUNCTION__);
825 system_setting_h system_setting_item;
826 system_setting_unset_changed_callback_cb system_setting_unset_changed_cb;
828 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
829 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
832 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
833 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
835 int ret = system_settings_get_item(key, &system_setting_item) ;
837 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
838 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
841 system_setting_unset_changed_cb = system_setting_item->unset_changed_cb;
843 /* free the callback function from application side */
844 if (system_setting_item->changed_cb)
845 system_setting_item->changed_cb = NULL;
846 /*----------------------------------------------------- */
848 if (system_setting_unset_changed_cb == NULL) {
849 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
850 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
853 return system_setting_unset_changed_cb(key);
856 //////////////////////////////////////////////////////////////////////////////////////////////////
858 //////////////////////////////////////////////////////////////////////////////////////////////////
860 int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *value)
862 LOGE("Enter [%s]", __FUNCTION__);
863 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
864 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
867 return system_settings_list_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, callback, (void *)value);
870 //////////////////////////////////////////////////////////////////////////////////////////////////
872 //////////////////////////////////////////////////////////////////////////////////////////////////
874 int system_settings_add_value_string(system_settings_key_e key, const char* value)
876 LOGE("Enter [%s]", __FUNCTION__);
877 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
878 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
881 return system_settings_add_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
884 //////////////////////////////////////////////////////////////////////////////////////////////////
886 //////////////////////////////////////////////////////////////////////////////////////////////////
888 int system_settings_delete_value_string(system_settings_key_e key, const char* value)
890 LOGE("Enter [%s]", __FUNCTION__);
891 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
892 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
895 return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);