X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fsystem_settings.c;h=b9175421913d566aad5e67de9f96b34ea0b288fd;hb=fcde2a1fa180c1a5fbceb5ad679df2277dc4e625;hp=413003245204af2180cc5b4939adb3e321742c45;hpb=83e9eedc6857aba67ebdb020a1158aca03f72779;p=platform%2Fcore%2Fapi%2Fsystem-settings.git diff --git a/src/system_settings.c b/src/system_settings.c index 4130032..b917542 100644 --- a/src/system_settings.c +++ b/src/system_settings.c @@ -47,6 +47,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_incoming_call_ringtone, system_setting_unset_changed_callback_incoming_call_ringtone, NULL, + system_setting_add_incoming_call_ringtone, /* ADD */ + system_setting_del_incoming_call_ringtone, /* DEL */ + system_setting_list_incoming_call_ringtone, /* LIST */ NULL /* user data */ }, @@ -58,6 +61,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_wallpaper_home_screen, system_setting_unset_changed_callback_wallpaper_home_screen, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, @@ -69,6 +75,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_wallpaper_lock_screen, system_setting_unset_changed_callback_wallpaper_lock_screen, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, @@ -80,6 +89,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_font_size, system_setting_unset_changed_callback_font_size, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, @@ -91,6 +103,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_font_type, system_setting_unset_changed_callback_font_type, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, @@ -102,6 +117,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_motion_activation, system_setting_unset_changed_callback_motion_activation, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, @@ -113,6 +131,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_email_alert_ringtone, system_setting_unset_changed_callback_email_alert_ringtone, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -123,6 +144,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_usb_debugging_option, system_setting_unset_changed_callback_usb_debugging_option, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -133,6 +157,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_3g_data_network, system_setting_unset_changed_callback_3g_data_network, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -143,6 +170,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_lockscreen_app, system_setting_unset_changed_callback_lockscreen_app, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -153,6 +183,9 @@ system_setting_s system_setting_table[] = { NULL, NULL, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -163,6 +196,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_locale_country, system_setting_unset_changed_callback_locale_country, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -173,6 +209,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_locale_language, system_setting_unset_changed_callback_locale_language, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -183,6 +222,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_locale_timeformat_24hour, system_setting_unset_changed_callback_locale_timeformat_24hour, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -193,6 +235,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_locale_timezone, system_setting_unset_changed_callback_locale_timezone, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -203,6 +248,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_time_changed, system_setting_unset_changed_callback_time_changed, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -213,6 +261,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_sound_lock, system_setting_unset_changed_callback_sound_lock, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -223,6 +274,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_sound_silent_mode, system_setting_unset_changed_callback_sound_silent_mode, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -233,6 +287,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_sound_touch, system_setting_unset_changed_callback_sound_touch, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -243,6 +300,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_auto_rotation_mode, system_setting_unset_changed_callback_auto_rotation_mode, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -253,6 +313,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_screen_backlight_time, system_setting_unset_changed_callback_screen_backlight_time, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -263,6 +326,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_sound_notification, system_setting_unset_changed_callback_sound_notification, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -273,6 +339,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_notification_repetition_period, system_setting_unset_changed_callback_notification_repetition_period, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -283,6 +352,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_device_name, system_setting_unset_changed_callback_device_name, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -293,6 +365,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_motion_activation, system_setting_unset_changed_callback_motion_activation, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -303,6 +378,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_network_flight_mode, system_setting_unset_changed_callback_network_flight_mode, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -313,6 +391,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_network_wifi_notification, system_setting_unset_changed_callback_network_wifi_notification, NULL, + NULL, /* ADD */ + NULL, /* DEL */ + NULL, /* LIST */ NULL /* user data */ }, { @@ -323,6 +404,9 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_lock_state, system_setting_unset_changed_callback_lock_state, NULL, + NULL, /* add */ + NULL, /* del */ + NULL, /* list */ NULL /* user data */ }, { @@ -333,8 +417,12 @@ system_setting_s system_setting_table[] = { system_setting_set_changed_callback_ads_id, system_setting_unset_changed_callback_ads_id, NULL, + NULL, /* add */ + NULL, /* del */ + NULL, /* list */ NULL /* user data */ }, + { SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL } @@ -481,6 +569,122 @@ int system_settings_set_value(system_settings_key_e key, system_setting_data_typ } /* LCOV_EXCL_STOP */ + + +int system_settings_add_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value) +{ + LOGE("Enter [%s]", __FUNCTION__); + if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) { + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + + system_setting_h system_setting_item; + system_setting_add_value_cb system_setting_adder; + + int ret = system_settings_get_item(key, &system_setting_item); + + if (0 != ret) { + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + } + + /* type check */ + if (system_setting_item->data_type != data_type) { + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + system_setting_adder = system_setting_item->add_value_cb; + + if (system_setting_adder == NULL) { + LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); + return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + } + + return system_setting_adder(key, system_setting_item->data_type, value); +} + + +int system_settings_del_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value) +{ + LOGE("Enter [%s]", __FUNCTION__); + if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) { + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + + system_setting_h system_setting_item; + system_setting_del_value_cb system_setting_deler; + + int ret = system_settings_get_item(key, &system_setting_item); + + if (0 != ret) { + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + } + + /* type check */ + if (system_setting_item->data_type != data_type) { + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + system_setting_deler = system_setting_item->del_value_cb; + + if (system_setting_deler == NULL) { + LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); + return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + } + + return system_setting_deler(key, system_setting_item->data_type, value); +} + + + + + +//system_setting_list_value_cb list_changed_cb; +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) +{ + LOGE("Enter [%s]", __FUNCTION__); + if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) { + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + + system_setting_h system_setting_item; + system_setting_list_value_cb system_setting_lister; + + int ret = system_settings_get_item(key, &system_setting_item); + + if (0 != ret) { + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + } + + /* type check */ + if (system_setting_item->data_type != data_type) { + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + //system_setting_list_value_cb list_changed_cb; + system_setting_lister = system_setting_item->list_value_cb; + + if (system_setting_lister == NULL) { + LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); + return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + } + + return system_setting_lister(key, system_setting_item->data_type, system_setting_data_iterator, value); +} + + + + + + /* LCOV_EXCL_START */ int system_settings_set_value_int(system_settings_key_e key, int value) { @@ -644,3 +848,46 @@ int system_settings_unset_changed_cb(system_settings_key_e key) return system_setting_unset_changed_cb(key); } +////////////////////////////////////////////////////////////////////////////////////////////////// +// list +////////////////////////////////////////////////////////////////////////////////////////////////// + +int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *value) +{ + LOGE("Enter [%s]", __FUNCTION__); + if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) { + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + return system_settings_list_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, callback, (void *)value); +} + +////////////////////////////////////////////////////////////////////////////////////////////////// +// add +////////////////////////////////////////////////////////////////////////////////////////////////// + +int system_settings_add_value_string(system_settings_key_e key, const char* value) +{ + LOGE("Enter [%s]", __FUNCTION__); + if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) { + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + return system_settings_add_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value); +} + +////////////////////////////////////////////////////////////////////////////////////////////////// +// del +////////////////////////////////////////////////////////////////////////////////////////////////// + +int system_settings_delete_value_string(system_settings_key_e key, const char* value) +{ + LOGE("Enter [%s]", __FUNCTION__); + if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) { + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } + + return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value); +} + +