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 //system_setting_list_value_cb list_changed_cb;
648 int system_settings_list_value(system_settings_key_e key, system_setting_data_type_e data_type, bool (*system_setting_data_iterator)(int, void *, void *), void *value)
650 LOGE("Enter [%s]", __FUNCTION__);
651 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
652 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
656 system_setting_h system_setting_item;
657 system_setting_list_value_cb system_setting_lister;
659 int ret = system_settings_get_item(key, &system_setting_item);
662 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
663 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
667 if (system_setting_item->data_type != data_type) {
668 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
669 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
672 //system_setting_list_value_cb list_changed_cb;
673 system_setting_lister = system_setting_item->list_value_cb;
675 if (system_setting_lister == NULL) {
676 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
677 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
680 return system_setting_lister(key, system_setting_item->data_type, system_setting_data_iterator, value);
688 /* LCOV_EXCL_START */
689 int system_settings_set_value_int(system_settings_key_e key, int value)
691 LOGE("Enter [%s]", __FUNCTION__);
692 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
693 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
697 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void *)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 return system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void **)value);
711 /* LCOV_EXCL_START */
712 int system_settings_set_value_bool(system_settings_key_e key, bool value)
714 LOGE("Enter [%s]", __FUNCTION__);
715 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
716 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
720 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void *)ptr);
724 int system_settings_get_value_bool(system_settings_key_e key, bool *value)
726 LOGE("Enter [%s]", __FUNCTION__);
727 SETTING_TRACE(" SIGNED LONG here ******************* log here *************** ");
728 signed long flag = 0;
732 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
733 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
736 ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void **)&flag);
737 SETTING_TRACE(" inf (flag) value : %d ", flag);
740 SETTING_TRACE(" flag == 0 ");
741 } else if (flag == 1) {
743 SETTING_TRACE(" flag == 1 ");
746 SETTING_TRACE(" exception here!!! ");
752 /* LCOV_EXCL_START */
753 int system_settings_set_value_string(system_settings_key_e key, const char *value)
755 LOGE("Enter [%s]", __FUNCTION__);
756 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
757 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
761 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
762 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
764 return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
768 int system_settings_get_value_string(system_settings_key_e key, char **value)
770 LOGE("Enter [%s]", __FUNCTION__);
771 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
772 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
775 return system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void **)value);
780 int system_settings_set_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
782 LOGE("Enter [%s]", __FUNCTION__);
783 system_setting_h system_setting_item;
784 system_setting_set_changed_callback_cb system_setting_set_changed_cb;
786 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
787 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
790 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
791 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
793 if (system_settings_get_item(key, &system_setting_item)) {
794 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
795 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
798 system_setting_set_changed_cb = system_setting_item->set_changed_cb;
801 /* Store the callback function from application side */
803 system_setting_item->changed_cb = callback;
806 system_setting_item->user_data = user_data;
808 if (system_setting_set_changed_cb == NULL) {
809 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
810 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
813 return system_setting_set_changed_cb(key, callback, user_data);
817 int system_settings_unset_changed_cb(system_settings_key_e key)
819 LOGE("Enter [%s]", __FUNCTION__);
820 system_setting_h system_setting_item;
821 system_setting_unset_changed_callback_cb system_setting_unset_changed_cb;
823 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
824 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
827 if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
828 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
830 int ret = system_settings_get_item(key, &system_setting_item) ;
832 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
833 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
836 system_setting_unset_changed_cb = system_setting_item->unset_changed_cb;
838 /* free the callback function from application side */
839 if (system_setting_item->changed_cb)
840 system_setting_item->changed_cb = NULL;
841 /*----------------------------------------------------- */
843 if (system_setting_unset_changed_cb == NULL) {
844 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
845 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
848 return system_setting_unset_changed_cb(key);
851 //////////////////////////////////////////////////////////////////////////////////////////////////
853 //////////////////////////////////////////////////////////////////////////////////////////////////
855 int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *value)
857 LOGE("Enter [%s]", __FUNCTION__);
858 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
859 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
862 return system_settings_list_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, callback, (void *)value);
865 //////////////////////////////////////////////////////////////////////////////////////////////////
867 //////////////////////////////////////////////////////////////////////////////////////////////////
869 int system_settings_add_value_string(system_settings_key_e key, const char* value)
871 LOGE("Enter [%s]", __FUNCTION__);
872 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
873 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
876 return system_settings_add_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
879 //////////////////////////////////////////////////////////////////////////////////////////////////
881 //////////////////////////////////////////////////////////////////////////////////////////////////
883 int system_settings_delete_value_string(system_settings_key_e key, const char* value)
885 LOGE("Enter [%s]", __FUNCTION__);
886 if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
887 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
890 return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);