Fix prevent issues
[apps/core/preloaded/settings.git] / setting-profile / src / setting-profile-sound-main.c
index 29b5cf8..239b5da 100755 (executable)
  *
  */
 #include <setting-profile-sound-main.h>
+#include <setting-profile.h>
 
-#define VOLUME_STR                     _("IDS_ST_SK_VOLUME")
+#define VOLUME_STR                     _("IDS_ST_BODY_VOLUME")
 #define RINGTONE_STR           _("IDS_COM_BODY_RINGTONES")
 
 #define SOUND_DESC "IDS_ST_BODY_ADJUST_VOLUME_AND_INTENSITY_FOR_SOUNDS_WHEN_MSG"
 
+char *repeat_type[SETTING_SOUND_REPEAT_TYPE_LEN] = {
+               SETTING_SOUND_TEXT_REPEAT_ONCE,
+               SETTING_SOUND_TEXT_REPEAT_2MIN,
+               SETTING_SOUND_TEXT_REPEAT_5MIN,
+               SETTING_SOUND_TEXT_REPEAT_10MIN
+       };
+
 static int setting_profile_sound_main_create(void *cb);
 static int setting_profile_sound_main_destroy(void *cb);
 static int setting_profile_sound_main_update(void *cb);
@@ -33,6 +41,34 @@ static int setting_profile_sound_main_cleanup(void *cb);
 static void setting_profile_layout_ug_cb(ui_gadget_h ug,
                                         enum ug_mode mode, void *priv);
 
+static void setting_profile_sound_main_click_softkey_cancel_cb(void *data,
+                                                               Evas_Object *obj, void *event_info);
+
+static void setting_profile_sound_main_Gendial_chk_cb(void *data,
+                                                               Evas_Object *obj, void *event_info);
+
+static void setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
+                                                                       Evas_Object *obj, void *event_info);
+
+static void setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data,
+                                                                   Evas_Object *obj, void *event_info);
+
+static void setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data,
+                                                                       Evas_Object *obj, void *event_info);
+
+static void setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
+                                                                       Evas_Object *obj, void *event_info);
+
+static void setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data,
+                                                                       Evas_Object *obj, void *event_info);
+
+static void setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data,
+                                                                       Evas_Object *obj, void *event_info);
+
+static void settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
+                                                                       Evas_Object *obj, void *event_info);
+
+
 setting_view setting_view_profile_sound_main = {
        .create = setting_profile_sound_main_create,
        .destroy = setting_profile_sound_main_destroy,
@@ -106,7 +142,7 @@ void __sound_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
        setting_set_int_slp_key(data_parentItem->int_slp_setting_binded,
                                data_subItem->chk_status, &err);
 
-       if (data_parentItem) {
+       if (data_parentItem && data_parentItem->item) {
                data_parentItem->sub_desc =
                    (char *)g_strdup(_(data_subItem->keyStr));
                elm_object_item_data_set(data_parentItem->item, data_parentItem);
@@ -115,8 +151,13 @@ void __sound_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
 
        if (data_parentItem->int_slp_setting_binded ==
            INT_SLP_SETTING_CALL_ALERT_VIB) {
-               if (device_haptic_stop_play(ad->hnd_hpt) != 0) {
-                       SETTING_TRACE("ERROR device_haptic_stop_play");
+           if(ad->hnd_hpt < 0)
+               {
+                       SETTING_TRACE_DEBUG("[ERROR] Can't use haptic handle.");
+                       return;
+               }
+               if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
+                       SETTING_TRACE("ERROR haptic_stop_all_effects");
                        /* return; */
                }
                setting_profile_play_vibration(ad,
@@ -180,7 +221,7 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
                                                     ad, parentItem,
                                                     SWALLOW_Type_1RADIO, rgd,
                                                     0,
-                                                    SETTING_SOUND_TEXT_REPEAT_ONCE,
+                                                    _(SETTING_SOUND_TEXT_REPEAT_ONCE),
                                                     NULL);
 
                setting_create_Gendial_exp_sub_field(scroller,
@@ -189,7 +230,7 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
                                                     ad, parentItem,
                                                     SWALLOW_Type_1RADIO, rgd,
                                                     1,
-                                                    SETTING_SOUND_TEXT_REPEAT_2MIN,
+                                                    _(SETTING_SOUND_TEXT_REPEAT_2MIN),
                                                     NULL);
 
                setting_create_Gendial_exp_sub_field(scroller,
@@ -198,7 +239,7 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
                                                     ad, parentItem,
                                                     SWALLOW_Type_1RADIO, rgd,
                                                     2,
-                                                    SETTING_SOUND_TEXT_REPEAT_5MIN,
+                                                    _(SETTING_SOUND_TEXT_REPEAT_5MIN),
                                                     NULL);
                setting_create_Gendial_exp_sub_field(scroller,
                                                     &(ad->itc_1icon_1text_sub),
@@ -206,12 +247,11 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
                                                     ad, parentItem,
                                                     SWALLOW_Type_1RADIO, rgd,
                                                     3,
-                                                    SETTING_SOUND_TEXT_REPEAT_10MIN,
+                                                    _(SETTING_SOUND_TEXT_REPEAT_10MIN),
                                                     NULL);
 
                setting_update_chk_status(rgd,
-                                         data_parentItem->
-                                         int_slp_setting_binded);
+                                         data_parentItem->int_slp_setting_binded);
        }
 }
 
@@ -232,88 +272,6 @@ static void __mm_player_msg_cb(void *user_param)
        setting_profile_close_all_mm_players(ad);
 }
 
-Eina_Bool __volume_timer_cb(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       retv_if(data == NULL, EINA_FALSE);
-       SettingProfileUG *ad = (SettingProfileUG *)data;
-       double value = 0.0;
-
-       SETTING_TRACE_DEBUG("cur_vol_type : %d", ad->cur_vol_type);
-
-       switch(ad->cur_vol_type)
-       {
-               case SETTING_VOL_TYPE_RINGTONE:
-                       if(ad->data_call_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_call_volume->eo_check);
-                               sound_manager_set_volume(SOUND_TYPE_RINGTONE, (unsigned int)(value+0.5));
-                               setting_profile_change_player_volume(&ad->mp_ringtone, value);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_NOTIFICATION:
-                       if(ad->data_noti_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_noti_volume->eo_check);
-                               sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, (unsigned int)(value+0.5));
-                               setting_profile_change_player_volume(&ad->mp_noti, value);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_MEDIA:
-                       if(ad->data_media_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_media_volume->eo_check);
-                               sound_manager_set_volume(SOUND_TYPE_MEDIA, (unsigned int)(value+0.5));
-                               setting_profile_change_player_volume(&ad->mp_media, value);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_SYSTEM:
-                       if(ad->data_touch_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_touch_volume->eo_check);
-                               sound_manager_set_volume(SOUND_TYPE_SYSTEM, (unsigned int)(value+0.5));
-                               setting_profile_change_player_volume(&ad->mp_sys, value);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_NOTI_VIB:
-                       if(ad->data_vib_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_vib_volume->eo_check);
-                               vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
-                       }
-                       break;
-               case SETTING_VOL_TYPE_HAPTIC_VIB:
-                       if(ad->data_touch_vib)
-                       {
-                               value = elm_slider_value_get(ad->data_touch_vib->eo_check);
-                               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
-                               //It must change synchronizly to avoid the unexpected terminate issue
-                               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_BAK_INT, (unsigned int)(value+0.5));
-                       }
-                       break;
-               default:
-                       break;
-
-       }
-       return ECORE_CALLBACK_RENEW;
-}
-
-void __create_volume_timer(void *data, setting_volume_types type)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(data == NULL);
-
-       SettingProfileUG *ad = (SettingProfileUG *)data;
-
-       if(ad->volume_timer)
-       {
-               ecore_timer_del(ad->volume_timer);
-               ad->volume_timer = NULL;
-               SETTING_TRACE_DEBUG("[AA] volume timer is deleted");
-       }
-       ad->volume_timer = ecore_timer_add(SETTING_SOUND_VOLUME_TIMER_INTERVAL, (Ecore_Task_Cb)__volume_timer_cb, ad);
-}
-
 void __ringtone_start_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
        ret_if(data == NULL);
@@ -364,6 +322,14 @@ void __noti_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
 
        ad->cur_vol_type = SETTING_VOL_TYPE_NOTI_VIB;
        setting_profile_close_all_mm_players(ad);
+
+       int err = 0;
+       char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
+       svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, MAX_COMMON_BUFFER_LEN);
+       haptic_stop_all_effects(ad->hnd_hpt);
+       err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
+       if (err < 0)
+                       SETTING_TRACE("Failed to play haptic monotone");
 }
 
 void __haptic_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
@@ -376,6 +342,15 @@ void __haptic_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info
 
        ad->cur_vol_type = SETTING_VOL_TYPE_HAPTIC_VIB;
        setting_profile_close_all_mm_players(ad);
+
+       int err = 0;
+       char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
+       svi_get_path(SVI_TYPE_VIB, SVI_VIB_OPERATION_VIBRATION, pattern_file, MAX_COMMON_BUFFER_LEN);
+       haptic_stop_all_effects(ad->hnd_hpt);
+       err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
+
+       if (err < 0)
+               SETTING_TRACE("Failed to play haptic monotone");
 }
 
 void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
@@ -390,11 +365,12 @@ void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
        player_h **player = NULL;
 
        double   value = elm_slider_value_get(obj);
+       list_item->chk_status = (unsigned int)(value+0.5);
 
        switch(ad->cur_vol_type)
        {
                case SETTING_VOL_TYPE_RINGTONE:
-                       sound_manager_set_volume(SOUND_TYPE_RINGTONE, (unsigned int)(value+0.5));
+                       sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
                        player = &(ad->mp_ringtone);
                        if(*player != NULL)
                                return;
@@ -402,13 +378,12 @@ void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
                        pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
                        if(pa_tone_path == NULL)
                        {
-                               if(isEmulBin())
-                                       pa_tone_path = SETTING_DEFAULT_CALL_TONE_SDK;
-                               else
-                                       pa_tone_path = SETTING_DEFAULT_CALL_TONE;
+                               pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
 
-                               if(vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0)
+                               if(vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
+                                       FREE(pa_tone_path);
                                        return;
+                               }
                        }
                        setting_profile_play_sound_origin(player, ad, __mm_player_msg_cb,
                                                        pa_tone_path,
@@ -416,7 +391,7 @@ void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
                                                        SOUND_TYPE_RINGTONE);
                        break;
                case SETTING_VOL_TYPE_NOTIFICATION:
-                       sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, (unsigned int)(value+0.5));
+                       sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, list_item->chk_status);
                        player = &(ad->mp_noti);
                        if(*player != NULL)
                                return;
@@ -424,9 +399,11 @@ void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
                        pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
                        if(pa_tone_path == NULL)
                        {
-                               pa_tone_path = SETTING_DEFAULT_MSG_TONE;
-                               if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE) < 0)
+                               pa_tone_path = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
+                               if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE) < 0) {
+                                       FREE(pa_tone_path);
                                        return;
+                               }
                        }
                        setting_profile_play_sound_origin(player, ad, __mm_player_msg_cb,
                                                        pa_tone_path,
@@ -434,15 +411,12 @@ void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
                                                        SOUND_TYPE_NOTIFICATION);
                        break;
                case SETTING_VOL_TYPE_MEDIA:
-                       sound_manager_set_volume(SOUND_TYPE_MEDIA, (unsigned int)(value+0.5));
+                       sound_manager_set_volume(SOUND_TYPE_MEDIA, list_item->chk_status);
                        player = &(ad->mp_media);
                        if(*player != NULL)
                                return;
                        SETTING_TRACE_DEBUG("media player will be created");
-                       if(isEmulBin())
-                               pa_tone_path = (char*)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
-                       else
-                               pa_tone_path = (char*)strdup(SETTING_DEFAULT_MEDIA_TONE);
+                       pa_tone_path = (char*)strdup(SETTING_DEFAULT_MEDIA_TONE);
 
                        setting_profile_play_sound_origin(player, ad, __mm_player_msg_cb,
                                                        pa_tone_path,
@@ -450,7 +424,7 @@ void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
                                                        SOUND_TYPE_MEDIA);
                        break;
                case SETTING_VOL_TYPE_SYSTEM:
-                       sound_manager_set_volume(SOUND_TYPE_SYSTEM, (unsigned int)(value+0.5));
+                       sound_manager_set_volume(SOUND_TYPE_SYSTEM, list_item->chk_status);
                        player = &(ad->mp_sys);
                        if(*player != NULL)
                                return;
@@ -467,9 +441,10 @@ void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
                return;
        }
 
-       __create_volume_timer(ad, ad->cur_vol_type);
-
-       FREE(pa_tone_path);
+       if(pa_tone_path) {
+               free(pa_tone_path);
+               pa_tone_path = NULL;
+       }
 
        SETTING_TRACE_END;
 }
@@ -481,8 +456,8 @@ void __vibration_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
 
-       if (device_haptic_stop_play(ad->hnd_hpt) != 0) {
-               SETTING_TRACE("ERROR device_haptic_stop_play");
+       if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
+               SETTING_TRACE("ERROR haptic_stop_all_effects");
                /* return; */
        }
 
@@ -519,12 +494,40 @@ void __vibration_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
        SETTING_TRACE_END;
 }
 
+static void __main_list_unrealized_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       ret_if(data == NULL);
+
+       SettingProfileUG *ad = (SettingProfileUG *) data;
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       Setting_GenGroupItem_Data *list_item =
+           (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+
+       /* backup each slider's value */
+       if(list_item == ad->data_call_volume)
+               sound_manager_set_volume(SOUND_TYPE_RINGTONE, ad->data_call_volume->chk_status);
+       else if(list_item == ad->data_noti_volume)
+               sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, ad->data_noti_volume->chk_status);
+       else if(list_item == ad->data_media_volume)
+               sound_manager_set_volume(SOUND_TYPE_MEDIA, ad->data_media_volume->chk_status);
+       else if(list_item == ad->data_touch_volume)
+               sound_manager_set_volume(SOUND_TYPE_SYSTEM, ad->data_touch_volume->chk_status);
+       else if(list_item == ad->data_vib_volume)
+               vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, ad->data_vib_volume->chk_status);
+       else if(list_item == ad->data_touch_vib)
+               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, ad->data_touch_vib->chk_status);
+}
+
 static Evas_Object *__get_main_list(void *data)
 {
        retv_if(data == NULL, NULL);
 
        SettingProfileUG *ad = (SettingProfileUG *) data;
 
+       __setting_profile_ug_key_grab(ad);
+
        if(ad->sub_view[SETTING_PROF_VIEW_VOL])
                return ad->sub_view[SETTING_PROF_VIEW_VOL];
 
@@ -606,13 +609,17 @@ static Evas_Object *__get_main_list(void *data)
        /* e.noti volumn */
        if(sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value) < 0)
                mm_value = SETTING_DEFAULT_NOTI_VOL_INT;
+
+       (void)setting_create_Gendial_field_titleItem(genlist,
+                                                    &(itc_group_item),
+                                                    SETTING_SOUND_TEXT_NOTIFICATION, NULL);
        ad->data_noti_volume =
            setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
                                             NULL,
                                             SWALLOW_Type_LAYOUT_SLIDER,
                                             IMG_SLIDER_BTN_VOLUME01,
                                             IMG_SLIDER_BTN_VOLUME02, mm_value,
-                                            SETTING_SOUND_TEXT_NOTIFICATION,
+                                            NULL,//SETTING_SOUND_TEXT_NOTIFICATION,
                                             NULL,
                                             setting_profile_sound_main_noti_sound_slider_value_change_cb);
        if (ad->data_noti_volume) {
@@ -632,13 +639,17 @@ static Evas_Object *__get_main_list(void *data)
        /* g.media volume */
        if(sound_manager_get_volume(SOUND_TYPE_MEDIA, &mm_value) < 0)
                mm_value = SETTING_DEFAULT_MEDIA_VOL_INT;
+
+       (void)setting_create_Gendial_field_titleItem(genlist,
+                                                    &(itc_group_item),
+                                                    SETTING_SOUND_TEXT_MEDIA, NULL);
        ad->data_media_volume =
            setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
                                             NULL,
                                             SWALLOW_Type_LAYOUT_SLIDER,
                                             IMG_SLIDER_BTN_VOLUME01,
                                             IMG_SLIDER_BTN_VOLUME02, mm_value,
-                                            SETTING_SOUND_TEXT_MEDIA, NULL,
+                                            NULL, NULL,
                                             setting_profile_sound_main_media_sound_slider_value_change_cb);
        if (ad->data_media_volume) {
                ad->data_media_volume->win_main = ad->win_main_layout;
@@ -656,14 +667,20 @@ static Evas_Object *__get_main_list(void *data)
 
        /* h.system volume */
        if(sound_manager_get_volume(SOUND_TYPE_SYSTEM, &mm_value) < 0)
+       {
+               SETTING_TRACE_DEBUG("Fail to get volume");
                mm_value = SETTING_DEFAULT_SYSTEM_VOL_INT;
+       }
+       (void)setting_create_Gendial_field_titleItem(genlist,
+                                                    &(itc_group_item),
+                                                    SETTING_SOUND_TEXT_SYSTEM, NULL);
        ad->data_touch_volume =
            setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
                                             NULL,
                                             SWALLOW_Type_LAYOUT_SLIDER,
                                             IMG_SLIDER_BTN_VOLUME01,
                                             IMG_SLIDER_BTN_VOLUME02, mm_value,
-                                            SETTING_SOUND_TEXT_SYSTEM, NULL,
+                                            NULL, NULL,
                                             settings_profile_sound_main_sys_sound_slider_value_change_cb);
        if (ad->data_touch_volume) {
                ad->data_touch_volume->win_main = ad->win_main_layout;
@@ -684,16 +701,19 @@ static Evas_Object *__get_main_list(void *data)
                                                     "IDS_ST_BODY_CALLALERTTYPE_VIBRATION", NULL);
 
        /* f.noti vib */
-       if (vconf_get_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, &vconf_value) <
-           0)
+       if (vconf_get_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, &vconf_value) < 0)
                vconf_value = SETTING_DEFAULT_NOTI_VIB_INT;     /*  default value of notification vibration volume : 5 */
+
+       (void)setting_create_Gendial_field_titleItem(genlist,
+                                                    &(itc_group_item),
+                                                    SETTING_SOUND_TEXT_NOTIFICATION, NULL);
        ad->data_vib_volume =
            setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
                                             NULL,
                                             SWALLOW_Type_LAYOUT_SLIDER,
                                             IMG_VIBRATION_ICON_01,
                                             IMG_VIBRATION_ICON_02, vconf_value,
-                                            SETTING_SOUND_TEXT_NOTIFICATION,
+                                            NULL,//SETTING_SOUND_TEXT_NOTIFICATION,
                                             NULL,
                                             setting_profile_sound_main_vib_sound_slider_value_change_cb);
        if (ad->data_vib_volume) {
@@ -714,13 +734,17 @@ static Evas_Object *__get_main_list(void *data)
        if (vconf_get_int
            (VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, &vconf_value) < 0)
                vconf_value = SETTING_DEFAULT_HAPTIC_VIB_INT;   /*  default value of haptic vibration volume : 3 */
+
+       (void)setting_create_Gendial_field_titleItem(genlist,
+                                                    &(itc_group_item),
+                                                    "IDS_ST_BODY_SOUNDFEEDBACK_HAPTIC_FEEDBACK", NULL);
        ad->data_touch_vib =
            setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
                                             NULL,
                                             SWALLOW_Type_LAYOUT_SLIDER,
                                             IMG_VIBRATION_ICON_01,
                                             IMG_VIBRATION_ICON_02, vconf_value,
-                                            "IDS_ST_BODY_SOUNDFEEDBACK_HAPTIC_FEEDBACK", NULL,
+                                            NULL, NULL,
                                             setting_profile_sound_main_touchVib_sound_slider_value_change_cb);
        if (ad->data_touch_vib) {
                ad->data_touch_vib->win_main = ad->win_main_layout;
@@ -744,6 +768,9 @@ static Evas_Object *__get_main_list(void *data)
                                         ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
        /* Touch sounds */
+       if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &vconf_value) < 0)
+               vconf_value = TRUE;     /*  default value of touch sounds : on */
+
        ad->data_touch_sounds =
            setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
                                             setting_profile_sound_main_mouse_up_Gendial_list_cb,
@@ -765,29 +792,10 @@ static Evas_Object *__get_main_list(void *data)
        elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
                                         ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
-       /*  Screen lock sound */
-       if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &vconf_value) < 0)
-               vconf_value = 1;        /*  default value of lock/unlock sound : on */
-       ad->data_lock_sound =
-           setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
-                                            setting_profile_sound_main_mouse_up_Gendial_list_cb,
-                                            ad, SWALLOW_Type_1TOGGLE, NULL,
-                                            NULL, vconf_value,
-                                            SETTING_SOUND_TEXT_LOCK_SOUND,
-                                            NULL,
-                                            setting_profile_sound_main_Gendial_chk_cb);
-       if (ad->data_lock_sound) {
-               ad->data_lock_sound->userdata = ad;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_lock_sound is NULL");
-       }
-
-       item = elm_genlist_item_append(genlist, &itc_bottom_seperator, NULL, NULL,
-                               ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-
        __change_state_of_sliderbars(ad);
 
+       evas_object_smart_callback_add(genlist, "unrealized", __main_list_unrealized_cb, ad);
+
        ad->sub_view[SETTING_PROF_VIEW_VOL] = genlist;
 
        return ad->sub_view[SETTING_PROF_VIEW_VOL];
@@ -820,10 +828,7 @@ static Evas_Object *__get_ringtone_list(void *data)
        char *pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
        if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
        {
-               if(isEmulBin())
-                       pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
-               else
-                       pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+               pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
                vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_ringtone);
                if(vconf_ret < 0)
                        SETTING_TRACE_DEBUG("failed to set vconf");
@@ -845,42 +850,12 @@ static Evas_Object *__get_ringtone_list(void *data)
        FREE(pa_ringtone);
        G_FREE(sub_desc);
 
-       /*  a-2. vibration type */
-       char *setting_vib_type[SETTING_SOUND_VIB_TYPE_LEN] = {
-               _("IDS_ST_BODY_VIBRATION_1"),
-               _("IDS_ST_BODY_VIBRATION_2"),
-               _("IDS_ST_BODY_VIBRATION_3"),
-               _("IDS_ST_BODY_VIBRATION_4"),
-               _("IDS_ST_BODY_VIBRATION_5")
-       };
-       int value = 0;
-       vconf_get_int(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_INT, &value);
-       ad->data_call_alert_vib =
-           setting_create_Gendial_exp_parent_field(genlist,
-                                                   &(ad->itc_2text_3_parent),
-                                                   setting_profile_sound_main_mouse_up_Gendial_list_cb,
-                                                   ad, SWALLOW_Type_INVALID,
-                                                   SETTING_SOUND_TEXT_CALL_VIBRATION,
-                                                   setting_vib_type[value]);
-       if (ad->data_call_alert_vib) {
-               ad->data_call_alert_vib->int_slp_setting_binded =
-                       INT_SLP_SETTING_CALL_ALERT_VIB;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_call_alert_vib is NULL");
-       }
-
        /*  b. notification */
        (void)setting_create_Gendial_field_titleItem(genlist,
                                                     &(ad->itc_group_item),
                                                     SETTING_SOUND_TEXT_NOTIFICATION,
                                                     NULL);
 
-       char *repeat_type[SETTING_SOUND_REPEAT_TYPE_LEN] = {
-               _(SETTING_SOUND_TEXT_REPEAT_ONCE),
-               _(SETTING_SOUND_TEXT_REPEAT_2MIN),
-               _(SETTING_SOUND_TEXT_REPEAT_5MIN),
-               _(SETTING_SOUND_TEXT_REPEAT_10MIN)
-       };
        int repeat_value = 0;
 
        /*  b-1. msg ringtone */
@@ -919,7 +894,7 @@ static Evas_Object *__get_ringtone_list(void *data)
                                                    setting_profile_sound_main_mouse_up_Gendial_list_cb,
                                                    ad, SWALLOW_Type_INVALID,
                                                    SETTING_SOUND_TEXT_MSG_RINGTONE_REPEAT,
-                                                   repeat_type[repeat_value]);
+                                                   _(repeat_type[repeat_value]));
        if (ad->data_msg_alert_repeat) {
                ad->data_msg_alert_repeat->int_slp_setting_binded =
                        INT_SLP_SETTING_MSG_ALERT_REPEAT;
@@ -964,7 +939,7 @@ static Evas_Object *__get_ringtone_list(void *data)
                                                    setting_profile_sound_main_mouse_up_Gendial_list_cb,
                                                    ad, SWALLOW_Type_INVALID,
                                                    SETTING_SOUND_TEXT_EMAIL_RINGTONE_REPEAT,
-                                                   repeat_type[repeat_value]);
+                                                   _(repeat_type[repeat_value]));
        if (ad->data_email_alert_repeat) {
                ad->data_email_alert_repeat->int_slp_setting_binded =
                        INT_SLP_SETTING_EMAIL_ALERT_REPEAT;
@@ -984,14 +959,14 @@ static Evas_Object *__get_ringtone_list(void *data)
 
 static void __view_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       appcore_measure_start();
+       //appcore_measure_start();
        retm_if(event_info == NULL, "Invalid argmuent: event info is NULL");
        retm_if(data == NULL, "Invalid argmuent: data is NULL");
 
        SettingProfileUG *ad = (SettingProfileUG *) data;
 
-       if (device_haptic_stop_play(ad->hnd_hpt) != 0) {
-               SETTING_TRACE("ERROR device_haptic_stop_play");
+       if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
+               SETTING_TRACE("ERROR haptic_stop_all_effects");
                /* return; */
        }
        setting_profile_close_all_mm_players(ad);
@@ -1003,7 +978,7 @@ static void __view_change_cb(void *data, Evas_Object *obj, void *event_info)
        //SETTING_TRACE("tab_lable:%s", tab_lable);
        if (0 == safeStrCmp(tab_lable, VOLUME_STR)) {
                if(ad->hnd_hpt)
-                       device_haptic_stop_play(ad->hnd_hpt);
+                       haptic_stop_all_effects(ad->hnd_hpt);
                sub_view = __get_main_list(ad);
        } else if (0 == safeStrCmp(tab_lable, RINGTONE_STR)) {
                sub_view = __get_ringtone_list(ad);
@@ -1046,13 +1021,14 @@ static int setting_profile_sound_main_create(void *cb)
        ad->ctrl_bar = tabbar;
        elm_toolbar_shrink_mode_set(tabbar, ELM_TOOLBAR_SHRINK_EXPAND);
        elm_object_style_set(tabbar, "tabbar");
+       elm_toolbar_transverse_expanded_set(tabbar, EINA_TRUE);
 
        ad->ctrl_item[0] = elm_toolbar_item_append(tabbar,
-                                       NULL,
+                                       IMG_CTRL_ICON_VOLUME,
                                        VOLUME_STR, __view_change_cb, ad);
 
        ad->ctrl_item[1] = elm_toolbar_item_append(tabbar,
-                                       NULL,
+                                       IMG_CTRL_ICON_RINGTONE,
                                        RINGTONE_STR, __view_change_cb, ad);
 
        elm_toolbar_select_mode_set(tabbar, ELM_OBJECT_SELECT_MODE_ALWAYS);
@@ -1077,6 +1053,8 @@ static int setting_profile_sound_main_destroy(void *cb)
 
        SettingProfileUG *ad = (SettingProfileUG *) cb;
 
+       __setting_profile_ug_key_ungrab(ad);
+
        if (ad->ly_main != NULL) {
                //Fix the memory leak,
                //Manage ad->sub_view[] separately, unset first, then delete in together
@@ -1136,8 +1114,7 @@ static int setting_profile_sound_main_cleanup(void *cb)
  *
  ***************************************************/
 
-static void
-setting_profile_sound_main_click_softkey_cancel_cb(void *data,
+static void setting_profile_sound_main_click_softkey_cancel_cb(void *data,
                                                   Evas_Object *obj,
                                                   void *event_info)
 {
@@ -1149,8 +1126,8 @@ setting_profile_sound_main_click_softkey_cancel_cb(void *data,
        /* close mm plaer */
        setting_profile_close_all_mm_players(ad);
        /* close vibration */
-       if (device_haptic_stop_play(ad->hnd_hpt) != 0) {
-               SETTING_TRACE("ERROR device_haptic_stop_play");
+       if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
+               SETTING_TRACE("ERROR haptic_stop_all_effects");
                /* return; */
        }
 
@@ -1165,6 +1142,8 @@ static void setting_profile_sound_main_destroy_myfile_ug_cb(ui_gadget_h ug, void
        ret_if(priv == NULL);
        SettingProfileUG *ad = (SettingProfileUG *) priv;
 
+       __setting_profile_ug_key_grab(ad);
+
        if (ug) {
                ug_destroy(ug);
                ad->ug_loading = NULL;
@@ -1246,7 +1225,7 @@ setting_profile_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
        switch (mode) {
                case UG_MODE_FULLVIEW:
                        evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-                       elm_win_resize_object_add(ad->win_get, base);
+                       //elm_win_resize_object_add(ad->win_get, base);
                        evas_object_show(base);
                        break;
                default:
@@ -1286,21 +1265,18 @@ static void setting_profile_sound_main_create_myfile_ug(SettingProfileUG *ad)
                pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
                if (pa_cur_ringtone == NULL)
                {
-                       if(isEmulBin())
-                               pa_cur_ringtone = SETTING_DEFAULT_CALL_TONE_SDK;
-                       else
-                               pa_cur_ringtone = SETTING_DEFAULT_CALL_TONE;
+                       pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
                }
                dir_path = SETTING_PROFILE_SOUND_RINGTONES_PATH;
        } else if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_MSG_ALERT)) {
                pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
                if (pa_cur_ringtone == NULL)
-                       pa_cur_ringtone = SETTING_DEFAULT_MSG_TONE;
+                       pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
                dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
        } else if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_EMAIL_ALERT)) {
                pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR);
                if (pa_cur_ringtone == NULL)
-                       pa_cur_ringtone = SETTING_DEFAULT_EMAIL_TONE;
+                       pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_EMAIL_TONE);
                dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
        }
        SETTING_TRACE("pa_cur_ringtone:\t%s", pa_cur_ringtone);
@@ -1322,9 +1298,12 @@ static void setting_profile_sound_main_create_myfile_ug(SettingProfileUG *ad)
        FREE(cbs);
 
        /** @todo verify it's valid */
-       if(pa_cur_ringtone)
-               FREE(pa_cur_ringtone);
+       if(pa_cur_ringtone) {
+               free(pa_cur_ringtone);
+               pa_cur_ringtone = NULL;
+       }
 
+       __setting_profile_ug_key_ungrab(ad);
        return;
 }
 
@@ -1375,14 +1354,14 @@ setting_profile_sound_main_Gendial_chk_cb(void *data, Evas_Object *obj,
                        int err = 0;
                        char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
                        svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
-                       device_haptic_stop_play(ad->hnd_hpt);
-                       err = device_haptic_play_file(ad->hnd_hpt, pattern_file, 1, (int)(elm_slider_value_get(ad->data_vib_volume->eo_check)+0.5));
+                       haptic_stop_all_effects(ad->hnd_hpt);
+                       err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, (int)(elm_slider_value_get(ad->data_vib_volume->eo_check)+0.5) * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
 
                        if (err < 0)
                                SETTING_TRACE("Failed to play haptic monotone");
                } else {
-                       if (device_haptic_stop_play(ad->hnd_hpt) != 0) {
-                               SETTING_TRACE("ERROR device_haptic_stop_play");
+                       if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
+                               SETTING_TRACE("ERROR haptic_stop_all_effects");
                        }
                        setting_disable_genlist_item(ad->data_vib_volume->item);
                        setting_disable_genlist_item(ad->data_touch_vib->item);
@@ -1395,6 +1374,12 @@ setting_profile_sound_main_Gendial_chk_cb(void *data, Evas_Object *obj,
                        elm_check_state_set(list_item->eo_check, !state);
                }
        }
+       else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
+               if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, list_item->chk_status) < 0) {
+                       list_item->chk_status = !state;
+                       elm_check_state_set(list_item->eo_check, !state);
+               }
+       }
 
        /* end */
 
@@ -1417,7 +1402,7 @@ setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
        SettingProfileUG *ad = data;
 
        if(ad->hnd_hpt)
-                       device_haptic_stop_play(ad->hnd_hpt);
+               haptic_stop_all_effects(ad->hnd_hpt);
 
        SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
        if (!safeStrCmp(SETTING_SOUND_TEXT_CALL_RINGTONE, list_item->keyStr)
@@ -1459,14 +1444,14 @@ setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
                                int err = 0;
                                char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
                                svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
-                               device_haptic_stop_play(ad->hnd_hpt);
-                               err = device_haptic_play_file(ad->hnd_hpt, pattern_file, 1, (int)(elm_slider_value_get(ad->data_vib_volume->eo_check)+0.5));
+                               haptic_stop_all_effects(ad->hnd_hpt);
+                               err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, (int)(elm_slider_value_get(ad->data_vib_volume->eo_check)+0.5) * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
 
                                if (err < 0)
                                        SETTING_TRACE("Failed to play haptic monotone");
                        } else {
-                               if (device_haptic_stop_play(ad->hnd_hpt) != 0) {
-                                       SETTING_TRACE("ERROR device_haptic_stop_play");
+                               if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
+                                       SETTING_TRACE("ERROR haptic_stop_all_effects");
                                }
                                setting_disable_genlist_item(ad->data_vib_volume->item);
                                setting_disable_genlist_item(ad->data_touch_vib->item);
@@ -1474,26 +1459,17 @@ setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
                }
                return;
        }
-       /* additional */
-       else if (!safeStrCmp(SETTING_SOUND_TEXT_LOCK_SOUND, list_item->keyStr)) {
+       else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
                int old_status = elm_check_state_get(list_item->eo_check);
-               if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, !old_status) == 0) {
+               /* To do : set vconfkey for touch sounds */
+               if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, !old_status) == 0) {
                        /* new status */
                        list_item->chk_status = !old_status;
                        elm_check_state_set(list_item->eo_check, list_item->chk_status);
                }
-               return;
-       }
-       else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
-               int old_status = elm_check_state_get(list_item->eo_check);
-               /* To do : set vconfkey for touch sounds */
-
-               list_item->chk_status = !old_status;
-               elm_check_state_set(list_item->eo_check, list_item->chk_status);
        }
        /* end */
-       else if (ad->data_call_alert_vib == list_item
-                || ad->data_msg_alert_repeat == list_item
+       else if (ad->data_msg_alert_repeat == list_item
                 || ad->data_email_alert_repeat == list_item) {
                bool status = !elm_genlist_item_expanded_get(item);
                elm_genlist_item_expanded_set(item, status);
@@ -1519,6 +1495,7 @@ setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data
        if(list_item->chk_status != (int)(val+0.5))
        {
                list_item->chk_status = (int)(val+0.5);
+               sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
                SETTING_TRACE_DEBUG("ringtone volume is %d, %f", list_item->chk_status, val);
        }
 }
@@ -1542,6 +1519,8 @@ setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data,
        if(list_item->chk_status != (int)(val+0.5))
        {
                list_item->chk_status = val;
+               sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, list_item->chk_status);
+               SETTING_TRACE_DEBUG("notification volume is %d, %f", list_item->chk_status, val);
        }
 }
 
@@ -1563,6 +1542,8 @@ setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
        if(list_item->chk_status != (int)(val+0.5))
        {
                list_item->chk_status = val;
+               sound_manager_set_volume(SOUND_TYPE_MEDIA, list_item->chk_status);
+               SETTING_TRACE_DEBUG("media volume is %d, %f", list_item->chk_status, val);
        }
 }
 
@@ -1585,6 +1566,8 @@ settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
        if(list_item->chk_status != (int)(val+0.5))
        {
                list_item->chk_status = val;
+               sound_manager_set_volume(SOUND_TYPE_SYSTEM, list_item->chk_status);
+               SETTING_TRACE_DEBUG("system volume is %d, %f", list_item->chk_status, val);
        }
 }
 
@@ -1602,18 +1585,18 @@ setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data,
        SETTING_TRACE("val = %f", val);
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
-       list_item->chk_status = val;
 
        int value;
        int err;
 
        value = (int)(val + 0.5);       /*  to sync displayed value on slider */
+       list_item->chk_status = value;
        if (value != priv_val_int) {
-               int vib_volume = value;
+               vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, list_item->chk_status);
                char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
                svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
-               device_haptic_stop_play(ad->hnd_hpt);
-               err = device_haptic_play_file(ad->hnd_hpt, pattern_file, 1, vib_volume);
+               haptic_stop_all_effects(ad->hnd_hpt);
+               err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
 
                if (err < 0)
                        SETTING_TRACE("Failed to play haptic monotone");
@@ -1639,19 +1622,18 @@ setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data,
        Setting_GenGroupItem_Data *list_item =
            (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
-       list_item->chk_status = val;
 
        int value;
        int err;
 
        value = (int)(val + 0.5);       /*  to sync displayed value on slider */
+       list_item->chk_status = value;
        if (value != priv_val_int) {
-
-               int vib_volume = value; /* SETTING_VIB_VOL_MAX; */
+               vconf_set_int (VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, list_item->chk_status);
                char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
                svi_get_path(SVI_TYPE_VIB, SVI_VIB_OPERATION_VIBRATION, pattern_file, sizeof(pattern_file));
-               device_haptic_stop_play(ad->hnd_hpt);
-               err = device_haptic_play_file(ad->hnd_hpt, pattern_file, 1, vib_volume);
+               haptic_stop_all_effects(ad->hnd_hpt);
+               err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
 
                if (err < 0)
                        SETTING_TRACE("Failed to play haptic monotone");