Remove #if 0
[platform/core/api/system-settings.git] / src / system_setting_platform.c
old mode 100755 (executable)
new mode 100644 (file)
index 0224922..4fa9f82
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <errno.h>
+#include <time.h>
+#include <dlfcn.h>
+
 #include <string.h>
+#include <libgen.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <regex.h>
 
+#include <aul.h>
 #include <dlog.h>
 #include <vconf.h>
 
 #include <libxml/xmlmemory.h>
 #include <libxml/parser.h>
 
-#include <Ecore_X.h>
-#include <Elementary.h>
+#include <fontconfig/fontconfig.h>
+
+#include <pkgmgr-info.h>
+#include <package_manager.h>
+#include <app_manager.h>
 
 #include <system_settings.h>
 #include <system_settings_private.h>
+#include <system_settings_ringtones.h>
+#include <system_settings_json.h>
 
+#include <system-setting-config.h>
 
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
+#include <tzplatform_config.h>
+#include <alarm.h>
+
+#include <system_info.h>
 
-#define SMALL_FONT_DPI                      (-80)
-#define MIDDLE_FONT_DPI                     (-100)
-#define LARGE_FONT_DPI                      (-150)
-#define HUGE_FONT_DPI                       (-190)
-#define GIANT_FONT_DPI                      (-250)
+#define SETTING_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf"
+#define SETTING_DEFAULT_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf"
 
-#define SETTING_FONT_CONF_FILE "/opt/etc/fonts/conf.avail/99-slp.conf"
-#define SETTING_STR_SLP_LEN  256
+#define SETTING_TIME_ZONEINFO_PATH             "/usr/share/zoneinfo/"
+#define SETTING_TIME_SHARE_LOCAL_PATH  "/usr/share/locale"
+#define SETTING_TZONE_SYMLINK_PATH             "/opt/etc/localtime"
+
+
+#define __FREE(del, arg) do { \
+               if (arg) { \
+                       del((void *)(arg)); /*cast any argument to (void*) to avoid build warring*/\
+                       arg = NULL; \
+               } \
+       } while (0);
+#define FREE(arg) __FREE(free, arg)
+
+#ifdef SETTING_ARCH_64
+#define SETTING_UTILS_SO_FILE_PATH "/usr/lib64/libsystem-settings-util.so.0.1.0"
+#else
+#define SETTING_UTILS_SO_FILE_PATH "/usr/lib/libsystem-settings-util.so.0.1.0"
+#endif
 
-static char* _get_cur_font();
-static void font_size_set();
-static int __font_size_get();
+int _is_file_accessible(const char *path);
 
-static void font_config_set(char *font_name);
-static void font_config_set_notification();
+static bool dl_is_supported_image_type_load(char *path);
+static bool dl_font_config_set(char *font_name);
+static char *dl_get_default_font_info();
+static int dl_is_available_font(char *str);
+static void dl_font_size_set();
+static void dl_font_config_set_notification();
 
-int system_setting_get_incoming_call_ringtone(system_settings_key_e key, system_setting_data_type_e data_type, void** value)
+/**
+ * VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR has a path of the ringtone file which user choose
+ * @return the ringtone file path specified by user in normal case
+ *                if it's not accessable, return the default ringtone path
+ */
+int system_setting_get_incoming_call_ringtone(system_settings_key_e key, void **value)
 {
-       char* vconf_value;
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
        if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       *value = vconf_value;
+
+       /* check to see if it's accessable -> OK */
+       /* no --> default ringtone path VCONFKEY_SETAPPL_CALL_RINGTONE_DEFAULT_PATH_STR */
+       int is_load = _is_file_accessible(vconf_value);
+       if (is_load == 0) {
+               *value = vconf_value;
+       } else { /* not zero on errro */
+               *value = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_DEFAULT_PATH_STR);
+               free(vconf_value);
+       }
+
+       /**value = vconf_value; */
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+
+int system_setting_get_email_alert_ringtone(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       /* check to see if it's accessable -> OK */
+       /* no --> default ringtone path VCONFKEY_SETAPPL_NOTI_RINGTONE_DEFAULT_PATH_STR */
+       int is_load = _is_file_accessible(vconf_value);
+       if (is_load == 0) {
+               *value = vconf_value;
+       } else { /* not zero on errro */
+               *value = vconf_get_str(VCONFKEY_SETAPPL_NOTI_RINGTONE_DEFAULT_PATH_STR);
+               free(vconf_value);
+       }
+
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
 
-int system_setting_get_wallpaper_home_screen(system_settings_key_e key, system_setting_data_type_e data_type, void** value)
+int system_setting_get_wallpaper_home_screen(system_settings_key_e key, void **value)
 {
-       char* vconf_value;
+       SETTING_TRACE_BEGIN;
+       char *vconf_value;
        if (system_setting_vconf_get_value_string(VCONFKEY_BGSET, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
@@ -78,9 +147,10 @@ int system_setting_get_wallpaper_home_screen(system_settings_key_e key, system_s
 }
 
 
-int system_setting_get_wallpaper_lock_screen(system_settings_key_e key, system_setting_data_type_e data_type, void** value)
+int system_setting_get_wallpaper_lock_screen(system_settings_key_e key, void **value)
 {
-       char* vconf_value;
+       SETTING_TRACE_BEGIN;
+       char *vconf_value;
 
        if (system_setting_vconf_get_value_string(VCONFKEY_IDLE_LOCK_BGSET, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
@@ -91,425 +161,2524 @@ int system_setting_get_wallpaper_lock_screen(system_settings_key_e key, system_s
 }
 
 
-// [int] vconf GET
-int system_setting_get_font_size(system_settings_key_e key, system_setting_data_type_e data_type, void** value)
+/* [int] vconf GET */
+int system_setting_get_font_size(system_settings_key_e key, void **value)
 {
-       printf("system_setting_get_font_size \n");
+       SETTING_TRACE_BEGIN;
        int vconf_value;
+       int ** val = (int**)value;
 
        if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       *value = (void*)vconf_value;
+       **val = vconf_value;
 
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
 
-// [int] vconf GET
-int system_setting_get_font_type(system_settings_key_e key, system_setting_data_type_e data_type, void** value)
+int system_setting_get_default_font_type(system_settings_key_e key, void **value)
 {
-       printf("system_setting_get_font_type\n");
-       //int vconf_value;
+       SETTING_TRACE_BEGIN;
+       char *font_name = dl_get_default_font_info();
+       if (font_name) {
+               *value = (void *)font_name;
+               return SYSTEM_SETTINGS_ERROR_NONE;
+       } else {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+}
+
+/* [int] vconf GET */
+int system_setting_get_font_type(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       char *font_name = NULL;
 
-       char* font_name = _get_cur_font();
-       #if 0
-       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_FONT_TYPE_INT, &vconf_value)) {
+       if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME, &font_name)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       //*value = (void*)vconf_value;
-       #endif
-       *value = (void*)font_name;
 
+       *value = font_name;
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
 
-int system_setting_get_motion_activation(system_settings_key_e key, system_setting_data_type_e data_type, void** value)
+int system_setting_get_motion_activation(system_settings_key_e key, void **value)
 {
+       SETTING_TRACE_BEGIN;
        bool vconf_value;
 
        if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_MOTION_ACTIVATION, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       *value = (void*)vconf_value;
+       *value = (void *)vconf_value;
 
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-int system_setting_set_incoming_call_ringtone(system_settings_key_e key, system_setting_data_type_e data_type, void* value)
+int system_setting_get_usb_debugging_option(system_settings_key_e key, void **value)
 {
-       printf(" mock --> real system_setting_set_incoming_call_ringtone \n");
-       char* vconf_value;
-       vconf_value = (char*)value;
-       if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, vconf_value)) {
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
+       *value = (void *)vconf_value;
 
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
-int system_setting_set_wallpaper_home_screen(system_settings_key_e key, system_setting_data_type_e data_type, void* value)
+int system_setting_get_3g_data_network(system_settings_key_e key, void **value)
 {
-       printf(" mock --> real system_setting_set_wallpaper_home_screen \n");
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
 
-       char* vconf_value;
-       vconf_value = (char*)value;
-       if (system_setting_vconf_set_value_string(VCONFKEY_BGSET, vconf_value)) {
+       if (system_setting_vconf_get_value_bool(VCONFKEY_3G_ENABLE, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
+       *value = (void *)vconf_value;
 
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
+/*////////////////////////////////////////////////////////////////////////////////////////////////// */
 
-int system_setting_set_wallpaper_lock_screen(system_settings_key_e key, system_setting_data_type_e data_type, void* value)
+
+/**
+ * get current lock scren app package name (string)
+ *
+ * @return SYSTEM_SETTINGS_ERROR_LOCKSCREEN_APP_PASSWORD_MODE raise exception if current lock type is 'password'
+ */
+int system_setting_get_lockscreen_app(system_settings_key_e key, void **value)
 {
-       printf(" mock --> real system_setting_set_wallpaper_lock_screen \n");
+       SETTING_TRACE_BEGIN;
+       char *pkg_name = NULL;
+       int locktype = -1;
+       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &locktype)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
 
-       char* vconf_value;
-       vconf_value = (char*)value;
-       if (system_setting_vconf_set_value_string(VCONFKEY_IDLE_LOCK_BGSET, vconf_value)) {
+       if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, &pkg_name)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
 
+       if (pkg_name && strcmp(pkg_name, "com.samsung.lockscreen") == 0 && locktype == SETTING_SCREEN_LOCK_TYPE_PASSWORD) {
+               free(pkg_name);
+               return SYSTEM_SETTINGS_ERROR_LOCKSCREEN_APP_PASSWORD_MODE;
+       }
+
+       *value = pkg_name;
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
-int system_setting_set_font_size(system_settings_key_e key, system_setting_data_type_e data_type, void* value)
+
+/*////////////////////////////////////////////////////////////////////////////////////////////////// */
+
+int _is_file_accessible(const char *path)
 {
-       printf(" real system_setting_set_font_size \n");
-       int* vconf_value;
-       vconf_value = (int*)value;
+       SETTING_TRACE_BEGIN;
+       int ret = access(path , R_OK);
+       if (ret == 0) {
+               SETTING_TRACE("found the file  %s", path);
+               return 0;
+       } else {
+               /* error code : 13 */
+               SETTING_TRACE("found the file  %s --- error code : %d ", path, errno);
+               return -errno;
+       }
+}
 
-       if (*vconf_value < 0 || *vconf_value > SYSTEM_SETTINGS_FONT_SIZE_GIANT) {
-               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+
+
+/*////////////////////////////////////////////////////////////////////////////////////////////////// */
+// @todo move to CMake
+#define DEF_RINGTONE_FILE_PATH SETTING_DEF_RES"/Ringtones"
+
+#define USR_RINGTONE_FILE_PATH "/home/owner/content/Sounds/Ringtones"
+#define JSONFILE "/opt/home/owner/apps_rw/org.tizen.setting/data/.user-ringtones.json"
+
+int system_setting_add_incoming_call_ringtone(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char* pathval = (char*)value;
+       char* dnameval = NULL;
+       char* baseval = NULL;
+
+#ifdef USE_JSONFILE
+       // NOT IN USE
+       JsonParser *parser = ss_json_ringtone_open_file(JSONFILE);
+#else
+       JsonParser *parser = ss_json_ringtone_load_from_data();
+#endif
+
+       JsonNode *root = json_parser_get_root(parser);
+
+       // dirname
+       // basename
+       int ret = SYSTEM_SETTINGS_ERROR_NONE;
+       if (false == ss_json_ringtone_contain(root, pathval)) {
+               // @todo : MAKE SURE THE ACTUAL FILE IS THERE ON PATHVAL(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
+               ss_json_ringtone_add(root, JSONFILE, pathval, pathval);
+               SETTING_TRACE("pathval is : %s -- OK", pathval);
+       } else {
+               SETTING_TRACE("pathval is duplicated : %s", pathval);
+               ret = SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
        }
 
-       if (system_setting_vconf_set_value_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, *vconf_value)) {
-               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       dnameval = strdup(pathval);
+       baseval = strdup(pathval);
+       if (dnameval && baseval) {
+               SETTING_TRACE("---> dirname is : %s ", dirname(dnameval));
+               SETTING_TRACE("---> basename is : %s ", basename(baseval));
+       }
+       FREE(dnameval);
+       FREE(baseval);
+
+       if (parser) {
+               g_object_unref(parser);
+               parser = NULL;
        }
-       font_size_set();
 
-       printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>. system_setting_set_font_size called \n");
+       return ret;
+}
+
+int system_setting_del_incoming_call_ringtone(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char* pathval = (char*)value;
+#ifdef USE_JSONFILE
+       // NOT IN USE
+       JsonParser* parser = ss_json_ringtone_open_file(JSONFILE);
+#else
+       JsonParser* parser = ss_json_ringtone_load_from_data();
+#endif
+       JsonNode *root = json_parser_get_root(parser);
+
+       ss_json_ringtone_remove(root, JSONFILE, pathval);
+       //void ss_json_ringtone_remove(JsonNode *root,  char* filename, char* path_to_del)
+
+       ss_json_ringtone_print(root);
+       if (parser) {
+               g_object_unref(parser);
+               parser = NULL;
+       }
 
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
-int system_setting_set_font_type(system_settings_key_e key, system_setting_data_type_e data_type, void* value)
+
+/*  LCOV_EXCL_START */
+gint _compare_cb(gconstpointer d1, gconstpointer d2)
 {
-       printf(" real system_setting_set_font_type \n");
-       char* font_name = NULL;
-       font_name = (char*)value;
+       fileNodeInfo *pNode1 = (fileNodeInfo *)d1;
+       fileNodeInfo *pNode2 = (fileNodeInfo *)d2;
 
-       printf(">>>>>>>>>>>>> font name = %s \n", font_name);
-       font_config_set(font_name);
-       font_config_set_notification();
+       return strcmp(pNode1->media_name, pNode2->media_name);
+}
+/*  LCOV_EXCL_STOP */
 
-       char* vconf_value;
-       vconf_value = (char*)value;
-       if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME, vconf_value)) {
-               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+/*
+ * get the RINGTONE list
+ */
+static void _get_default_ringtones(system_settings_key_e key, system_settings_iter_cb callback, void *data)
+{
+       SETTING_TRACE_BEGIN;
+       /*Get file list */
+       GList *filelist = NULL;
+       GList *iter;
+       fileNodeInfo *node = NULL;
+       int idx = 0;
+
+       //-----------------------------------------------------------------------------------------------------------------
+       // 1. get the default ringtone list
+       //-----------------------------------------------------------------------------------------------------------------
+       int ret = get_filelist_from_dir_path(DEF_RINGTONE_FILE_PATH, &filelist);
+       if (ret != 0) {
+               SETTING_TRACE("Failed to get filelist, ret = %d %s", ret, DEF_RINGTONE_FILE_PATH);
+       }
+
+       filelist = g_list_sort(filelist, _compare_cb);
+
+       for (iter = filelist; iter != NULL; iter = g_list_next(iter)) {
+               node = (fileNodeInfo *)iter->data;
+               SETTING_TRACE("file path = (%d) : name:%s path:%s [%s]", ret, node->name, node->path, node->media_name);
+               // @todo assert NULL check
+               if (callback) {
+                       char temp[1024];
+                       snprintf(temp, 1024, "%s/%s", node->path, node->name);
+                       char* path = strdup(temp);
+                       bool ret = callback(idx, (void *)(path), data);
+                       if (path) {
+                               free(path);
+                               path = NULL;
+                       }
+                       if (ret == false) {
+                               SETTING_TRACE("quit the iteration by return value == false : %d", ret);
+                               break;
+                       }
+
+               } else {
+                       SETTING_TRACE("--> system_setting_data_iterator is NULL");
+               }
+       }
+
+       for (iter = filelist; iter != NULL; iter = g_list_next(iter)) {
+               node = (fileNodeInfo *)iter->data;
+               FREE(node->path);
+               FREE(node->name);
+               FREE(node->media_name);
+               FREE(node);
+       }
+       g_list_free(filelist);
+       filelist = NULL;
+
+}
+
+static void _get_user_ringtones(system_settings_key_e key, system_settings_iter_cb callback, void *data)
+{
+       SETTING_TRACE_BEGIN;
+
+#ifdef USE_JSONFILE
+       // NOT IN USE
+       JsonParser* parser = ss_json_ringtone_open_file(JSONFILE);
+#else
+       JsonParser* parser = ss_json_ringtone_load_from_data();
+#endif
+
+       JsonNode *root = json_parser_get_root(parser);
+       int size = json_array_get_length(json_node_get_array(root));
+
+       int i = 0;
+       for (i = 0; i < size ; i++) {
+               JsonObject *ringtone = json_array_get_object_element(json_node_get_array(root), i);
+               char *nameval = (char *)json_object_get_string_member(ringtone, "name");
+               char *pathval = (char *)json_object_get_string_member(ringtone, "path");
+               SETTING_TRACE("(%s) --- (%s) \n", nameval, pathval);
+               if (callback && pathval) {
+                       char* path = strdup(pathval);
+                       bool ret = callback(i, (void *)(path), data);
+                       if (ret == false) {
+                               SETTING_TRACE("quit the iteration by return value == false : %d", ret);
+                               break;
+                       }
+                       FREE(path);
+               } else {
+                       SETTING_TRACE("--> callback is NULL");
+               }
        }
+
+       g_object_unref(parser);
+}
+
+int system_setting_list_incoming_call_ringtone(system_settings_key_e key, system_settings_iter_cb callback, void *data)
+{
+       SETTING_TRACE_BEGIN;
+
+       _get_default_ringtones(key, callback, data);
+       //-----------------------------------------------------------------------------------------------------------------
+       // 2. get the USER ringtone list
+       //-----------------------------------------------------------------------------------------------------------------
+       _get_user_ringtones(key, callback, data);
+
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
-int system_setting_set_motion_activation(system_settings_key_e key, system_setting_data_type_e data_type, void* value)
+
+/*  LCOV_EXCL_START */
+int system_setting_set_incoming_call_ringtone(system_settings_key_e key, void *value)
 {
-       printf(" mock --> real system_setting_set_motion_activation \n");
+       SETTING_TRACE_BEGIN;
+       char *vconf_value;
+       vconf_value = (char *)value;
+
+       int ret = _is_file_accessible(vconf_value);
+       if (ret == 0) {
+               if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, vconf_value)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+       } else {
+               /* @todo add a common ret_handler */
+               return ret;
+       }
 
-       bool* vconf_value;
-       vconf_value = (bool*)value;
-       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_MOTION_ACTIVATION, *vconf_value)) {
-               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+
+/*  LCOV_EXCL_START */
+int system_setting_set_email_alert_ringtone(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value;
+       vconf_value = (char *)value;
+
+       int ret = _is_file_accessible(vconf_value);
+       if (ret == 0) {
+               if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, vconf_value)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+       } else {
+               /*return SYSTEM_SETTINGS_ERROR_IO_ERROR;*/
+               /* @todo add a common ret_handler */
+               return ret;
        }
+
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+static bool dl_is_supported_image_type_load(char *path)
+{
+       void *handle = NULL;
+       char *error;
+       bool ret = false;
+       bool (*image_type_check)(char *path);
+
+       handle = dlopen(SETTING_UTILS_SO_FILE_PATH,  RTLD_LAZY);
+       if (!handle) {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return false;
+       }
 
-/////////////////////////////////////////////////////////////////////////////////////////////////
-//
+       image_type_check = dlsym(handle, "__is_supported_image_type_load");
+       if ((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find __is_supported_image_type_load function at libsystem-settings-util.so.0.1.0");
+               if (handle)
+                       dlclose(handle);
+               return false;
+       }
+       ret = image_type_check(path);
+       if (handle)
+               dlclose(handle);
+       return ret;
+}
+/*  LCOV_EXCL_STOP */
 
-int system_setting_set_changed_callback_incoming_call_ringtone(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+/*  LCOV_EXCL_START */
+static int dl_is_available_font(char *str)
 {
-       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, 0);
+       void *handle = NULL;
+       char *error;
+       int ret = false;
+       int (*check_available_font)(char *font_name);
+
+       handle = dlopen(SETTING_UTILS_SO_FILE_PATH,  RTLD_LAZY);
+       if (!handle) {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return false;
+       }
+
+       check_available_font = dlsym(handle, "__is_available_font");
+       if ((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find __is_available_font function at libsystem-settings-util.so.0.1.0");
+               if (handle)
+                       dlclose(handle);
+               return false;
+       }
+       ret = check_available_font(str);
+       if (handle)
+               dlclose(handle);
+       return ret;
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_unset_changed_callback_incoming_call_ringtone(system_settings_key_e key)
+/*  LCOV_EXCL_START */
+static void dl_font_size_set()
 {
-       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, 0);
+       void *handle = NULL;
+       char *error;
+       void (*set_font_size)();
+
+       handle = dlopen(SETTING_UTILS_SO_FILE_PATH,  RTLD_LAZY);
+       if (!handle) {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return;
+       }
+
+       set_font_size = dlsym(handle, "__font_size_set");
+       if ((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find __font_size_set function at libsystem-settings-util.so.0.1.0");
+               if (handle)
+                       dlclose(handle);
+               return;
+       }
+       set_font_size();
+       if (handle)
+               dlclose(handle);
+       return;
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_set_changed_callback_wallpaper_home_screen(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+/*  LCOV_EXCL_START */
+static void dl_font_config_set_notification()
 {
-       return system_setting_vconf_set_changed_cb(VCONFKEY_BGSET, SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, 0);
+       void *handle = NULL;
+       char *error;
+       void (*set_font_nodification)();
+
+       handle = dlopen(SETTING_UTILS_SO_FILE_PATH,  RTLD_LAZY);
+       if (!handle) {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return;
+       }
+
+       set_font_nodification = dlsym(handle, "font_config_set_notification");
+       if ((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find font_config_set_notification function at libsystem-settings-util.so.0.1.0");
+               if (handle)
+                       dlclose(handle);
+               return;
+       }
+       set_font_nodification();
+       if (handle)
+               dlclose(handle);
+       return;
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_unset_changed_callback_wallpaper_home_screen(system_settings_key_e key)
+/*  LCOV_EXCL_START */
+static bool dl_font_config_set(char *font_name)
 {
-       return system_setting_vconf_unset_changed_cb(VCONFKEY_BGSET, 0);
+       void *handle = NULL;
+       char *error;
+       bool ret = false;
+       bool (*check_font_type)(char *font_name);
+
+       handle = dlopen(SETTING_UTILS_SO_FILE_PATH,  RTLD_LAZY);
+       if (!handle) {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return false;
+       }
+
+       check_font_type = dlsym(handle, "font_config_set");
+       if ((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find font_config_set function at libsystem-settings-util.so.0.1.0");
+               if (handle)
+                       dlclose(handle);
+               return false;
+       }
+       ret = check_font_type(font_name);
+       if (handle)
+               dlclose(handle);
+       return ret;
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_set_changed_callback_wallpaper_lock_screen(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+/*  LCOV_EXCL_START */
+static char *dl_get_default_font_info()
+{
+       void *handle = NULL;
+       char *error;
+       char *ret = NULL;
+       char *(*get_font_info)();
+
+       handle = dlopen(SETTING_UTILS_SO_FILE_PATH,  RTLD_LAZY);
+       if (!handle) {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return false;
+       }
+
+       get_font_info = dlsym(handle, "_get_default_font");
+
+       if ((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find _get_default_font function at libsystem-settings-util.so.0.1.0");
+               if (handle)
+                       dlclose(handle);
+               return false;
+       }
+       ret = get_font_info();
+       if (handle)
+               dlclose(handle);
+       return ret;
+}
+/*  LCOV_EXCL_STOP */
+
+#ifdef TIZEN_WEARABLE
+/*  LCOV_EXCL_START */
+static int system_setting_get_extended_wallpaper_num(const char *file_path, unsigned int *num)
 {
-       return system_setting_vconf_set_changed_cb(VCONFKEY_IDLE_LOCK_BGSET,SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, 0);
+       SETTING_TRACE_BEGIN;
+       char buffer[256];
+       const char *find_str = "extended_wallpaper_";
+       char *ch = NULL;
+
+       if (!(ch = strstr(file_path, find_str))) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       strncpy(buffer, file_path, ch - file_path);
+       buffer[ch - file_path] = 0;
+       sprintf(buffer + (ch - file_path), "%s%s", "", ch + strlen(find_str));
+
+       if (!isdigit(buffer[0])) {
+               SETTING_TRACE("%s is not number", buffer);
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       *num = atoi(buffer);
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_unset_changed_callback_wallpaper_lock_screen(system_settings_key_e key)
+/*  LCOV_EXCL_START */
+static int system_setting_copy_extended_wallpaper(const char *dest_file_path, const char *source_file_path)
 {
-       return system_setting_vconf_unset_changed_cb(VCONFKEY_IDLE_LOCK_BGSET, 0);
+       SETTING_TRACE_BEGIN;
+       if (!source_file_path || !dest_file_path) {
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+       }
+
+       char buf[1024];
+
+       int fd;
+       fd = open(source_file_path, O_RDONLY);
+       if (fd < 0) {
+               SETTING_TRACE("file open failed: %s", source_file_path);
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       int fd2;
+       fd2 = open(dest_file_path, O_WRONLY | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);
+       if (fd2 < 0) {
+               SETTING_TRACE("file creation failed: %s", dest_file_path);
+               close(fd);
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       while (read(fd, buf, sizeof(buf) - 1) > 0) {
+               write(fd2, buf, sizeof(buf) - 1);
+       }
+
+       close(fd2);
+       close(fd);
+
+       if (chmod(dest_file_path, S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
+               SETTING_TRACE("chmod failed: %s", dest_file_path);
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_set_changed_callback_font_size(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+/*  LCOV_EXCL_START */
+static int system_setting_remove_oldest_extended_wallpaper()
+{
+       SETTING_TRACE_BEGIN;
+       DIR *dp;
+       struct dirent *dirp;
+       char *min_image_name = NULL;
+       unsigned int min_image_num = 0;
+       unsigned int temp_image_num = 0;
+       int image_count = 0;
+
+       if ((dp = opendir(_TZ_SYS_DATA"/setting/wallpaper")) == NULL) {
+               SETTING_TRACE("opendir error");
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       while ((dirp = readdir(dp))) {
+               if (!strcmp(dirp->d_name, ".") || !strcmp(dirp->d_name, ".."))
+                       continue;
+
+               if (system_setting_get_extended_wallpaper_num(dirp->d_name, &temp_image_num)
+                   != SYSTEM_SETTINGS_ERROR_NONE) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+
+               if ((image_count == 0) || (min_image_num > temp_image_num)) {
+                       min_image_num = temp_image_num;
+                       min_image_name = dirp->d_name;
+               }
+
+               image_count++;
+       }
+
+       char buf[512];
+       if (min_image_name) {
+               snprintf(buf, sizeof(buf) - 1, _TZ_SYS_DATA"/setting/wallpaper/%s", min_image_name);
+               if (remove(buf) < 0) {  /* remove oldest image */
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+static int system_setting_check_extended_wallpaper(const char *file_path)
 {
-       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE,SYSTEM_SETTINGS_KEY_FONT_SIZE, 1);
+       char buffer[512];
+       SETTING_TRACE_BEGIN;
+       if (!file_path || !strlen(file_path))
+               return 0;
+       snprintf(buffer, 512, "%s/.bgwallpaper", tzplatform_getenv(TZ_USER_CONTENT));
+       return (strstr(file_path, buffer) != NULL);
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_unset_changed_callback_font_size(system_settings_key_e key)
+#define WALLPAPER_MAX_COUNT            10
+#endif
+/*  LCOV_EXCL_START */
+int system_setting_set_wallpaper_home_screen(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value;
+       vconf_value = (char *)value;
+
+       bool isok  = dl_is_supported_image_type_load(vconf_value);
+       if (!isok) {
+               /* not supported */
+               SETTING_TRACE("path : %s is not supported file format", vconf_value);
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+       } else {
+               SETTING_TRACE("path : %s is SUPPORT file format", vconf_value);
+       }
+
+       /* error handling here */
+       if (_is_file_accessible(vconf_value) != 0)
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+#ifdef TIZEN_MOBILE
+       if (system_setting_vconf_set_value_string(VCONFKEY_BGSET, vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+#endif
+
+#ifdef TIZEN_WEARABLE
+       if (system_setting_check_extended_wallpaper(vconf_value)) {     /* New extended wallpaper */
+               DIR *dp = NULL;
+               struct dirent *dirp;
+               unsigned int max_image_num = 0;
+               unsigned int temp_image_num = 0;
+               int image_count = 0;
+
+               if ((dp = opendir(_TZ_SYS_DATA"/setting/wallpaper")) == NULL) {
+                       SETTING_TRACE("Setting - dir open error!");
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+
+               /* Check a max number of wallpapers */
+               while ((dirp = readdir(dp))) {
+                       if (!strcmp(dirp->d_name, ".") || !strcmp(dirp->d_name, ".."))
+                               continue;
+
+                       if (system_setting_get_extended_wallpaper_num(dirp->d_name, &temp_image_num)
+                           != SYSTEM_SETTINGS_ERROR_NONE) {
+                               if (dp)
+                                       closedir(dp);
+                               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+                       }
+
+                       if ((image_count == 0) || (max_image_num < temp_image_num)) {
+                               max_image_num = temp_image_num;
+                       }
+
+                       image_count++;
+               }
+               if (dp)
+                       closedir(dp);
+
+               /* Numbering rule: Gear is odd number */
+               max_image_num = (max_image_num % 2 == 0) ? max_image_num + 1
+                                                       : max_image_num + 2;
+
+               char file_name_buffer[512];
+               snprintf(file_name_buffer, sizeof(file_name_buffer) - 1,
+                                       _TZ_SYS_DATA"/setting/wallpaper/extended_wallpaper_%d.jpg", max_image_num);
+
+               /* Copy image to _TZ_SYS_DATA/setting/wallpaper/ */
+               if (system_setting_copy_extended_wallpaper(file_name_buffer, vconf_value)
+                   != SYSTEM_SETTINGS_ERROR_NONE) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+
+               /* remove oldest wallpaper */
+               if (image_count >= WALLPAPER_MAX_COUNT) {
+                       if (system_setting_remove_oldest_extended_wallpaper()
+                           != SYSTEM_SETTINGS_ERROR_NONE) {
+                               remove(file_name_buffer);
+                               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+                       }
+               }
+
+               if (system_setting_vconf_set_value_string(VCONFKEY_BGSET, file_name_buffer)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+
+               if (system_setting_vconf_set_value_int(VCONFKEY_SETAPPL_WALLPAPER_CHANGED_NOTI_INT,
+                                                                                                       VCONFKEY_WALLPAPER_CHANGED_NOTI_GEAR)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+       } else {
+               if (system_setting_vconf_set_value_string(VCONFKEY_BGSET, vconf_value)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+       }
+#endif
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_wallpaper_lock_screen(system_settings_key_e key, void *value)
 {
-       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, 1);
+       SETTING_TRACE_BEGIN;
+       char *vconf_value;
+       vconf_value = (char *)value;
+
+       bool isok  = dl_is_supported_image_type_load(vconf_value);
+       if (!isok) {
+               /* not supported */
+               SETTING_TRACE("path : %s is not supported file format", vconf_value);
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+       } else {
+               SETTING_TRACE("path : %s is SUPPORT file format", vconf_value);
+       }
+
+       /* error handling here */
+       if (_is_file_accessible(vconf_value) != 0)
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+
+       if (system_setting_vconf_set_value_string(VCONFKEY_IDLE_LOCK_BGSET, vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
 }
+/*  LCOV_EXCL_STOP */
 
+/*  LCOV_EXCL_START */
+int system_setting_set_font_size(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       int *vconf_value;
+       vconf_value = *(int **)value;
+
+       if (*vconf_value < 0 || *vconf_value > SYSTEM_SETTINGS_FONT_SIZE_GIANT) {
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (system_setting_vconf_set_value_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       dl_font_size_set();
+       SETTING_TRACE_END;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
 /**
- * @todo need to add custom event notification method
+ * [internal API]
  */
-int system_setting_set_changed_callback_font_type(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+/*  LCOV_EXCL_START */
+void *font_conf_doc_parse(char *doc_name, char *font_name)
 {
-       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME,SYSTEM_SETTINGS_KEY_FONT_TYPE, 2);
+       SETTING_TRACE_BEGIN;
+       xmlDocPtr doc = NULL;
+       xmlNodePtr cur = NULL;
+       xmlNodePtr cur2 = NULL;
+       xmlNodePtr cur3 = NULL;
+       xmlChar *key = NULL;
+
+       doc = xmlParseFile(doc_name);
+
+       cur = xmlDocGetRootElement(doc);
+
+       if (cur == NULL) {
+               xmlFreeDoc(doc);
+               doc = NULL;
+               return NULL;
+       }
+
+       if (xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
+               xmlFreeDoc(doc);
+               doc = NULL;
+               return NULL;
+       }
+
+       cur = cur->xmlChildrenNode;
+
+       bool is_changed = false;
+       while (cur != NULL) {
+               if ((!xmlStrcmp(cur->name, (const xmlChar *)"match"))) {
+                       cur2 = cur->xmlChildrenNode;
+                       while (cur2 != NULL) {
+                               if ((!xmlStrcmp(cur2->name, (const xmlChar *)"edit"))) {
+                                       xmlChar *name = xmlGetProp(cur2, (const xmlChar *)"name");
+                                       /* if name is not 'family', break */
+                                       if (xmlStrcmp(name, (const xmlChar *)"family")) {
+                                               xmlFree(name);
+                                               name = NULL;
+                                               break;
+                                       }
+                                       xmlFree(name);
+                                       name = NULL;
+
+                                       cur3 = cur2->xmlChildrenNode;
+                                       while (cur3 != NULL) {
+                                               if ((!xmlStrcmp(cur3->name, (const xmlChar *)"string"))) {
+                                                       xmlNodeSetContent(cur3->xmlChildrenNode, (const xmlChar *)font_name);
+                                                       key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
+                                                       xmlFree(key);
+                                                       key = NULL;
+                                                       is_changed = true;
+                                               }
+                                               cur3 = cur3->next;
+                                       }
+                               }
+                               cur2 = cur2->next;
+                       }
+               } else if ((!xmlStrcmp(cur->name, (const xmlChar *)"alias"))) {
+                       cur2 = cur->xmlChildrenNode;
+                       while (cur2 != NULL) {
+                               if ((!xmlStrcmp(cur2->name, (const xmlChar *)"family"))) {
+                                       xmlNodeSetContent(cur2->xmlChildrenNode, (const xmlChar *)font_name);
+                                       key = xmlNodeListGetString(doc, cur2->xmlChildrenNode, 1);
+                                       xmlFree(key);
+                                       key = NULL;
+                                       is_changed = true;
+                               } else if ((!xmlStrcmp(cur2->name, (const xmlChar *)"prefer"))) {
+                                       cur3 = cur2->xmlChildrenNode;
+                                       while (cur3 != NULL) {
+                                               if ((!xmlStrcmp(cur3->name, (const xmlChar *)"family"))) {
+                                                       xmlNodeSetContent(cur3->xmlChildrenNode, (const xmlChar *)font_name);
+                                                       key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
+                                                       xmlFree(key);
+                                                       key = NULL;
+                                                       is_changed = true;
+                                                       cur3 = cur3->next;
+                                                       return doc;
+                                               }
+                                               cur3 = cur3->next;
+                                       }
+                               }
+                               cur2 = cur2->next;
+                       }
+               }
+               cur = cur->next;
+       }
+
+       if (is_changed) {
+               return doc;
+       } else {
+               xmlFreeDoc(doc);
+               doc = NULL;
+               return NULL;
+       }
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_unset_changed_callback_font_type(system_settings_key_e key)
+/*  LCOV_EXCL_START */
+int system_setting_set_font_type(system_settings_key_e key, void *value)
 {
-       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME,2);
+       SETTING_TRACE_BEGIN;
+       char *font_name = NULL;
+       font_name = (char *)value;
+
+       /* get current font list */
+       int is_found = dl_is_available_font(font_name);
+
+       if (is_found == 1) {
+               SETTING_TRACE("found font : %s ", font_name);
+       } else {
+               SETTING_TRACE(" NOT found font : %s ", font_name);
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       bool bsave = dl_font_config_set(font_name);
+
+       if (!bsave) {
+               SETTING_TRACE(" font type save error by font_config_set() ");
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       } else {
+               SETTING_TRACE(" save OK - font_config_set() ");
+       }
+
+       xmlDocPtr doc = (xmlDocPtr)font_conf_doc_parse(SETTING_FONT_CONF_FILE, font_name);
+       if (doc != NULL) {
+               xmlSaveFormatFile(SETTING_FONT_CONF_FILE, doc, 0);
+               xmlFreeDoc(doc);
+               doc = NULL;
+       }
+
+       dl_font_config_set_notification();
+
+       char *vconf_value;
+       vconf_value = (char *)value;
+
+       if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME, vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       return SYSTEM_SETTINGS_ERROR_NONE;
 }
+/*  LCOV_EXCL_STOP */
 
-// TODO : 2th argument, callback, is not in use.
-int system_setting_set_changed_callback_motion_activation(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+/*  LCOV_EXCL_START */
+int system_setting_set_motion_activation(system_settings_key_e key, void *value)
 {
-       printf("system_setting_set_changed_callback_motion_activation \n");
-       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_MOTION_ACTIVATION, SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, 3);
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_MOTION_ACTIVATION, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       return SYSTEM_SETTINGS_ERROR_NONE;
 }
+/*  LCOV_EXCL_STOP */
 
-int system_setting_unset_changed_callback_motion_activation(system_settings_key_e key)
+/*  LCOV_EXCL_START */
+int system_setting_set_usb_debugging_option(system_settings_key_e key, void *value)
 {
-       printf("system_setting_unset_changed_callback_motion_activation \n");
-       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_MOTION_ACTIVATION, 3);
-}
-
-static char* _get_cur_font()
-{
-    printf("get current font \n");
-
-    xmlDocPtr doc = NULL;
-    xmlNodePtr cur = NULL;
-    xmlNodePtr cur2 = NULL;
-    xmlNodePtr cur3 = NULL;
-    xmlChar *key = NULL;
-
-    char *font_name = NULL;
-
-    doc = xmlParseFile(SETTING_FONT_CONF_FILE);
-
-    cur = xmlDocGetRootElement(doc);
-
-    if(cur == NULL) {
-        printf("empty document");
-        xmlFreeDoc(doc);
-        doc = NULL;
-        return NULL;
-    }
-
-    if(xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
-        printf("document of the wrong type, root node != fontconfig");
-        xmlFreeDoc(doc);
-        doc = NULL;
-        return NULL;
-    }
-
-    cur = cur->xmlChildrenNode;
-
-    while(cur != NULL)
-    {
-        if((!xmlStrcmp(cur->name, (const xmlChar *)"match")))
-        {
-            cur2 = cur->xmlChildrenNode;
-            while(cur2 != NULL)
-            {
-                if((!xmlStrcmp(cur2->name, (const xmlChar *)"edit")))
-                {
-                    cur3 = cur2->xmlChildrenNode;
-                    while(cur3 != NULL)
-                    {
-                        if((!xmlStrcmp(cur3->name, (const xmlChar *)"string")))
-                        {
-                            key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
-                            //printf("string is: %s", key);
-
-                            font_name = g_strdup((char *)key);
-                            xmlFree(key);
-                            key = NULL;
-                            xmlFreeDoc(doc);
-                            doc = NULL;
-                            return font_name;
-                        }
-                       cur3 = cur3->next;
-                    }
-                }
-                cur2 = cur2->next;
-            }
-        }
-        cur = cur->next;
-    }
-
-    xmlFreeDoc(doc);
-    doc = NULL;
-    return NULL;
-}
-
-static void font_config_set_notification()
-{
-    /* notification */
-       Ecore_X_Window ecore_win = ecore_x_window_root_first_get();
-       printf("FONT CHANGE NOTIFICATION >>>>>>>>>> : %d  \n", (unsigned int)ecore_win);
-       Ecore_X_Atom atom = ecore_x_atom_get("FONT_TYPE_change");
-       ecore_x_window_prop_string_set(ecore_win, atom, "slp");
-}
-
-static void font_config_set(char *font_name)
-{
-    Eina_List *text_classes = NULL;
-    Elm_Text_Class *etc = NULL;
-    const Eina_List *l = NULL;
-    Eina_List *fo_list = NULL;
-    Elm_Font_Overlay *efo = NULL;
-    int font_size = __font_size_get();
-    int size = 0;
-
-    text_classes = elm_config_text_classes_list_get();
-
-    fo_list = elm_config_font_overlay_list_get();
-
-    Eina_List *ll = NULL;
-    Eina_List *l_next = NULL;
-
-    Eina_Bool slp_medium_exist = EINA_FALSE;
-    Eina_Bool slp_roman_exist = EINA_FALSE;
-    Eina_Bool slp_bold_exist = EINA_FALSE;
-    Eina_Bool slp_regular_exist = EINA_FALSE;
-
-    EINA_LIST_FOREACH_SAFE(fo_list, ll, l_next, efo)
-    {
-        if (!strcmp(efo->text_class, "slp_medium")) {
-            elm_config_font_overlay_set(efo->text_class, (const char*)font_name, efo->size);
-            slp_medium_exist = EINA_TRUE;
-        } else if (!strcmp(efo->text_class, "slp_roman")) {
-            elm_config_font_overlay_set(efo->text_class, (const char*)font_name, efo->size);
-            slp_roman_exist = EINA_TRUE;
-        } else if (!strcmp(efo->text_class, "slp_bold")) {
-            elm_config_font_overlay_set(efo->text_class, (const char*)font_name, efo->size);
-            slp_bold_exist = EINA_TRUE;
-        } else if (!strcmp(efo->text_class, "slp_regular")) {
-            elm_config_font_overlay_set(efo->text_class, (const char*)font_name, efo->size);
-            slp_regular_exist = EINA_TRUE;
-        }
-    }
-
-    /* if slp_XX do not exist, need to set them, font size is -100(100%) */
-    if (slp_medium_exist == EINA_FALSE) {
-        elm_config_font_overlay_set("slp_medium", (const char*)font_name,  MIDDLE_FONT_DPI);
-    }
-    if (slp_roman_exist == EINA_FALSE) {
-        elm_config_font_overlay_set("slp_roman", (const char*)font_name,  MIDDLE_FONT_DPI);
-    }
-    if (slp_bold_exist == EINA_FALSE) {
-        elm_config_font_overlay_set("slp_bold", (const char*)font_name,  MIDDLE_FONT_DPI);
-    }
-    if (slp_regular_exist == EINA_FALSE) {
-        elm_config_font_overlay_set("slp_regular", (const char*)font_name,  MIDDLE_FONT_DPI);
-    }
-
-    EINA_LIST_FOREACH(text_classes, l, etc)
-    {
-        ll = NULL;
-
-        size = font_size;
-        EINA_LIST_FOREACH(fo_list, ll, efo)
-        {
-            if (!strcmp(etc->name, efo->text_class)) {
-                size = efo->size;
-            }
-        }
-        elm_config_font_overlay_set(etc->name, (const char*)font_name, size);
-    }
-
-    elm_config_font_overlay_apply();
-    elm_config_all_flush();
-    elm_config_save();
-    elm_config_text_classes_list_free(text_classes);
-    text_classes = NULL;
-}
-
-static void font_size_set()
-{
-    Eina_List *text_classes = NULL;
-    Elm_Text_Class *etc = NULL;
-    const Eina_List *l = NULL;
-    int font_size = __font_size_get();
-    char *font_name = _get_cur_font();
-
-    if (font_size == -1) {
-        //SETTING_TRACE_DEBUG("failed to call font_size_get");
-        return;
-    } else {
-               printf(">> font name = %s, font size = %d \n", font_name, font_size);
-       }
-
-    text_classes = elm_config_text_classes_list_get();
-
-    EINA_LIST_FOREACH(text_classes, l, etc)
-    {
-        elm_config_font_overlay_set(etc->name, font_name, font_size);
-    }
-
-       elm_config_font_overlay_apply();
-    elm_config_all_flush();
-    elm_config_save();
-    elm_config_text_classes_list_free(text_classes);
-    text_classes = NULL;
-    //G_FREE(font_name);
-    g_free(font_name);
-       printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>. font_size_set called \n");
-}
-
-static int __font_size_get()
-{
-    int font_size = -1;
-    int err = -1;
-
-       int vconf_value = -1;
-       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &vconf_value)) {
-               return -1;
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
+       return SYSTEM_SETTINGS_ERROR_NONE;
 
-    switch(vconf_value) {
-    case SYSTEM_SETTINGS_FONT_SIZE_SMALL:
-        font_size = SMALL_FONT_DPI;
-        break;
-    case SYSTEM_SETTINGS_FONT_SIZE_NORMAL:
-        font_size = MIDDLE_FONT_DPI;
-        break;
-    case SYSTEM_SETTINGS_FONT_SIZE_LARGE:
-        font_size = LARGE_FONT_DPI;
-        break;
-    case SYSTEM_SETTINGS_FONT_SIZE_HUGE:
-        font_size = HUGE_FONT_DPI;
-        break;
-    case SYSTEM_SETTINGS_FONT_SIZE_GIANT:
-        font_size = GIANT_FONT_DPI;
-        break;
-    default:
-        font_size = MIDDLE_FONT_DPI;
-        break;
-    }
-    return font_size;
 }
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_3g_data_network(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_3G_ENABLE, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+static int category_func(const char *name, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       static char *category = "lock-screen";
+       if (name && !strcmp(name, category)) {
+               SETTING_TRACE(" SAME ");
+               return -1;
+       } else {
+               SETTING_TRACE(" DIFFERENT -- %s, category -- %s ", name, category);
+               return 0;
+       }
+
+       return 0;
+}
+/*  LCOV_EXCL_STOP */
+
+/**
+ *
+ * set 'swipe type' if current lockscreen app is 'com.samsung.lockscreen'
+ *
+ */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_lockscreen_app(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value;
+       vconf_value = (char *)value;            /* ex) com.samsung.lockscreen */
+
+       int r = 0;
+       pkgmgrinfo_appinfo_h handle;
+       r = pkgmgrinfo_appinfo_get_appinfo(vconf_value, &handle);
+       if (r != PMINFO_R_OK) {
+               SETTING_TRACE("*** pkginfo failed ");
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+       } else {
+               SETTING_TRACE("%p", handle);
+       }
+
+       int ret = pkgmgrinfo_appinfo_foreach_category(handle, category_func, (void *)"lock-screen");
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+       }
+
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       /*----------------------------------------------------------------------------------- */
+       int locktype = -1;
+       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &locktype)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       if (locktype == SETTING_SCREEN_LOCK_TYPE_PASSWORD)
+               return SYSTEM_SETTINGS_ERROR_LOCKSCREEN_APP_PASSWORD_MODE;
+
+       if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       if (vconf_value && strcmp(vconf_value, "com.samsung.lockscreen") == 0) {
+               if (system_setting_vconf_set_value_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, SETTING_SCREEN_LOCK_TYPE_SWIPE)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+       }
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*/////////////////////////////////////////////////////////////////////////////////////////////// */
+/* */
+
+int system_setting_set_changed_callback_incoming_call_ringtone(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, SYSTEM_SETTING_CALLBACK_SLOT_0, user_data);
+}
+
+int system_setting_unset_changed_callback_incoming_call_ringtone(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, SYSTEM_SETTING_CALLBACK_SLOT_0);
+}
+
+int system_setting_set_changed_callback_email_alert_ringtone(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, SYSTEM_SETTING_CALLBACK_SLOT_0, user_data);
+}
+
+int system_setting_unset_changed_callback_email_alert_ringtone(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SYSTEM_SETTING_CALLBACK_SLOT_0);
+}
+
+int system_setting_set_changed_callback_wallpaper_home_screen(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_BGSET, SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, SYSTEM_SETTING_CALLBACK_SLOT_0, user_data);
+}
+
+int system_setting_unset_changed_callback_wallpaper_home_screen(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_BGSET, SYSTEM_SETTING_CALLBACK_SLOT_0);
+}
+
+int system_setting_set_changed_callback_wallpaper_lock_screen(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_IDLE_LOCK_BGSET, SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, SYSTEM_SETTING_CALLBACK_SLOT_0, user_data);
+}
+
+int system_setting_unset_changed_callback_wallpaper_lock_screen(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_IDLE_LOCK_BGSET, SYSTEM_SETTING_CALLBACK_SLOT_0);
+}
+
+int system_setting_set_changed_callback_font_size(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, SYSTEM_SETTINGS_KEY_FONT_SIZE, SYSTEM_SETTING_CALLBACK_SLOT_1, user_data);
+}
+
+int system_setting_unset_changed_callback_font_size(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, SYSTEM_SETTING_CALLBACK_SLOT_1);
+}
+
+int system_setting_set_changed_callback_usb_debugging_option(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, SYSTEM_SETTING_CALLBACK_SLOT_1, user_data);
+}
+
+int system_setting_unset_changed_callback_usb_debugging_option(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, SYSTEM_SETTING_CALLBACK_SLOT_1);
+}
+
+int system_setting_set_changed_callback_3g_data_network(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_3G_ENABLE, SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, SYSTEM_SETTING_CALLBACK_SLOT_1, user_data);
+}
+
+int system_setting_unset_changed_callback_3g_data_network(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_3G_ENABLE, SYSTEM_SETTING_CALLBACK_SLOT_1);
+}
+
+int system_setting_set_changed_callback_lockscreen_app(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, SYSTEM_SETTING_CALLBACK_SLOT_1, user_data);
+}
+
+int system_setting_unset_changed_callback_lockscreen_app(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, SYSTEM_SETTING_CALLBACK_SLOT_1);
+}
+
+
+/**
+ * @todo need to add custom event notification method
+ */
+int system_setting_set_changed_callback_font_type(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME, SYSTEM_SETTINGS_KEY_FONT_TYPE, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_font_type(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+/* TODO : 2th argument, callback, is not in use. */
+int system_setting_set_changed_callback_motion_activation(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_MOTION_ACTIVATION, SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, SYSTEM_SETTING_CALLBACK_SLOT_3, user_data);
+}
+
+int system_setting_unset_changed_callback_motion_activation(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_MOTION_ACTIVATION, SYSTEM_SETTING_CALLBACK_SLOT_3);
+}
+
+/*//////////////////////////////////////////////////////////////////////////////////////// */
+/*--------------------------------------- */
+int system_setting_get_locale_country(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       if (system_setting_vconf_get_value_string(VCONFKEY_REGIONFORMAT, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       /* parsing validation */
+       /* en_US.UTF-8 */
+       char arr[21] = {0,};
+       snprintf(arr, 20, "%s", vconf_value);
+       for (int i = 0; i < strlen(arr); i++) {
+               if ('.' == arr[i]) {
+                       arr[i] = 0;
+                       SETTING_TRACE("replace . to NULL : %d", i);
+                       break;
+               }
+       }
+       *value = strdup(arr);
+       free(vconf_value);
+       vconf_value = NULL;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_locale_country(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       vconf_value = (char *)value;
+
+       char *ext = "UTF-8";
+
+       char arr[20];
+       snprintf(arr, 20, "%s.%s", vconf_value, ext);
+
+       if (system_setting_vconf_set_value_string(VCONFKEY_REGIONFORMAT, arr)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_locale_country(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_REGIONFORMAT, SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, SYSTEM_SETTING_CALLBACK_SLOT_3, user_data);
+}
+
+int system_setting_unset_changed_callback_locale_country(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_REGIONFORMAT, SYSTEM_SETTING_CALLBACK_SLOT_3);
+}
+
+
+/*--------------------------------------- */
+int system_setting_get_locale_language(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       if (system_setting_vconf_get_value_string(VCONFKEY_LANGSET, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       /* parsing validation */
+       /* en_US.UTF-8 */
+       char arr[21] = {0,};
+       snprintf(arr, 20, "%s", vconf_value);
+       for (int i = 0; i < strlen(arr); i++) {
+               if ('.' == arr[i]) {
+                       arr[i] = 0;
+                       SETTING_TRACE("replace . to NULL : %d", i);
+                       break;
+               }
+       }
+       *value = strdup(arr);
+       free(vconf_value);
+       vconf_value = NULL;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_locale_language(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       vconf_value = (char *)value;
+
+       char *ext = "UTF-8";
+
+       char arr[20];
+       snprintf(arr, 20, "%s.%s", vconf_value, ext);
+
+       if (system_setting_vconf_set_value_string(VCONFKEY_LANGSET, arr)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_locale_language(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       /*return system_setting_vconf_set_changed_cb(VCONFKEY_LANGSET, SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, 3, user_data ); */
+       return system_setting_vconf_set_changed_cb(VCONFKEY_LANGSET, SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, SYSTEM_SETTING_CALLBACK_SLOT_5, user_data);
+}
+
+int system_setting_unset_changed_callback_locale_language(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_LANGSET, SYSTEM_SETTING_CALLBACK_SLOT_5);
+}
+
+/*--------------------------------------- */
+/*  LCOV_EXCL_START */
+int system_setting_get_locale_timeformat_24hour(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       int vconf_value;
+
+       if (system_setting_vconf_get_value_int(VCONFKEY_REGIONFORMAT_TIME1224, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       bool ret_value = true;
+       if (vconf_value == VCONFKEY_TIME_FORMAT_12)
+               ret_value = false;
+       else if (vconf_value == VCONFKEY_TIME_FORMAT_24)
+               ret_value = true;
+
+       *value = (void *)ret_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_locale_timeformat_24hour(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+
+       vconf_value = (bool *)value;
+
+       if (*vconf_value) {
+               if (system_setting_vconf_set_value_int(VCONFKEY_REGIONFORMAT_TIME1224, VCONFKEY_TIME_FORMAT_24)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+
+       } else {
+               if (system_setting_vconf_set_value_int(VCONFKEY_REGIONFORMAT_TIME1224, VCONFKEY_TIME_FORMAT_12)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+int system_setting_set_changed_callback_locale_timeformat_24hour(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_REGIONFORMAT_TIME1224, SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, SYSTEM_SETTING_CALLBACK_SLOT_3, user_data);
+}
+
+int system_setting_unset_changed_callback_locale_timeformat_24hour(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_REGIONFORMAT_TIME1224, SYSTEM_SETTING_CALLBACK_SLOT_3);
+}
+
+int system_setting_get_locale_timezone(system_settings_key_e key, void **value)
+{
+       char tzpath[256];
+       ssize_t len = readlink(SETTING_TZONE_SYMLINK_PATH, tzpath, sizeof(tzpath)-1);
+       if (len != -1) {
+               tzpath[len] = '\0';
+       } else {
+               SETTING_TRACE("parse error for SETTING_TZONE_SYMLINK_PATH");
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       SETTING_TRACE("tzpath : %s ", &tzpath[20]);
+       *value = strdup(&tzpath[20]);
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_locale_timezone(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *timezone_value = NULL;
+       timezone_value = (char *)value;
+
+       char tz_path[1024];
+       snprintf(tz_path, 1024, "/usr/share/zoneinfo/%s", timezone_value);
+
+       int is_load = _is_file_accessible(tz_path);
+       if (is_load == 0) {
+               alarmmgr_set_timezone(tz_path);
+
+               if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_TIMEZONE_ID, timezone_value)) {
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+               return SYSTEM_SETTINGS_ERROR_NONE;
+       }
+       return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+}
+/*  LCOV_EXCL_STOP */
+
+
+
+/*  LCOV_EXCL_START */
+int system_setting_set_changed_callback_locale_timezone(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_TIMEZONE_ID, SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, SYSTEM_SETTING_CALLBACK_SLOT_4, user_data);
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_unset_changed_callback_locale_timezone(system_settings_key_e key)
+{
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_TIMEZONE_ID, SYSTEM_SETTING_CALLBACK_SLOT_4);
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_changed_callback_locale_timezone_changed(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_unset_changed_callback_locale_timezone_changed(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+}
+/*  LCOV_EXCL_STOP */
+
+
+/*  LCOV_EXCL_START */
+int system_setting_get_time_changed(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       time_t cur_tick;
+       int ** val = (int**)value;
+       cur_tick = time(NULL);
+       **val = cur_tick;
+       /* struct tm * localtime = time (cur_tick); */
+       /* printf("%s\n", ctime(&cur_tick); */
+       return SYSTEM_SETTINGS_ERROR_NONE;
+
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_time_changed(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SYSTEM_TIME_CHANGED, SYSTEM_SETTINGS_KEY_TIME_CHANGED, SYSTEM_SETTING_CALLBACK_SLOT_3, user_data);
+}
+
+int system_setting_unset_changed_callback_time_changed(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SYSTEM_TIME_CHANGED, SYSTEM_SETTING_CALLBACK_SLOT_3);
+}
+
+/* SYSTEM_SETTINGS_KEY_SOUND_LOCK */
+int system_setting_get_sound_lock(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+int system_setting_set_changed_callback_sound_lock(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, SYSTEM_SETTINGS_KEY_SOUND_LOCK, SYSTEM_SETTING_CALLBACK_SLOT_3, user_data);
+}
+
+int system_setting_unset_changed_callback_sound_lock(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, SYSTEM_SETTING_CALLBACK_SLOT_3);
+}
+
+/**
+ * a = VCONFKEY_SETAPPL_SOUND_STATUS_BOOL b = VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL
+ *
+ * a == false, b == false --> silent mode
+ * a == true, b == false --> sound mode
+ * a == false, b == true --> vibration mode
+ */
+/*  LCOV_EXCL_START */
+int system_setting_get_sound_silent_mode(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool sound_cond;
+       bool vib_cond;
+
+       bool vconf_value;
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_cond)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_cond)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       if (sound_cond == false && vib_cond == false) {
+               vconf_value = true;
+               *value = (void *)vconf_value;
+       } else {
+               vconf_value = false;
+               *value = (void *)vconf_value;
+       }
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/**
+ * a = VCONFKEY_SETAPPL_SOUND_STATUS_BOOL b = VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL
+ *
+ * a == false, b == false --> silent mode
+ * a == true, b == false --> sound mode
+ */
+int system_setting_set_sound_silent_mode(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+
+       vconf_value = (bool *)value;
+
+       bool vconf_sound = false;
+       bool vconf_vib = false;
+
+       if (*vconf_value) {
+               vconf_sound = false;
+               vconf_vib = false;
+       } else {
+               vconf_sound = true;
+               vconf_vib = false;
+       }
+
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, vconf_sound)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, vconf_vib)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+
+
+/* TODO */
+int system_setting_set_changed_callback_sound_silent_mode(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, SYSTEM_SETTING_CALLBACK_SLOT_3, user_data);
+}
+
+/* TODO */
+int system_setting_unset_changed_callback_sound_silent_mode(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, SYSTEM_SETTING_CALLBACK_SLOT_3);
+}
+
+/* SYSTEM_SETTINGS_KEY_SOUND_TOUCH */
+int system_setting_get_sound_touch(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       int ret = system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &vconf_value);
+       if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
+               return ret;
+       }
+       *value = (void *)vconf_value;
+       return ret;
+}
+
+int system_setting_set_sound_touch(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, *(bool *)value);
+}
+
+
+int system_setting_set_changed_callback_sound_touch(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, SYSTEM_SETTINGS_KEY_SOUND_TOUCH, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_sound_touch(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+int system_setting_get_auto_rotation_mode(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_auto_rotation_mode(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_auto_rotation_mode(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_auto_rotation_mode(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+int system_setting_get_screen_backlight_time(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       int vconf_value;
+       int ** val = (int**)value;
+
+       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       **val = vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+
+/*  LCOV_EXCL_START */
+int system_setting_set_screen_backlight_time(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       int *vconf_value;
+       vconf_value = *(int **)value;
+
+       if (!(*vconf_value > 0 && *vconf_value <= 600)) {
+               SETTING_TRACE(" ERR Betweeny here  0 ~ 600");
+               return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (system_setting_vconf_set_value_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       SETTING_TRACE_END;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_screen_backlight_time(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_screen_backlight_time(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+int system_setting_get_sound_notification(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       *value = vconf_value;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_sound_notification(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       vconf_value = (char *)value;
+
+       int is_load = _is_file_accessible(vconf_value);
+       if (is_load == 0) {
+               //SETTING_TRACE(" system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, %s) TRY", vconf_value);
+               if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, vconf_value)) {
+                       //SETTING_TRACE(" system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, %s) FAIL", vconf_value);
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
+       } else {
+               //SETTING_TRACE(" is_file_accessibile FAILED - system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, %s) FAIL", vconf_value);
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_sound_notification(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, SYSTEM_SETTING_CALLBACK_SLOT_0, user_data);
+}
+
+int system_setting_unset_changed_callback_sound_notification(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SYSTEM_SETTING_CALLBACK_SLOT_0);
+}
+
+int system_setting_get_notification_repetition_period(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       int ** val = (int**)value;
+       int vconf_value;
+
+       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       **val = vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_notification_repetition_period(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       int *vconf_value;
+       vconf_value = *(int **)value;
+
+       if (system_setting_vconf_set_value_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       SETTING_TRACE_END;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_notification_repetition_period(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, SYSTEM_SETTING_CALLBACK_SLOT_1, user_data);
+}
+
+int system_setting_unset_changed_callback_notification_repetition_period(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, SYSTEM_SETTING_CALLBACK_SLOT_1);
+}
+
+int system_setting_get_device_name(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_DEVICE_NAME_STR, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       *value = vconf_value;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_device_name(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       vconf_value = (char *)value;
+
+       if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_DEVICE_NAME_STR, vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_device_name(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_DEVICE_NAME_STR, SYSTEM_SETTINGS_KEY_DEVICE_NAME, SYSTEM_SETTING_CALLBACK_SLOT_0, user_data);
+}
+
+int system_setting_unset_changed_callback_device_name(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_DEVICE_NAME_STR, SYSTEM_SETTING_CALLBACK_SLOT_0);
+}
+
+/*---------------------------------------------- */
+int system_setting_get_network_flight_mode(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+       if (system_setting_vconf_get_value_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+int system_setting_set_changed_callback_network_flight_mode(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_TELEPHONY_FLIGHT_MODE, SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, SYSTEM_SETTING_CALLBACK_SLOT_3, user_data);
+}
+
+int system_setting_unset_changed_callback_network_flight_mode(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_TELEPHONY_FLIGHT_MODE, SYSTEM_SETTING_CALLBACK_SLOT_3);
+}
+
+int system_setting_get_network_wifi_notification(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       int vconf_value;
+       if (system_setting_vconf_get_value_int(VCONFKEY_WIFI_ENABLE_QS, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       bool bret ;
+       bret = (vconf_value == VCONFKEY_WIFI_QS_ENABLE) ? true : false;
+
+       *value = (void *)bret;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+int system_setting_set_changed_callback_network_wifi_notification(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_WIFI_ENABLE_QS, SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, SYSTEM_SETTING_CALLBACK_SLOT_4, user_data);
+}
+
+int system_setting_unset_changed_callback_network_wifi_notification(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_WIFI_ENABLE_QS, SYSTEM_SETTING_CALLBACK_SLOT_4);
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_get_lock_state(system_settings_key_e key, void **value)
+{
+       int vconf_value;
+       int ** val = (int**)value;
+
+       if (system_setting_vconf_get_value_int(VCONFKEY_IDLE_LOCK_STATE_READ_ONLY, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       **val = vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_lock_state(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       int *vconf_value;
+       vconf_value = *(int **)value;
+
+       if (system_setting_vconf_set_value_int(VCONFKEY_IDLE_LOCK_STATE_READ_ONLY, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       SETTING_TRACE_END;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_changed_callback_lock_state(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       return system_setting_vconf_set_changed_cb(VCONFKEY_IDLE_LOCK_STATE_READ_ONLY, SYSTEM_SETTINGS_KEY_LOCK_STATE, SYSTEM_SETTING_CALLBACK_SLOT_4, user_data);
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_unset_changed_callback_lock_state(system_settings_key_e key)
+{
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_IDLE_LOCK_STATE_READ_ONLY, SYSTEM_SETTING_CALLBACK_SLOT_4);
+}
+/*  LCOV_EXCL_STOP */
+
+//----------------------------------------------------------------------------------------------------------------------------
+
+#define DEFAULT_ADS_ID "00000000-0000-0000-0000-000000000000"
+
+int system_setting_get_ads_id(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       int optout_value = 0;
+       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_AD_ID_OPT_OUT, &optout_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       if (optout_value == 1) {
+               *value = strdup(DEFAULT_ADS_ID);
+               return SYSTEM_SETTINGS_ERROR_NONE;
+       }
+
+       char *vconf_value = NULL;
+       if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_AD_ID, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       *value = vconf_value;
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+
+#if DEBUG_DUMP_CONTEXT
+void make_ad_id(void)
+{
+       uuid_t uuid_value;
+       char uuid_unparsed[50] = {0};
+       uuid_generate(uuid_value);
+       uuid_unparse(uuid_value, uuid_unparsed);
+       system_setting_set_ad_id(key, uuid_unparsed); //example of setting the value
+}
+#endif
+int system_setting_set_ads_id(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       char *vconf_value = NULL;
+       vconf_value = (char *)value;
+
+       if (system_setting_vconf_set_value_string(VCONFKEY_SETAPPL_AD_ID, vconf_value)) {
+               SETTING_TRACE("Setting VCONFKEY_SETAPPL_AD_ID failed");
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+int system_setting_set_changed_callback_ads_id(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_AD_ID, SYSTEM_SETTINGS_KEY_ADS_ID, SYSTEM_SETTING_CALLBACK_SLOT_0, user_data);
+}
+
+int system_setting_unset_changed_callback_ads_id(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_AD_ID, SYSTEM_SETTING_CALLBACK_SLOT_0);
+}
+
+int system_settings_feature_check_bool(char *path)
+{
+       bool feature_data = false;
+       int ret = system_info_get_platform_bool(path, &feature_data);
+       if (ret != SYSTEM_INFO_ERROR_NONE) {
+               SETTING_TRACE("Setting - reading feature data failed, %d", ret);
+               return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+       }
+
+       ret = (feature_data == true) ? SYSTEM_SETTINGS_ERROR_NONE : SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       return ret;
+
+}
+
+int system_setting_feature_check_incoming_call(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_INCOMING_CALL_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+int system_setting_feature_check_home_screen(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_HOME_SCREEN_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+int system_setting_feature_check_lock_screen(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_LOCK_SCREEN_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+int system_setting_feature_check_notification_email(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_NOTIFICATION_EMAIL_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+int system_setting_feature_check_wifi(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_WIFI_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+int system_setting_feature_check_telephony(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_TELEPHONY_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+
+int system_setting_feature_check_font(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_FONT_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+int system_setting_feature_check_accessibility_grayscale(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_ACCESSIBILITY_GRAYSCALE_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+int system_setting_feature_check_accessibility_negative(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               ret = system_settings_feature_check_bool(SETTING_ACCESSIBILITY_NEGATIVE_PATH);
+               first_query = false;
+       }
+
+       return ret;
+}
+
+int system_setting_feature_check_wearable_profile(void *value)
+{
+       static bool first_query = true;
+       static int ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+       if (first_query == true) {
+               char *profile_data = NULL;
+               int rotary_feature = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+               ret = system_info_get_platform_string(SETTING_PROFILE_PATH, &profile_data);
+               if (ret != SYSTEM_INFO_ERROR_NONE) {
+                       SETTING_TRACE("Setting - reading profile string failed, %d", ret);
+                       return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+               }
+
+               rotary_feature = system_settings_feature_check_bool(SETTING_INPUT_ROTATING_BEZEL_PATH);
+
+               if ((rotary_feature == SYSTEM_SETTINGS_ERROR_NONE) && profile_data && !strcmp(profile_data, "wearable"))
+                       ret = SYSTEM_SETTINGS_ERROR_NONE;
+               else
+                       ret = SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+
+               if (profile_data)
+                       free(profile_data);
+
+               first_query = false;
+       }
+
+       return ret;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_get_uds_state(system_settings_key_e key, void **value)
+{
+       int ** p_value = (int**)value;
+       int vconf_value;
+       char *vconf_string_value = NULL;
+
+       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_UDSM, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       SETTING_TRACE("[%s] udsm: %d", __FUNCTION__, vconf_value);
+
+       if (vconf_value == SYSTEM_SETTINGS_UDS_ON) {
+               if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_UDSM_PKGID_LIST, &vconf_string_value))
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+
+               if (vconf_string_value) {
+                       if (!strcmp(vconf_string_value, "NONE")) {
+                               vconf_value = SYSTEM_SETTINGS_UDS_ON;
+                       } else {
+                               char *app_id = NULL;
+                               char *package_id = NULL;
+                               pid_t pid = getpid();
+
+                               int ret = app_manager_get_app_id(pid, &app_id);
+                               if (ret != APP_MANAGER_ERROR_NONE) {
+                                       free(vconf_string_value);
+                                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+                               }
+
+                               if (app_id) {
+                                       int result = 0;
+                                       result = package_manager_get_package_id_by_app_id(app_id, &package_id);
+                                       if (result != PACKAGE_MANAGER_ERROR_NONE) {
+                                               SETTING_TRACE("package_manager_get_package_id_by_app_id returned error! %d", result);
+                                               free(app_id);
+                                               free(vconf_string_value);
+                                               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+                                       }
+
+                                       SETTING_TRACE("[%s] udsm_pkg_list : %s", __FUNCTION__, vconf_string_value);
+                               }
+
+                               if (package_id && strstr(vconf_string_value, package_id)) {
+                                       vconf_value = SYSTEM_SETTINGS_UDS_ON_WHITELISTED;
+                                       SETTING_TRACE("[%s] pkg id : %s", __FUNCTION__, package_id);
+                               } else {
+                                       vconf_value = SYSTEM_SETTINGS_UDS_ON;
+                               }
+
+                       }
+                       free(vconf_string_value);
+               }
+       }
+
+       **p_value = vconf_value;
+
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_changed_callback_uds_state(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_UDSM, SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, SYSTEM_SETTING_CALLBACK_SLOT_4, user_data);
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_unset_changed_callback_uds_state(system_settings_key_e key)
+{
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_UDSM, SYSTEM_SETTING_CALLBACK_SLOT_4);
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_changed_callback_uds_pkg_list(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_UDSM_PKGID_LIST, SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, SYSTEM_SETTING_CALLBACK_SLOT_4, user_data);
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_unset_changed_callback_uds_pkg_list(system_settings_key_e key)
+{
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_UDSM_PKGID_LIST, SYSTEM_SETTING_CALLBACK_SLOT_4);
+}
+/*  LCOV_EXCL_STOP */
+
+/* SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS */
+int system_setting_get_accessibility_tts(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       int ret = system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, &vconf_value);
+       if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
+               return ret;
+       }
+       *value = (void *)vconf_value;
+       return ret;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_accessibility_tts(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_accessibility_tts(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_accessibility_tts(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+/* SYSTEM_SETTINGS_KEY_VIBRATION */
+int system_setting_get_vibration(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_vibration(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_vibration(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, SYSTEM_SETTINGS_KEY_VIBRATION, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_vibration(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+/* SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE */
+int system_setting_get_automatic_time_update(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_automatic_time_update(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_automatic_time_update(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_automatic_time_update(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+/* SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE */
+int system_setting_get_developer_option_state(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_developer_option_state(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_developer_option_state(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE, SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_developer_option_state(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+/* SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE */
+int system_setting_get_accessibility_grayscale(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_GREYSCALE, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_accessibility_grayscale(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_GREYSCALE, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_accessibility_grayscale(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_GREYSCALE, SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_accessibility_grayscale(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_GREYSCALE, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+/* SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR */
+int system_setting_get_accessibility_negative_color(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+
+/*  LCOV_EXCL_START */
+int system_setting_set_accessibility_negative_color(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+int system_setting_set_changed_callback_accessibility_negative_color(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST, SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR, SYSTEM_SETTING_CALLBACK_SLOT_2, user_data);
+}
+
+int system_setting_unset_changed_callback_accessibility_negative_color(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST, SYSTEM_SETTING_CALLBACK_SLOT_2);
+}
+
+/* SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED */
+/*  LCOV_EXCL_START */
+int system_setting_get_rotary_event_enabled(system_settings_key_e key, void **value)
+{
+       SETTING_TRACE_BEGIN;
+       bool vconf_value;
+
+       if (system_setting_vconf_get_value_bool(VCONFKEY_SETAPPL_ROTARY_EVENT_ENABLED_BOOL, &vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+       *value = (void *)vconf_value;
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_rotary_event_enabled(system_settings_key_e key, void *value)
+{
+       SETTING_TRACE_BEGIN;
+       bool *vconf_value;
+       vconf_value = (bool *)value;
+       if (system_setting_vconf_set_value_bool(VCONFKEY_SETAPPL_ROTARY_EVENT_ENABLED_BOOL, *vconf_value)) {
+               return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+       }
+
+       return SYSTEM_SETTINGS_ERROR_NONE;
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_set_changed_callback_rotary_event_enabled(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_ROTARY_EVENT_ENABLED_BOOL, SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED, SYSTEM_SETTING_CALLBACK_SLOT_3, user_data);
+}
+/*  LCOV_EXCL_STOP */
+
+/*  LCOV_EXCL_START */
+int system_setting_unset_changed_callback_rotary_event_enabled(system_settings_key_e key)
+{
+       SETTING_TRACE_BEGIN;
+       return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_ROTARY_EVENT_ENABLED_BOOL, SYSTEM_SETTING_CALLBACK_SLOT_3);
+}
+/*  LCOV_EXCL_STOP */
+