tizen 2.3 release
[apps/home/settings.git] / setting-profile / src / setting-profile-sound-main.c
index fbd487c..fccb9e4 100755 (executable)
@@ -1,26 +1,32 @@
 /*
  * setting
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://floralicense.org/license/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
+
+#include <feedback.h>
+#include <mm_sound_private.h>
+#include <app_manager.h>
 #include <setting-profile-sound-main.h>
 #include <setting-profile.h>
 
-#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"
+#define STR_RINGTONES_AND_NOTIFICATIONS        "IDS_ST_HEADER_RINGTONES_AND_NOTIFICATIONS"
+#define STR_FEEDBACK                                                           "IDS_ST_HEADER_FEEDBACK"
 
 char *repeat_type[SETTING_SOUND_REPEAT_TYPE_LEN] = {
                SETTING_SOUND_TEXT_REPEAT_ONCE,
@@ -29,41 +35,80 @@ char *repeat_type[SETTING_SOUND_REPEAT_TYPE_LEN] = {
                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);
 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 setting_profile_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static Eina_Bool setting_profile_sound_main_click_softkey_cancel_cb(void *data, Elm_Object_Item *it);
+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_create_popup_with_sliders(void *data);
+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_call_vib_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);
+static void setting_profile_sound_main_tts_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+#define ADD_GENLIST(genlist, parent) \
+{\
+       genlist = elm_genlist_add(parent);\
+       retvm_if(genlist == NULL, NULL, "Cannot set genlist object as contento of layout");\
+       elm_genlist_realization_mode_set(genlist, EINA_TRUE);\
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);\
+       elm_object_style_set(genlist, "dialogue");\
+       elm_genlist_clear(genlist);\
+       evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);\
+       elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);\
+}
 
-static void settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
-                                                                       Evas_Object *obj, void *event_info);
+#define ADD_TOGGLE_MENU(item, genlist, item_style, keystr, value, g_style, data) \
+{\
+       item = setting_create_Gendial_field_def(genlist, &(item_style), \
+                                            setting_profile_sound_main_mouse_up_Gendial_list_cb, \
+                                            data, SWALLOW_Type_1ICON_1RADIO, NULL, \
+                                            NULL, value, \
+                                            keystr, NULL, \
+                                            setting_profile_sound_main_Gendial_chk_cb); \
+       if (item) {\
+               item->userdata = data;\
+               setting_genlist_item_groupstyle_set(item, g_style); \
+       } else {\
+               SETTING_TRACE_ERROR("%s item is NULL", keystr);\
+       }\
+}
 
+#define ADD_SLIDER_MENU(item, genlist, item_style, l_img, r_img, value, keystr, data, sld_cb, sld_max, start_cb, stop_cb, sound_group, g_style) \
+{ \
+       item = setting_create_Gendial_field_def(genlist, &(item_style), NULL,\
+                                            NULL, \
+                                            SWALLOW_Type_LAYOUT_SLIDER,\
+                                            l_img, r_img,\
+                                            value,\
+                                            keystr,\
+                                            NULL,\
+                                            sld_cb);\
+       if (item) {\
+               item->win_main = data->win_main_layout;\
+               item->evas = data->evas;\
+               item->isIndicatorVisible = TRUE;\
+               item->slider_min = 0;\
+               item->slider_max = sld_max;\
+               item->userdata = data;\
+               item->start_change_cb = start_cb;\
+               item->stop_change_cb = stop_cb;\
+               item->belongs_to = sound_group;\
+               setting_genlist_item_groupstyle_set(item, g_style); \
+       } else {\
+               SETTING_TRACE_ERROR("%s item is NULL", keystr);\
+       }\
+}
 
 setting_view setting_view_profile_sound_main = {
        .create = setting_profile_sound_main_create,
@@ -72,6 +117,8 @@ setting_view setting_view_profile_sound_main = {
        .cleanup = setting_profile_sound_main_cleanup,
 };
 
+extern char *setting_vib_type[];
+
 /* ***************************************************
  *
  *basic func
@@ -123,7 +170,7 @@ void __sound_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
        retm_if(event_info == NULL, "Invalid argument: event info is NULL");
        retm_if(data == NULL, "Invalid argument: data is NULL");
 
-       SettingProfileUG *ad = (SettingProfileUG *) data;
+       //SettingProfileUG *ad = (SettingProfileUG *) data;
        Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
        Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
        elm_genlist_item_selected_set(subitem, 0);
@@ -145,21 +192,7 @@ void __sound_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
                elm_genlist_item_update(data_parentItem->item);
        }
 
-       if (data_parentItem->int_slp_setting_binded ==
-           INT_SLP_SETTING_CALL_ALERT_VIB) {
-           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,
-                                              setting_profile_get_call_playing_vib_by_vconf_value
-                                              (data_subItem->chk_status));
-       }
+       elm_genlist_item_expanded_set(parentItem, EINA_FALSE);
 }
 
 static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
@@ -173,45 +206,18 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
        Evas_Object *scroller = elm_object_item_widget_get(parentItem);
 
        Evas_Object *rgd;
-       if (data_parentItem == ad->data_call_alert_vib) {
-               rgd = elm_radio_add(scroller);
-               elm_radio_value_set(rgd, -1);
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &(ad->itc_1icon_1text_sub),
-                                                    __sound_sub_list_sel_cb,
-                                                    ad, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    0,
-                                                    "IDS_ST_BODY_VIBRATION_1",
-                                                    NULL);
-
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &(ad->itc_1icon_1text_sub),
-                                                    __sound_sub_list_sel_cb,
-                                                    ad, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    1,
-                                                    "IDS_ST_BODY_VIBRATION_2",
-                                                    NULL);
-
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &(ad->itc_1icon_1text_sub),
-                                                    __sound_sub_list_sel_cb,
-                                                    ad, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    2,
-                                                    "IDS_ST_BODY_VIBRATION_3",
-                                                    NULL);
-
-               setting_update_chk_status(rgd,
-                                         data_parentItem->
-                                         int_slp_setting_binded);
-
-       } else if (data_parentItem == ad->data_msg_alert_repeat
+       if (data_parentItem == ad->data_msg_alert_repeat
                   || data_parentItem == ad->data_email_alert_repeat) {
                rgd = elm_radio_add(scroller);
+               elm_object_style_set(rgd, "list");
+               evas_object_propagate_events_set(rgd, EINA_TRUE);
                elm_radio_value_set(rgd, -1);
-               setting_create_Gendial_exp_sub_field(scroller,
+               if(parentItem)
+                       elm_object_item_signal_emit(parentItem, "elm,state,center", "");
+               if(data_parentItem)
+                       data_parentItem->group_style = SETTING_GROUP_STYLE_CENTER;
+
+               ad->data_sound_text_repeat_once = setting_create_Gendial_exp_sub_field(scroller,
                                                     &(ad->itc_1icon_1text_sub),
                                                     __sound_sub_list_sel_cb,
                                                     ad, parentItem,
@@ -219,8 +225,12 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
                                                     0,
                                                     _(SETTING_SOUND_TEXT_REPEAT_ONCE),
                                                     NULL);
-
-               setting_create_Gendial_exp_sub_field(scroller,
+               if(ad->data_sound_text_repeat_once)
+               {
+                       ad->data_sound_text_repeat_once->userdata = ad;
+                       setting_genlist_item_groupstyle_set(ad->data_sound_text_repeat_once, SETTING_GROUP_STYLE_CENTER);
+               }
+               ad->data_sound_text_repeat_2min = setting_create_Gendial_exp_sub_field(scroller,
                                                     &(ad->itc_1icon_1text_sub),
                                                     __sound_sub_list_sel_cb,
                                                     ad, parentItem,
@@ -228,8 +238,12 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
                                                     1,
                                                     _(SETTING_SOUND_TEXT_REPEAT_2MIN),
                                                     NULL);
-
-               setting_create_Gendial_exp_sub_field(scroller,
+               if(ad->data_sound_text_repeat_2min)
+               {
+                       ad->data_sound_text_repeat_2min->userdata = ad;
+                       setting_genlist_item_groupstyle_set(ad->data_sound_text_repeat_2min, SETTING_GROUP_STYLE_CENTER);
+               }
+               ad->data_sound_text_repeat_5min = setting_create_Gendial_exp_sub_field(scroller,
                                                     &(ad->itc_1icon_1text_sub),
                                                     __sound_sub_list_sel_cb,
                                                     ad, parentItem,
@@ -237,7 +251,12 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
                                                     2,
                                                     _(SETTING_SOUND_TEXT_REPEAT_5MIN),
                                                     NULL);
-               setting_create_Gendial_exp_sub_field(scroller,
+               if(ad->data_sound_text_repeat_5min)
+               {
+                       ad->data_sound_text_repeat_5min->userdata = ad;
+                       setting_genlist_item_groupstyle_set(ad->data_sound_text_repeat_5min, SETTING_GROUP_STYLE_CENTER);
+               }
+               ad->data_sound_text_repeat_10min = setting_create_Gendial_exp_sub_field(scroller,
                                                     &(ad->itc_1icon_1text_sub),
                                                     __sound_sub_list_sel_cb,
                                                     ad, parentItem,
@@ -245,48 +264,193 @@ static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
                                                     3,
                                                     _(SETTING_SOUND_TEXT_REPEAT_10MIN),
                                                     NULL);
-
-               setting_update_chk_status(rgd,
-                                         data_parentItem->int_slp_setting_binded);
+               if(ad->data_sound_text_repeat_10min)
+               {
+                       ad->data_sound_text_repeat_10min->userdata = ad;
+                       setting_genlist_item_groupstyle_set(ad->data_sound_text_repeat_10min, SETTING_GROUP_STYLE_BOTTOM);
+               }
+               if(data_parentItem) {
+                       setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
+               }
+       }
+}
+static void __sound_con_cb(void *data, Evas_Object *obj,
+                                               void *event_info)
+{
+       ret_if(data == NULL || event_info == NULL);
+       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(item);
+       char *cb_type = data;
+
+       if (0 == safeStrCmp(cb_type, "drag")
+           || 0 == safeStrCmp(cb_type, "longpressed")) {
+               //Evas_Object *base_view = (Evas_Object *) elm_genlist_item_object_get(item);
+               //edje_object_signal_emit(base_view, "mouse,out", "touch_arrow");
+       } else if (0 == safeStrCmp(cb_type, "contracted")) {
+               if(item)
+               {
+                       elm_genlist_item_subitems_clear(item);
+                       elm_object_item_signal_emit(item, "elm,state,bottom", "");
+               }
+               if(data_parentItem)
+                       data_parentItem->group_style = SETTING_GROUP_STYLE_BOTTOM;
        }
 }
 
-static void __mm_player_msg_cb(void *user_param)
+static Eina_Bool __play_ringtone_sound_idle_cb(void *data)
 {
-       ret_if(user_param == NULL);
-       SettingProfileUG *ad = (SettingProfileUG *)user_param;
-       /*switch(message)
+       SETTING_TRACE_BEGIN;
+       retv_if(!data, EINA_FALSE);
+
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+       SettingProfileUG *ad = list_item->userdata;
+
+       if(list_item->eo_check)
        {
-               case MM_MESSAGE_END_OF_STREAM:
-                       SETTING_TRACE_DEBUG("End of Stream");
-                       setting_profile_close_all_mm_players(ad);
-                       return TRUE;
-               default:
-                       return FALSE;
-       }*/
-       SETTING_TRACE("completed_cb is called.");
-       setting_profile_close_all_mm_players(ad);
+               double current;
+               current = elm_slider_value_get(list_item->eo_check);
+               list_item->chk_status = (int)(current+0.5);
+       }
+
+       if(ad->mp_ringtone == NULL)
+       {
+               setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
+               char    *pa_tone_path = NULL;
+               pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+               if(pa_tone_path == NULL)
+               {
+                       if(isEmulBin())
+                               pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+                       else
+                               pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+
+                       if(vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
+                               FREE(pa_tone_path);
+                               return EINA_FALSE;
+                       }
+               }
+               if(list_item->chk_status > 0)
+               {
+                       setting_profile_play_sound_origin(&(ad->mp_ringtone), ad, NULL,
+                                                                                               pa_tone_path,
+                                                                                               (float)list_item->chk_status,
+                                                                                               SOUND_TYPE_RINGTONE);
+               }
+       }
+       else
+       {
+               player_state_e state;
+               player_get_state(*(ad->mp_ringtone), &state);
+               SETTING_TRACE("ringtone player status : %d", state);
+               if(state == PLAYER_STATE_PAUSED)
+               {
+                       player_start(*(ad->mp_ringtone));
+               }
+               else if(state == PLAYER_STATE_PLAYING)
+               {
+                       //bool is_muted = 0;
+                       //player_is_muted(*(ad->mp_ringtone), &is_muted);
+                       //SETTING_TRACE("ringtone player is muted : %d", is_muted);
+                       if(/*is_muted &&*/ ad->sound_on)
+                               player_set_mute(*(ad->mp_ringtone), 0);
+               }
+       }
+
+       ad->play_ringtone_idler = NULL;
+       return EINA_FALSE;
 }
 
 void __ringtone_start_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
+       SETTING_TRACE_BEGIN;
        ret_if(data == NULL);
 
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
+       ret_if(ad == NULL);
+       //if(haptic_stop_all_effects(ad->hnd_hpt) != 0){
+       //      SETTING_TRACE("Error,haptic_stop_all_effects")
+       //}
 
        ad->cur_vol_type = SETTING_VOL_TYPE_RINGTONE;
+
+       setting_profile_create_warning_popup_during_call(ad);
+       if(ad->no_play_popup)
+               return;
+#if 0
+       if(ad->mp_ringtone == NULL)
+       {
+               setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
+               if(list_item->chk_status > 0)
+               {
+                       char    *pa_tone_path = NULL;
+                       pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+                       if(pa_tone_path == NULL)
+                       {
+                               if(isEmulBin())
+                                       pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+                               else
+                                       pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+
+                               if(vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
+                                       FREE(pa_tone_path);
+                                       return;
+                               }
+                       }
+                       setting_profile_play_sound_origin(&(ad->mp_ringtone), ad, NULL,
+                                                                                               pa_tone_path,
+                                                                                               (float)list_item->chk_status,
+                                                                                               SOUND_TYPE_RINGTONE);
+               }
+       }
+#else
        setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
+#endif
 }
 void __noti_start_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
+       SETTING_TRACE_BEGIN;
        ret_if(data == NULL);
 
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
+       ret_if(ad == NULL);
+
+       //if(haptic_stop_all_effects(ad->hnd_hpt) != 0){
+       //      SETTING_TRACE("Error,haptic_stop_all_effects")
+       //}
 
        ad->cur_vol_type = SETTING_VOL_TYPE_NOTIFICATION;
+
+       setting_profile_create_warning_popup_during_call(ad);
+       if(ad->no_play_popup)
+               return;
+#if 0
+       if(ad->mp_noti == NULL)
+       {
+               setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_NOTIFICATION);
+               if(list_item->chk_status > 0)
+               {
+                       char    *pa_tone_path = NULL;
+                       pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_RINGTONE_PATH_STR);
+                       if(pa_tone_path == NULL)
+                       {
+                               pa_tone_path = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
+
+                               if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_RINGTONE_PATH_STR, pa_tone_path) < 0) {
+                                       FREE(pa_tone_path);
+                                       return;
+                               }
+                       }
+                       setting_profile_play_sound_origin(&(ad->mp_noti), ad, NULL,
+                                                                                               pa_tone_path,
+                                                                                               (float)list_item->chk_status,
+                                                                                               SOUND_TYPE_NOTIFICATION);
+               }
+       }
+#else
        setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_NOTIFICATION);
+#endif
 }
 void __media_start_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
@@ -295,8 +459,35 @@ void __media_start_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(haptic_stop_all_effects(ad->hnd_hpt) != 0){
+               SETTING_TRACE("Error,haptic_stop_all_effects")
+       }
+
        ad->cur_vol_type = SETTING_VOL_TYPE_MEDIA;
+
+       setting_profile_create_warning_popup_during_call(ad);
+       if(ad->no_play_popup)
+               return;
+#if 0
+       if(ad->mp_media == NULL)
+       {
+               sound_type_e type;
+               sound_manager_get_current_sound_type(&type);
+               if(type != SOUND_TYPE_MEDIA)
+               {
+                       setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_MEDIA);
+                       if(list_item->chk_status > 0)
+                       {
+                               setting_profile_play_sound_origin(&(ad->mp_media), ad, NULL,
+                                                                                               SETTING_DEFAULT_MEDIA_TONE,
+                                                                                               (float)list_item->chk_status,
+                                                                                               SOUND_TYPE_MEDIA);
+                       }
+               }
+       }
+#else
        setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_MEDIA);
+#endif
 }
 void __system_start_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
@@ -305,8 +496,17 @@ void __system_start_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(haptic_stop_all_effects(ad->hnd_hpt) != 0){
+               SETTING_TRACE("Error,haptic_stop_all_effects")
+       }
+
        ad->cur_vol_type = SETTING_VOL_TYPE_SYSTEM;
-       setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_SYSTEM);
+
+       setting_profile_create_warning_popup_during_call(ad);
+       if(ad->no_play_popup)
+               return;
+
+       setting_profile_close_all_mm_players(ad);
 }
 
 void __noti_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
@@ -319,17 +519,18 @@ 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");
+       if(list_item->chk_status > 0)
+       {
+               SETTING_TRACE_DEBUG("play_value %d", list_item->chk_status);
+               int err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_NOTI_PREVIEW_VIB,
+                                                                                                       1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
+               if(err != 0)
+                       SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
+       }
 }
 
 void __haptic_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
-       {
+{
        SETTING_TRACE_BEGIN;
        ret_if(data == NULL);
 
@@ -339,512 +540,194 @@ 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");
+       if(list_item->chk_status > 0)
+       {
+               SETTING_TRACE_DEBUG("play_value %d", list_item->chk_status);
+               int err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_HAPTIC_PREVIEW_VIB,
+                                                                                                       1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
+               if(err != 0)
+                       SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
+       }
 }
 
 void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
        SETTING_TRACE_BEGIN;
+#if 0
        ret_if(data == NULL);
 
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
 
-       char    *pa_tone_path = NULL;
-       player_h **player = NULL;
+       SETTING_TRACE("cur_vol_type : %d", ad->cur_vol_type);
 
        double   value = elm_slider_value_get(obj);
-       list_item->chk_status = (unsigned int)(value+0.5);
+       SETTING_TRACE("value : %f", value);
+       list_item->chk_status = (int)(value+0.5);
+       SETTING_TRACE("list_item->chk_status : %d", list_item->chk_status);
+       elm_slider_value_set(obj, list_item->chk_status);
 
+       /* Change left icon of sliders */
+       char *left_icon = NULL;
        switch(ad->cur_vol_type)
        {
-               case SETTING_VOL_TYPE_RINGTONE:
-                       sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
-                       player = &(ad->mp_ringtone);
-                       if(*player != NULL)
-                               return;
-                       SETTING_TRACE_DEBUG("ringtone player will be created");
-                       pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
-                       if(pa_tone_path == NULL)
-                       {
-                               pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
-
-                               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,
-                                                       (float)value,
-                                                       SOUND_TYPE_RINGTONE);
-                       break;
-               case SETTING_VOL_TYPE_NOTIFICATION:
-                       sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, list_item->chk_status);
-                       player = &(ad->mp_noti);
-                       if(*player != NULL)
-                               return;
-                       SETTING_TRACE_DEBUG("noti player will be created");
-                       pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
-                       if(pa_tone_path == NULL)
-                       {
-                               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,
-                                                       (float)value,
-                                                       SOUND_TYPE_NOTIFICATION);
+               case SETTING_VOL_TYPE_RINGTONE :
+                       left_icon = setting_profile_get_slider_icon(SND_SLIDER_CALL, list_item->chk_status);
                        break;
-               case SETTING_VOL_TYPE_MEDIA:
-                       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");
-                       pa_tone_path = (char*)strdup(SETTING_DEFAULT_MEDIA_TONE);
-
-                       sound_type_e type;
-                       int ret = sound_manager_get_current_sound_type(&type);
-                       SETTING_TRACE("sound_manager_get_current_sound_type() : type %d, ret = %d", type, ret);
-                       if(type != SOUND_TYPE_MEDIA)
-                       {
-                               setting_profile_play_sound_origin(player, ad, __mm_player_msg_cb,
-                                                               pa_tone_path,
-                                                               (float)value,
-                                                               SOUND_TYPE_MEDIA);
-                       }
+               case SETTING_VOL_TYPE_NOTIFICATION :
+                       left_icon = setting_profile_get_slider_icon(SND_SLIDER_NOTI, list_item->chk_status);
                        break;
-               case SETTING_VOL_TYPE_SYSTEM:
-                       sound_manager_set_volume(SOUND_TYPE_SYSTEM, list_item->chk_status);
-                       player = &(ad->mp_sys);
-                       if(*player != NULL)
-                               return;
-                       SETTING_TRACE_DEBUG("ringtone player will be created");
-
-                       feedback_initialize();
-                       feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_SIP);
-                       feedback_deinitialize();
+               case SETTING_VOL_TYPE_MEDIA :
+                       /* MEDIA has just one icon type. No need to change */
+                       return;
+               case SETTING_VOL_TYPE_SYSTEM :
+                       left_icon = setting_profile_get_slider_icon(SND_SLIDER_SYSTEM, list_item->chk_status);
                        break;
                default:
-               return;
-       }
-
-       if(pa_tone_path) {
-               free(pa_tone_path);
-               pa_tone_path = NULL;
+                       break;
        }
 
-       SETTING_TRACE_END;
-}
+       if(!left_icon)
+               return;
 
-void __vibration_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
-{
+       Evas_Object *cur_icon = elm_object_content_unset(obj);
+       if(cur_icon)
+       {
+               evas_object_del(cur_icon);
+               cur_icon = NULL;
+       }
+       Evas_Object *icon = elm_icon_add(obj);
+       elm_image_file_set(icon, left_icon, NULL);
+       evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+       elm_object_content_set(obj, icon);
+       evas_object_show(icon);
+#else
        ret_if(data == NULL);
-
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
-       SettingProfileUG *ad = list_item->userdata;
-
-       if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
-               SETTING_TRACE("ERROR haptic_stop_all_effects");
-               /* return; */
+       SETTING_TRACE("chk_status : %d, slider : %f", list_item->chk_status, elm_slider_value_get(obj));
+       if(list_item->chk_status == 0)
+       {
+               elm_slider_value_set(obj, 0.0);
        }
-#if DISABLED_CODE
-       double value = 0.0;
-       switch(ad->cur_vol_type)
+       else if(list_item->chk_status == 15)
        {
-               case SETTING_VOL_TYPE_NOTI_VIB:
-                       if(ad->data_vib_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_vib_volume->eo_check);
-                               list_item->chk_status = (int)(value + 0.5);
-                               vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, list_item->chk_status);
-                               if(value < 0.5)
-                                       elm_slider_value_set(ad->data_vib_volume->eo_check, 0);
-                               else
-                                       elm_slider_value_set(ad->data_vib_volume->eo_check, list_item->chk_status);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_HAPTIC_VIB:
-                       if(ad->data_touch_vib)
-                       {
-                               value = elm_slider_value_get(ad->data_touch_vib->eo_check);
-                               list_item->chk_status = (int)(value + 0.5);
-                               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, list_item->chk_status);
-                               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_BAK_INT, list_item->chk_status);
-                               if(value < 0.5)
-                                       elm_slider_value_set(ad->data_touch_vib->eo_check, 0);
-                               else
-                                       elm_slider_value_set(ad->data_touch_vib->eo_check, (unsigned int)(value+0.5));
-                       }
-                       break;
-               default:
-                       break;
+               elm_slider_value_set(obj, 15.0);
        }
 #endif
-       ad->cur_vol_type = SETTING_VOL_TYPE_MAX;
        SETTING_TRACE_END;
 }
 
-static void __main_list_unrealized_cb(void *data, Evas_Object *obj, void *event_info)
+void __vibration_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       SETTING_TRACE_BEGIN;
        ret_if(data == NULL);
 
-       SettingProfileUG *ad = (SettingProfileUG *) data;
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+       //SettingProfileUG *ad = list_item->userdata;
 
-       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+       double   value = elm_slider_value_get(obj);
+       list_item->chk_status = (int)(value+0.5);
+       elm_slider_value_set(obj, list_item->chk_status);
 
-       /* 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);
+       SETTING_TRACE_END;
 }
 
-static Evas_Object *__get_main_list(void *data)
+void ___sound_destroy_ug_cb(ui_gadget_h ug, void *priv)
 {
-       retv_if(data == NULL, NULL);
-
-       SettingProfileUG *ad = (SettingProfileUG *) data;
-
-       __setting_profile_ug_key_grab(ad);
+       ret_if(priv == NULL);
+       SettingProfileUG *ad =  priv;
+       if (ug) {
+               setting_ug_destroy(ug);
+               ad->ug_loading = NULL;
+       }
+}
 
-       if(ad->sub_view[SETTING_PROF_VIEW_VOL])
-               return ad->sub_view[SETTING_PROF_VIEW_VOL];
+char* __get_sound_mode_str(void)
+{
+       // update radio
+       int sound = 0;
+       int vibration = 0;
+       vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
+       vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vibration);
+
+       if(sound && !vibration)
+               return (char*)g_strdup("IDS_ST_HEADER_SOUND");
+       else if(vibration && !sound)
+               return (char*)g_strdup("IDS_ST_BODY_CALLALERTTYPE_VIBRATION");
+       else if(!vibration && !sound)
+               return (char*)g_strdup("IDS_ST_BODY_MUTE");
+       else
+               return NULL;
+}
 
-       Evas_Object *genlist = elm_genlist_add(ad->navi_bar);
-       elm_object_style_set(genlist, "dialogue");
-       retvm_if(genlist == NULL, NULL,
-                "Cannot set genlist object as contento of layout");
-       elm_genlist_clear(genlist);     /* first to clear list */
+static void __get_lite_main_list(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       ret_if(!data);
+       SettingProfileUG *ad = (SettingProfileUG *)data;
 
        int vconf_value = 0;
-       int mm_value = 0;
+       char *sub_desc = NULL;
 
-       Elm_Object_Item *item = elm_genlist_item_append(genlist,
-                                                               &(ad->itc_seperator), NULL, NULL,
-                                                               ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+       Evas_Object *genlist = NULL;
+       ADD_GENLIST(genlist, ad->navi_bar);
+       ad->gl_lite_main = genlist;
+       elm_genlist_block_count_set(genlist, 3);
+       setting_enable_expandable_genlist(genlist, ad, __sound_exp_cb, NULL);
 
-       /* a.use sound */
-       if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &vconf_value) < 0)
-               vconf_value = TRUE;     /*  default value of sound : on */
-       ad->data_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_SOUND, NULL,
-                                            setting_profile_sound_main_Gendial_chk_cb);
-       if (ad->data_sound) {
-               ad->data_sound->userdata = ad;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_sound is NULL");
-       }
-       /* b.use vib */
-       if (vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vconf_value) < 0)
-               vconf_value = TRUE;     /*  default value of vibration : on */
-       ad->data_vibration =
-           setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
+       /* 1. Sound mode */
+       sub_desc = __get_sound_mode_str();
+       ad->data_sound_mode =
+           setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
                                             setting_profile_sound_main_mouse_up_Gendial_list_cb,
-                                            ad, SWALLOW_Type_1TOGGLE, NULL,
-                                            NULL, vconf_value,
-                                            SETTING_SOUND_TEXT_VIBRATION, NULL,
-                                            setting_profile_sound_main_Gendial_chk_cb);
-       if (ad->data_vibration) {
-               ad->data_vibration->userdata = ad;
+                                            ad, SWALLOW_Type_INVALID, NULL,
+                                            NULL, 0, "IDS_ST_OPT_SOUND_MODE_ABB",
+                                            sub_desc, NULL);
+       if (ad->data_sound_mode) {
+               ad->data_sound_mode->userdata = ad;
+               setting_genlist_item_groupstyle_set(ad->data_sound_mode, SETTING_GROUP_STYLE_TOP);
        } else {
-               SETTING_TRACE_ERROR("ad->data_vibration is NULL");
+               SETTING_TRACE_ERROR("ad->data_call_alert_tone is NULL");
        }
 
-       (void)setting_create_Gendial_field_titleItem(genlist,
-                                                    &(ad->itc_group_item),
-                                                    "IDS_ST_BODY_VOLUME", NULL);
+       G_FREE(sub_desc);
 
-       /* d.call volumn. */
-       if(sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value) < 0)
-               mm_value = SETTING_DEFAULT_RINGTONE_VOL_INT;
-       ad->data_call_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_INCOMING_CALL,
-                                            NULL,
-                                            setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb);
-       if (ad->data_call_volume) {
-               ad->data_call_volume->win_main = ad->win_main_layout;
-               ad->data_call_volume->evas = ad->evas;
-               ad->data_call_volume->isIndicatorVisible = true;
-               ad->data_call_volume->slider_min = 0;
-               ad->data_call_volume->slider_max = SETTING_SOUND_VOL_MAX;
-               ad->data_call_volume->userdata = ad;
-               ad->data_call_volume->start_change_cb = __ringtone_start_change_cb;
-               ad->data_call_volume->stop_change_cb = __volume_stop_change_cb;
-               ad->data_call_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_call_volume is NULL");
-       }
+       /* 2. Volume */
+       setting_create_Gendial_field_def(genlist, &itc_1text,
+                                            setting_profile_sound_main_mouse_up_Gendial_list_cb,
+                                            data, SWALLOW_Type_INVALID, NULL,
+                                            NULL, 0,
+                                            VOLUME_STR, NULL, NULL);
 
-       /* 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,
-                                            NULL,//SETTING_SOUND_TEXT_NOTIFICATION,
-                                            NULL,
-                                            setting_profile_sound_main_noti_sound_slider_value_change_cb);
-       if (ad->data_noti_volume) {
-               ad->data_noti_volume->win_main = ad->win_main_layout;
-               ad->data_noti_volume->evas = ad->evas;
-               ad->data_noti_volume->isIndicatorVisible = true;
-               ad->data_noti_volume->slider_min = 0;
-               ad->data_noti_volume->slider_max = SETTING_SOUND_VOL_MAX;
-               ad->data_noti_volume->userdata = ad;
-               ad->data_noti_volume->start_change_cb = __noti_start_change_cb;
-               ad->data_noti_volume->stop_change_cb = __volume_stop_change_cb;
-               ad->data_noti_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_noti_volume is NULL");
-       }
-
-       /* 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,
-                                            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;
-               ad->data_media_volume->evas = ad->evas;
-               ad->data_media_volume->isIndicatorVisible = true;
-               ad->data_media_volume->slider_min = 0;
-               ad->data_media_volume->slider_max = SETTING_SOUND_VOL_MAX;
-               ad->data_media_volume->userdata = ad;
-               ad->data_media_volume->start_change_cb = __media_start_change_cb;
-               ad->data_media_volume->stop_change_cb = __volume_stop_change_cb;
-               ad->data_media_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_media_volume is NULL");
-       }
-
-       /* 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,
-                                            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;
-               ad->data_touch_volume->evas = ad->evas;
-               ad->data_touch_volume->isIndicatorVisible = true;
-               ad->data_touch_volume->slider_min = 0;
-               ad->data_touch_volume->slider_max = SETTING_SOUND_VOL_MAX;
-               ad->data_touch_volume->userdata = ad;
-               ad->data_touch_volume->start_change_cb = __system_start_change_cb;
-               ad->data_touch_volume->stop_change_cb = __volume_stop_change_cb;
-               ad->data_touch_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_touch_volume is NULL");
-       }
-
-       (void)setting_create_Gendial_field_titleItem(genlist,
-                                                    &(ad->itc_group_item),
-                                                    "IDS_ST_BODY_CALLALERTTYPE_VIBRATION", NULL);
-
-       /* f.noti vib */
-       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,
-                                            NULL,//SETTING_SOUND_TEXT_NOTIFICATION,
-                                            NULL,
-                                            setting_profile_sound_main_vib_sound_slider_value_change_cb);
-       if (ad->data_vib_volume) {
-               ad->data_vib_volume->win_main = ad->win_main_layout;
-               ad->data_vib_volume->evas = ad->evas;
-               ad->data_vib_volume->isIndicatorVisible = true;
-               ad->data_vib_volume->slider_min = 0;
-               ad->data_vib_volume->slider_max = SETTING_VIB_VOL_MAX;
-               ad->data_vib_volume->userdata = ad;
-               ad->data_vib_volume->start_change_cb = __noti_vib_start_change_cb;
-               ad->data_vib_volume->stop_change_cb = __vibration_stop_change_cb;
-               ad->data_vib_volume->belongs_to = SETTING_VOL_VIBRATION_GROUP;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_vib_volume is NULL");
-       }
-
-       /* i.haptic vib */
-       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,
-                                            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;
-               ad->data_touch_vib->evas = ad->evas;
-               ad->data_touch_vib->isIndicatorVisible = true;
-               ad->data_touch_vib->slider_min = 0;
-               ad->data_touch_vib->slider_max = SETTING_VIB_VOL_MAX;
-               ad->data_touch_vib->userdata = ad;
-               ad->data_touch_vib->start_change_cb = __haptic_vib_start_change_cb;
-               ad->data_touch_vib->stop_change_cb = __vibration_stop_change_cb;
-               ad->data_touch_vib->belongs_to = SETTING_VOL_VIBRATION_GROUP;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_touch_vib is NULL");
-       }
-
-       setting_create_Gendial_field_def(genlist, &(ad->itc_bg_1icon),
-                                        NULL, ad,
-                                        SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
-                                        NULL, NULL, 0, SOUND_DESC, NULL, NULL);
-       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);
-
-       /* 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,
-                                            ad, SWALLOW_Type_1TOGGLE, NULL,
-                                            NULL, vconf_value,
-                                            "IDS_ST_BODY_TOUCH_SOUNDS",
-                                            NULL,
-                                            setting_profile_sound_main_Gendial_chk_cb);
-       if (ad->data_touch_sounds) {
-               ad->data_touch_sounds->userdata = ad;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_lock_sound is NULL");
-       }
-
-       setting_create_Gendial_field_def(genlist, &(ad->itc_bg_1icon),
-                                        NULL, ad,
-                                        SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
-                                        NULL, NULL, 0, "IDS_ST_BODY_PLAY_SOUND_WHEN_MAKING_SCREEN_SELECTION", NULL, NULL);
-       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);
-
-       __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];
-}
-
-static Evas_Object *__get_ringtone_list(void *data)
-{
-       retv_if(data == NULL, NULL);
-       SettingProfileUG *ad = (SettingProfileUG *) data;
-
-       if(ad->sub_view[SETTING_PROF_VIEW_RTN])
-               return ad->sub_view[SETTING_PROF_VIEW_RTN];
-
-       Evas_Object *genlist = elm_genlist_add(ad->navi_bar);
-       elm_object_style_set(genlist, "dialogue");
-       retvm_if(genlist == NULL, NULL,
-                "Cannot set genlist object as contento of layout");
-       elm_genlist_clear(genlist);     /* first to clear list */
-       setting_enable_expandable_genlist(genlist, ad, __sound_exp_cb, NULL);
+       ADD_GL_SEPARATOR(genlist)
 
-       /*  a. incoming call group */
+       /* Group title : Ringtones and notifications */
        (void)setting_create_Gendial_field_titleItem(genlist,
-                                                    &(ad->itc_group_item),
-                                                    SETTING_SOUND_TEXT_INCOMING_CALL,
-                                                    NULL);
-
-       /*  a-1. ringtone */
+                                                    &itc_group_item,
+                                                    _(STR_RINGTONES_AND_NOTIFICATIONS), NULL);
+       /* 3. Ringtones */
        int vconf_ret = 0;
-       char *sub_desc = NULL;
        char *pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
        if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
        {
-               pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+               if(isEmulBin())
+                       pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+               else
+                       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");
        }
-       sub_desc = setting_file_basename(pa_ringtone);
+       sub_desc = setting_media_basename(pa_ringtone);
 
        ad->data_call_alert_tone =
            setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
                                             setting_profile_sound_main_mouse_up_Gendial_list_cb,
                                             ad, SWALLOW_Type_INVALID, NULL,
-                                            NULL, 0, SETTING_SOUND_TEXT_CALL_RINGTONE,
+                                            NULL, 0, SETTING_SOUND_TEXT_RINGTONES,
                                             sub_desc, NULL);
        if (ad->data_call_alert_tone) {
                ad->data_call_alert_tone->userdata = ad;
+               setting_genlist_item_groupstyle_set(ad->data_call_alert_tone, SETTING_GROUP_STYLE_TOP);
        } else {
                SETTING_TRACE_ERROR("ad->data_call_alert_tone is NULL");
        }
@@ -852,15 +735,7 @@ static Evas_Object *__get_ringtone_list(void *data)
        FREE(pa_ringtone);
        G_FREE(sub_desc);
 
-       /*  b. notification */
-       (void)setting_create_Gendial_field_titleItem(genlist,
-                                                    &(ad->itc_group_item),
-                                                    SETTING_SOUND_TEXT_NOTIFICATION,
-                                                    NULL);
-
-       int repeat_value = 0;
-
-       /*  b-1. msg ringtone */
+       /* 4. Notification alert */
        pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
        if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
        {
@@ -869,139 +744,78 @@ static Evas_Object *__get_ringtone_list(void *data)
                if(vconf_ret < 0)
                        SETTING_TRACE_DEBUG("failed to set vconf");
        }
-       sub_desc = setting_file_basename(pa_ringtone);
+       sub_desc = setting_media_basename(pa_ringtone);
 
        ad->data_msg_alert_tone =
            setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
                                             setting_profile_sound_main_mouse_up_Gendial_list_cb,
                                             ad, SWALLOW_Type_INVALID, NULL,
                                             NULL, 0,
-                                            SETTING_SOUND_TEXT_MSG_ALERT,
+                                            SETTING_SOUND_TEXT_NOTIFICATION_ALERT/*SETTING_SOUND_TEXT_MSG_ALERT*/,
                                             sub_desc, NULL);
        if (ad->data_msg_alert_tone) {
                ad->data_msg_alert_tone->userdata = ad;
+               ad->data_msg_alert_tone->group_style = SETTING_GROUP_STYLE_TOP;
+               setting_genlist_item_groupstyle_set(ad->data_msg_alert_tone, SETTING_GROUP_STYLE_TOP);
        } else {
                SETTING_TRACE_ERROR("ad->data_msg_alert_tone is NULL");
        }
        FREE(pa_ringtone);
        G_FREE(sub_desc);
 
-       /*  b-2. msg alert repetition */
-       if (vconf_get_int
-           (VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &repeat_value) != 0)
-               repeat_value = SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT;   /*  default 0 : repeat once */
+       /* 5. Notification alert repetition */
+       if (vconf_get_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &vconf_value) != 0)
+               vconf_value = SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT;    /*  default 0 : repeat once */
        ad->data_msg_alert_repeat =
            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_MSG_RINGTONE_REPEAT,
-                                                   _(repeat_type[repeat_value]));
+                                                   &itc_2text_3_parent,
+                                                   NULL, NULL, SWALLOW_Type_INVALID,
+                                                   SETTING_SOUND_TEXT_NOTIFICATION_ALERT_REPETITION/*SETTING_SOUND_TEXT_MSG_RINGTONE_REPEAT*/,
+                                                   _(repeat_type[vconf_value]),
+                                                   SETTING_GROUP_STYLE_CENTER, SETTING_GROUP_STYLE_CENTER);
        if (ad->data_msg_alert_repeat) {
                ad->data_msg_alert_repeat->int_slp_setting_binded =
-                       INT_SLP_SETTING_MSG_ALERT_REPEAT;
+                                       INT_SLP_SETTING_MSG_ALERT_REPEAT;
        } else {
                SETTING_TRACE_ERROR("ad->data_msg_alert_repeat is NULL");
        }
 
-       /*  b-3. email ringtone */
-       pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR);
-       if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
+       /* 1. Vibrate when ringing */
+       if (vconf_get_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, &vconf_value) < 0)
        {
-               pa_ringtone = (char *)strdup(SETTING_DEFAULT_EMAIL_TONE);
-               vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, SETTING_DEFAULT_EMAIL_TONE);
-               if(vconf_ret < 0)
-                       SETTING_TRACE_DEBUG("failed to set vconf");
-       }
-       sub_desc = setting_file_basename(pa_ringtone);
-
-       ad->data_email_alert_tone =
-           setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
-                                            setting_profile_sound_main_mouse_up_Gendial_list_cb,
-                                            ad, SWALLOW_Type_INVALID, NULL,
-                                            NULL, 0,
-                                            SETTING_SOUND_TEXT_EMAIL_ALERT,
-                                            sub_desc, NULL);
-       if (ad->data_email_alert_tone) {
-               ad->data_email_alert_tone->userdata = ad;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_email_alert_tone is NULL");
-       }
-       FREE(pa_ringtone);
-       G_FREE(sub_desc);
-
-       /*  b-4. email alert repetition */
-       if (vconf_get_int
-           (VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT,
-            &repeat_value) != 0)
-               repeat_value = SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT;   /*  default 0 : repeat once */
-       ad->data_email_alert_repeat =
-           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_EMAIL_RINGTONE_REPEAT,
-                                                   _(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;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_email_alert_repeat is NULL");
+               vconf_value = TRUE;     /*  default value of vibrate sound : on */
        }
+       ADD_TOGGLE_MENU(ad->data_sound_when_ring, genlist, itc_1text_1icon, SETTING_SOUND_TEXT_VIBRATE_WHEN_RING, vconf_value, SETTING_GROUP_STYLE_NONE, ad);
 
-       Elm_Object_Item *item = 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);
+       /* Group title : Feedback */
+       setting_create_Gendial_field_titleItem(genlist,
+                                                    &itc_group_item,
+                                                    _(STR_FEEDBACK), NULL);
 
-       ad->sub_view[SETTING_PROF_VIEW_RTN] = genlist;
+       /* 6. Keytones */
+       if (vconf_get_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, &vconf_value) < 0)
+               vconf_value = TRUE;     /*  default value of touch sounds : on */
+       ADD_TOGGLE_MENU(ad->data_button_sounds, genlist, itc_1text_1icon, "IDS_ST_MBODY_DIALLING_KEYPAD_TONE", vconf_value, SETTING_GROUP_STYLE_NONE, ad)
+       ADD_GL_HELP(genlist,"IDS_ST_BODY_PLAY_TONE_WHEN_THE_DIALLING_KEYPAD_IS_TAPPED");
 
-       return ad->sub_view[SETTING_PROF_VIEW_RTN];
+       /* 7. Touch sounds */
+       if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &vconf_value) < 0)
+               vconf_value = TRUE;     /*  default value of touch sounds : on */
+       ADD_TOGGLE_MENU(ad->data_touch_sounds, genlist, itc_1text_1icon, "IDS_ST_BODY_TOUCH_SOUNDS", vconf_value, SETTING_GROUP_STYLE_NONE, ad)
+       ADD_GL_HELP(genlist,"IDS_ST_BODY_PLAY_SOUND_WHEN_MAKING_SCREEN_SELECTION");
+
+       /*  8. Screen lock sound */
+       if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &vconf_value) < 0)
+               vconf_value = 0;        /*  default value of lock/unlock sound : off */
+       ADD_TOGGLE_MENU(ad->data_lock_sound, genlist, itc_1text_1icon, SETTING_SOUND_TEXT_LOCK_SOUND, vconf_value, SETTING_GROUP_STYLE_NONE, ad)
+       ADD_GL_HELP(genlist,"IDS_ST_BODY_PLAY_SOUNDS_WHEN_LOCKING_AND_UNLOCKING_SCREEN");
 }
 
-static void __view_change_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       //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 (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
-               SETTING_TRACE("ERROR haptic_stop_all_effects");
-               /* return; */
-       }
-       setting_profile_close_all_mm_players(ad);
-
-       Evas_Object *sub_view = NULL;
-       Elm_Object_Item *sel_item = elm_toolbar_selected_item_get(obj);
-       const char *tab_lable = elm_object_item_text_get(sel_item);
-       ret_if(!tab_lable);
-       //SETTING_TRACE("tab_lable:%s", tab_lable);
-       if (0 == safeStrCmp(tab_lable, VOLUME_STR)) {
-               if(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);
-       }
-
-       Evas_Object *old_sub_view = elm_object_part_content_get(ad->view_layout, "elm.swallow.content");
-       ret_if(old_sub_view == sub_view);
 
-       if (sub_view) {
-               if (old_sub_view)
-               {
-                       elm_object_part_content_unset(ad->view_layout, "elm.swallow.content");
-                       evas_object_hide(old_sub_view);
-               }
-               elm_object_part_content_set(ad->view_layout, "elm.swallow.content", sub_view);
-               evas_object_show(sub_view);
-       }
-}
 
 static int setting_profile_sound_main_create(void *cb)
 {
+       SETTING_TRACE_BEGIN;
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
        SettingProfileUG *ad = (SettingProfileUG *) cb;
@@ -1009,43 +823,24 @@ static int setting_profile_sound_main_create(void *cb)
        ad->ly_main = setting_create_win_layout(ad->win_main_layout, ad->win_get);
        ad->navi_bar = setting_create_navi_bar(ad->ly_main);
 
-       /*  view layout */
-       Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
-       elm_layout_theme_set(view_layout, "layout", "application", "default");
-       evas_object_show(view_layout);
-       ad->view_layout = view_layout;
-
-       Evas_Object *tabbar= elm_toolbar_add(ad->navi_bar);
-       if(tabbar == NULL)
-               return SETTING_RETURN_FAIL;
-
-       elm_object_part_content_set(view_layout, "elm.swallow.tabbar", tabbar);
-       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,
-                                       IMG_CTRL_ICON_VOLUME,
-                                       VOLUME_STR, __view_change_cb, ad);
-
-       ad->ctrl_item[1] = elm_toolbar_item_append(tabbar,
-                                       IMG_CTRL_ICON_RINGTONE,
-                                       RINGTONE_STR, __view_change_cb, ad);
-
-       elm_toolbar_select_mode_set(tabbar, ELM_OBJECT_SELECT_MODE_ALWAYS);
-       elm_toolbar_item_selected_set(ad->ctrl_item[0], EINA_TRUE);
+       SETTING_TRACE("1");
+       __get_lite_main_list(ad);
+       Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->navi_bar, KeyStr_Sounds, NULL, NULL, ad->gl_lite_main, NULL);
+       elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
 
-       Evas_Object *ug_back_btn = elm_button_add(ad->navi_bar);
-       elm_object_style_set(ug_back_btn, NAVI_BACK_BUTTON_STYLE);
-       evas_object_smart_callback_add(ug_back_btn, "clicked", setting_profile_sound_main_click_softkey_cancel_cb, ad);
+       SETTING_TRACE("viewtype: %s", ad->viewtype);
+       if(!safeStrCmp(ad->viewtype, "org.tizen.setting.volume"))
+       {
+               SETTING_TRACE("ENTER setting_profile_sound_main_create_popup_with_sliders");
+               setting_profile_sound_main_create_popup_with_sliders(ad);
+       }
 
-       Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->navi_bar, _(KeyStr_Sounds), ug_back_btn, NULL, ad->view_layout, "tabbar");
-       elm_object_item_part_content_set(navi_it, "tabbar", tabbar);
-       //elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
+       SETTING_TRACE("2");
+       elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)setting_profile_sound_main_click_softkey_cancel_cb, ad);
 
        setting_view_profile_sound_main.is_create = TRUE;
 
+       SETTING_TRACE("3");
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -1053,24 +848,39 @@ static int setting_profile_sound_main_destroy(void *cb)
 {
        /* error check */
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+       SETTING_TRACE_BEGIN;
 
        SettingProfileUG *ad = (SettingProfileUG *) cb;
+       if (ad->set_sound_idler) {
+               ecore_idler_del(ad->set_sound_idler);
+               ad->set_sound_idler = NULL;
+       }
+       if (ad->set_vib_idler) {
+               ecore_idler_del(ad->set_vib_idler);
+               ad->set_vib_idler = NULL;
+       }
 
-       __setting_profile_ug_key_ungrab(ad);
+       if(ad->play_ringtone_idler)
+       {
+               ecore_idler_del(ad->play_ringtone_idler);
+               ad->play_ringtone_idler = NULL;
+       }
 
-       if (ad->ly_main != NULL) {
-               //Fix the memory leak,
-               //Manage ad->sub_view[] separately, unset first, then delete in together
-               if (ad->view_layout)
-               {
-                       elm_object_part_content_unset(ad->view_layout, "elm.swallow.content");
-               }
-               int i = SETTING_PROF_VIEW_VOL;
-               for (; i < SETTING_PROF_VIEW_MAX; i++ )
-               {
-                       evas_object_del(ad->sub_view[i]);
-               }
+       //__setting_profile_ug_key_ungrab(ad);
+       //__setting_profile_ug_menu_key_ungrab(ad);
+
+       if(ad->volume_popup)
+       {
+               evas_object_del(ad->volume_popup);
+               ad->volume_popup = NULL;
+       }
+       if(ad->sound_mode_popup)
+       {
+               evas_object_del(ad->sound_mode_popup);
+               ad->sound_mode_popup = NULL;
+       }
 
+       if (ad->ly_main != NULL) {
                evas_object_del(ad->ly_main);
                setting_view_profile_sound_main.is_create = FALSE;
        }
@@ -1079,7 +889,6 @@ static int setting_profile_sound_main_destroy(void *cb)
 
 static int setting_profile_sound_main_update(void *cb)
 {
-       SETTING_TRACE_BEGIN;
        /* error check */
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
@@ -1088,14 +897,6 @@ static int setting_profile_sound_main_update(void *cb)
        if (ad->ly_main != NULL) {
                evas_object_show(ad->ly_main);
        }
-
-       int volume = 0;
-
-       sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
-       SETTING_TRACE_DEBUG("ringtone volume is %d", volume);
-       if(ad->data_call_volume && ad->data_call_volume->eo_check)
-               elm_slider_value_set(ad->data_call_volume->eo_check, (double)volume);
-
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -1125,63 +926,66 @@ static int setting_profile_sound_main_cleanup(void *cb)
  *
  ***************************************************/
 
-static void setting_profile_sound_main_click_softkey_cancel_cb(void *data,
-                                                  Evas_Object *obj,
-                                                  void *event_info)
+static Eina_Bool setting_profile_sound_main_click_softkey_cancel_cb(void *data, Elm_Object_Item *it)
 {
        /* error check */
-       ret_if(data == NULL);
+       retv_if(data == NULL, EINA_FALSE);
 
        SettingProfileUG *ad = (SettingProfileUG *) data;
+       SETTING_TRACE_BEGIN;
 
        /* close mm plaer */
        setting_profile_close_all_mm_players(ad);
        /* close vibration */
        if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
                SETTING_TRACE("ERROR haptic_stop_all_effects");
-               /* return; */
        }
 
        /* Send destroy request */
        ug_destroy_me(ad->ug);
 
-       return;
+       return EINA_FALSE;
 }
 
 static void setting_profile_sound_main_destroy_myfile_ug_cb(ui_gadget_h ug, void *priv)
 {
+       SETTING_TRACE_BEGIN;
        ret_if(priv == NULL);
        SettingProfileUG *ad = (SettingProfileUG *) priv;
 
-       __setting_profile_ug_key_grab(ad);
+       //__setting_profile_ug_key_grab(ad);
 
        if (ug) {
-               ug_destroy(ug);
+               setting_ug_destroy(ug);
                ad->ug_loading = NULL;
        }
 }
 
 static void
 setting_profile_sound_main_result_myfile_ug_cb(ui_gadget_h ug,
-                                              service_h result, void *priv)
+                                              app_control_h result, void *priv)
 {
+       SETTING_TRACE_BEGIN;
        ret_if(priv == NULL);
 
        SettingProfileUG *ad = (SettingProfileUG *) priv;
        char *ringtone_file = NULL;
        char *ringtone_path = NULL;
 
-       service_get_extra_data(result, "result", &ringtone_path);
+       app_control_get_extra_data(result, "result", &ringtone_path);
        if(!ringtone_path)
                return;
 
+       char *recommend_time = NULL;
+       app_control_get_extra_data(result, "position", &recommend_time);
+
        SETTING_TRACE("ringtone_path:%s", ringtone_path);
 
        if (ringtone_path != NULL) {
-               ringtone_file = setting_file_basename(ringtone_path);
+               ringtone_file = setting_media_basename(ringtone_path);
                SETTING_TRACE("ringtone_file:%s", ringtone_file);
 
-               if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_CALL_RINGTONE)) {
+               if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_RINGTONES)) {
                        if (vconf_set_str
                            (VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, ringtone_path) == 0) {
                                if (ad->data_call_alert_tone) {
@@ -1191,8 +995,15 @@ setting_profile_sound_main_result_myfile_ug_cb(ui_gadget_h ug,
                                        elm_genlist_item_update(ad->data_call_alert_tone->item);
                                }
                        }
+                       if(recommend_time)
+                       {
+                               char recommend_info[512] = {0,};
+                               snprintf(recommend_info, 512, "%s; %smsec", ringtone_path, recommend_time);
+                               SETTING_TRACE_DEBUG("%s", recommend_info);
+                               vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_WITH_RECOMMENDATION_TIME_STR, recommend_info);
+                       }
                } else if (0 ==
-                          safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_MSG_ALERT)) {
+                          safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_NOTIFICATION_ALERT)) {
                        if (vconf_set_str
                            (VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ringtone_path) == 0) {
                                if (ad->data_msg_alert_tone) {
@@ -1216,6 +1027,8 @@ setting_profile_sound_main_result_myfile_ug_cb(ui_gadget_h ug,
                }
        }
 
+       FREE(ringtone_path);
+       FREE(recommend_time);
        G_FREE(ringtone_file);
        return;
 }
@@ -1226,7 +1039,7 @@ setting_profile_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
 {
        ret_if(priv == NULL);
 
-       SettingProfileUG *ad = (SettingProfileUG *) priv;
+       //SettingProfileUG *ad = (SettingProfileUG *) priv;
        Evas_Object *base;
 
        base = (Evas_Object *) ug_get_layout(ug);
@@ -1245,7 +1058,7 @@ setting_profile_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
 }
 
 
-static void setting_profile_sound_main_create_myfile_ug(SettingProfileUG *ad)
+static void setting_profile_sound_main_create_myfile_ug(SettingProfileUG *ad, char *titleID)
 {
        ret_if(ad == NULL);
 
@@ -1264,57 +1077,63 @@ static void setting_profile_sound_main_create_myfile_ug(SettingProfileUG *ad)
        cbs->destroy_cb = setting_profile_sound_main_destroy_myfile_ug_cb;
        cbs->priv = (void *)ad;
 
-       service_h svc;
-       if (service_create(&svc)) {
+       app_control_h svc;
+       if (app_control_create(&svc)) {
                FREE(cbs);
                return;
        }
 
        const char *pa_cur_ringtone = NULL;
        const char *dir_path = NULL;
-       if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_CALL_RINGTONE)) {
+       if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_RINGTONES)) {
                pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
                if (pa_cur_ringtone == NULL)
                {
-                       pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+                       if(isEmulBin())
+                               pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+                       else
+                               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)) {
+       } else if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_NOTIFICATION_ALERT)) {
                pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
                if (pa_cur_ringtone == NULL)
                        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 = (char *)strdup(SETTING_DEFAULT_EMAIL_TONE);
-               dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
        }
        SETTING_TRACE("pa_cur_ringtone:\t%s", pa_cur_ringtone);
        SETTING_TRACE("dir_path:\t%s", dir_path);
 
-       service_add_extra_data(svc, "marked_mode", pa_cur_ringtone);
-       service_add_extra_data(svc, "path", dir_path);
-       service_add_extra_data(svc, "select_type", "SINGLE_FILE");
-       service_add_extra_data(svc, "file_type", "SOUND");
-       service_add_extra_data(svc, "drm_type", "DRM_ALL");
-
+       app_control_add_extra_data(svc, "title", titleID);
+       app_control_add_extra_data(svc, "domain", SETTING_PACKAGE);
+       app_control_add_extra_data(svc, "path", dir_path);
+       app_control_add_extra_data(svc, "select_type", "SINGLE_FILE");
+       app_control_add_extra_data(svc, "file_type", "SOUND");
+       app_control_add_extra_data(svc, "drm_type", "DRM_ALL");
+       app_control_add_extra_data(svc, "silent", "silent show"); /* Show Silent item in the list */
+       if(safeStrCmp(pa_cur_ringtone, "silent") == 0)
+               app_control_add_extra_data(svc, "marked_mode", "silent");       /* Set radio on Silent item */
+       else
+               app_control_add_extra_data(svc, "marked_mode", pa_cur_ringtone);
+
+       elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
        SETTING_TRACE("ad->ug->layout:%p", (void *)ug_get_layout(ad->ug));
-       ad->ug_loading = ug_create(ad->ug, "myfile-efl", UG_MODE_FULLVIEW, svc, cbs);
+       ad->ug_loading = setting_ug_create(ad->ug, "setting-ringtone-efl", UG_MODE_FULLVIEW, svc, cbs);
        if (NULL == ad->ug_loading) {   /* error handling */
                SETTING_TRACE_ERROR("NULL == ad->ug_loading");
        }
 
-       service_destroy(svc);
+       app_control_destroy(svc);
        FREE(cbs);
 
        /** @todo verify it's valid */
        if(pa_cur_ringtone) {
-               free(pa_cur_ringtone);
+               free((void *)pa_cur_ringtone);
                pa_cur_ringtone = NULL;
        }
 
-       __setting_profile_ug_key_ungrab(ad);
+       //__setting_profile_ug_key_ungrab(ad);
+       //__setting_profile_ug_menu_key_grab(ad);
        return;
 }
 
@@ -1327,46 +1146,39 @@ setting_profile_sound_main_Gendial_chk_cb(void *data, Evas_Object *obj,
 
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
+       SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
+
+       if(SETTING_RETURN_SUCCESS != setting_profile_close_all_mm_players(ad)){
+               SETTING_TRACE_ERROR("close player fail.");
+       }
 
        int state = list_item->chk_status = elm_check_state_get(obj);   /*  for genlist update status */
 
        /* restore the selected check status */
-       list_item->chk_status = state;
-       elm_check_state_set(list_item->eo_check, state);
+       setting_update_gl_item_chk_status(list_item, state);
 
        if (!safeStrCmp(SETTING_SOUND_TEXT_SOUND, list_item->keyStr)) {
                if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, list_item->chk_status) < 0) {
-                       list_item->chk_status = !state;
-                       elm_check_state_set(list_item->eo_check, list_item->chk_status);
+                       setting_update_gl_item_chk_status(list_item, !state);
                }
 
-               if (list_item->chk_status) {
-                       setting_enable_genlist_item(ad->data_call_volume->item);
-                       setting_enable_genlist_item(ad->data_noti_volume->item);
-                       setting_enable_genlist_item(ad->data_media_volume->item);
-                       setting_enable_genlist_item(ad->data_touch_volume->item);
-               } else {
+               if (!list_item->chk_status) {
                        setting_profile_close_all_mm_players(ad);
-                       setting_disable_genlist_item(ad->data_call_volume->item);
-                       setting_disable_genlist_item(ad->data_noti_volume->item);
-                       setting_disable_genlist_item(ad->data_media_volume->item);
-                       setting_disable_genlist_item(ad->data_touch_volume->item);
                }
        } else if (!safeStrCmp(SETTING_SOUND_TEXT_VIBRATION, list_item->keyStr)) {
                if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, list_item->chk_status) < 0) {
-                       list_item->chk_status = !state;
-                       elm_check_state_set(list_item->eo_check, list_item->chk_status);
+                       setting_update_gl_item_chk_status(list_item, !state);
                }
                if (list_item->chk_status) {
-                       setting_enable_genlist_item(ad->data_vib_volume->item);
-                       setting_enable_genlist_item(ad->data_touch_vib->item);
-
                        /* Play vib if vib turns on */
                        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));
-                       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);
+                       int noti_vib = 5;
+                       if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
+                               SETTING_TRACE("ERROR haptic_stop_all_effects");
+                       }
+                       if(ad->data_vib_volume && ad->data_vib_volume->eo_check)
+                               noti_vib = (int)(elm_slider_value_get(ad->data_vib_volume->eo_check) + 0.5);
+                       err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_NOTI_PREVIEW_VIB, 1, noti_vib * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
 
                        if (err < 0)
                                SETTING_TRACE("Failed to play haptic monotone");
@@ -1374,26 +1186,360 @@ setting_profile_sound_main_Gendial_chk_cb(void *data, Evas_Object *obj,
                        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);
                }
        }
        /* additional items */
+       else if(!safeStrCmp(SETTING_SOUND_TEXT_VIBRATE_WHEN_RING, list_item->keyStr))
+       {
+               /* vibrate when ring*/
+               if(vconf_set_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, list_item->chk_status) < 0)
+               {
+                       setting_update_gl_item_chk_status(list_item, !state);
+               }
+       }
        else if (!safeStrCmp(SETTING_SOUND_TEXT_LOCK_SOUND, list_item->keyStr)) {
                if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, list_item->chk_status) < 0) {
-                       list_item->chk_status = !state;
-                       elm_check_state_set(list_item->eo_check, !state);
+                       setting_update_gl_item_chk_status(list_item, !state);
+               }
+       }
+       else if (!safeStrCmp("IDS_ST_MBODY_DIALLING_KEYPAD_TONE", list_item->keyStr)) {
+               if (vconf_set_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, list_item->chk_status) < 0) {
+                       setting_update_gl_item_chk_status(list_item, !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);
+                       setting_update_gl_item_chk_status(list_item, !state);
+               }
+       }
+       else if (!safeStrCmp("IDS_SMEMO_MBODY_HAPTIC_FEEDBACK", list_item->keyStr)) {
+               if (vconf_set_bool(VCONFKEY_SETAPPL_HAPTIC_FEEDBACK_STATUS_BOOL, list_item->chk_status) < 0) {
+                       setting_update_gl_item_chk_status(list_item, !state);
                }
        }
 
        /* end */
+       SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
+}
+
+static void __slider_popup_del_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       SETTING_TRACE(" REMOVE THE POPUP OBJECT BY THIS FUNCTION ");
+
+       SettingProfileUG *ad = data;
+       if(ad)
+       {
+               if(ad->volume_popup)
+               {
+                       evas_object_del(ad->volume_popup);
+                       ad->volume_popup = NULL;
+               }
+               ad->data_call_volume = NULL;
+               ad->data_noti_volume = NULL;
+               ad->data_media_volume = NULL;
+               ad->data_touch_volume = NULL;
+               //__setting_profile_ug_key_ungrab(ad);
+               setting_profile_close_all_mm_players(ad);
+       }
 
+       if(!safeStrCmp(ad->viewtype, "org.tizen.setting.volume"))
+       {
+               ug_destroy_me(ad->ug);
+               elm_exit();
+       }
+}
+
+static void setting_profile_sound_main_create_popup_with_sliders(void *data)
+{
+       ret_if(!data);
+       SettingProfileUG *ad = data;
+
+       int mm_value = 0;
+       int sound_value = 0;
+       char *left_icon = NULL;
+
+       Evas_Object *genlist;
+       Evas_Object *box;
+       Evas_Object *done_btn;
+
+       ad->volume_popup = elm_popup_add(ad->win_get);
+       ea_object_event_callback_add(ad->volume_popup, EA_CALLBACK_BACK, __slider_popup_del_cb, ad);
+       evas_object_size_hint_weight_set(ad->volume_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_text_set(ad->volume_popup, "title,text", _(VOLUME_STR));
+       //evas_object_smart_callback_add(popup, "block,clicked", __slider_popup_del_cb, ad);
+
+       /* Done button */
+       done_btn = elm_button_add(ad->volume_popup);
+       elm_object_text_set(done_btn, _("IDS_ST_SK3_DONE"));
+       elm_object_part_content_set(ad->volume_popup, "button1", done_btn);
+       elm_object_style_set(done_btn, "popup");
+       evas_object_smart_callback_add(done_btn, "clicked", __slider_popup_del_cb, ad);
+
+       box = elm_box_add(ad->volume_popup);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       genlist = elm_genlist_add(box);
+       elm_genlist_realization_mode_set(genlist, EINA_TRUE);
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_value) < 0)
+               sound_value = TRUE;     /*  default value of sound : on */
+
+       /* d.call volumn. */
+       if(sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value) < 0)
+               mm_value = SETTING_DEFAULT_RINGTONE_VOL_INT;
+       if(sound_value == FALSE)
+               mm_value = 0;
+
+       left_icon = setting_profile_get_slider_icon(SND_SLIDER_CALL, mm_value);
+
+       ADD_SLIDER_MENU(ad->data_call_volume, genlist, ad->itc_layout,
+                                                       left_icon, NULL/*IMG_SLIDER_BTN_RING_VOLUME*/,
+                                                       mm_value, SETTING_SOUND_TEXT_INCOMING_CALL, ad,
+                                                       setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb,
+                                                       SETTING_SOUND_VOL_MAX,
+                                                       __ringtone_start_change_cb, __volume_stop_change_cb,
+                                                       SETTING_VOL_VIBRATION_GROUP, SETTING_GROUP_STYLE_TOP)
+
+       elm_genlist_item_select_mode_set(ad->data_call_volume->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+       /* e.noti volumn */
+       if(sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value) < 0)
+               mm_value = SETTING_DEFAULT_NOTI_VOL_INT;
+       if(sound_value == FALSE)
+               mm_value = 0;
+
+       left_icon = setting_profile_get_slider_icon(SND_SLIDER_NOTI, mm_value);
+
+       ADD_SLIDER_MENU(ad->data_noti_volume, genlist, ad->itc_layout,
+                                                       left_icon, NULL/*IMG_SLIDER_BTN_NOTI_VOLUME*/,
+                                                       mm_value, SETTING_SOUND_TEXT_NOTIFICATION, ad,
+                                                       setting_profile_sound_main_noti_sound_slider_value_change_cb,
+                                                       SETTING_SOUND_VOL_MAX,
+                                                       __noti_start_change_cb, __volume_stop_change_cb,
+                                                       SETTING_VOL_SOUND_GROUP, SETTING_GROUP_STYLE_CENTER)
+
+       elm_genlist_item_select_mode_set(ad->data_noti_volume->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+       /* g.media volume */
+       if(sound_manager_get_volume(SOUND_TYPE_MEDIA, &mm_value) < 0)
+               mm_value = SETTING_DEFAULT_MEDIA_VOL_INT;
+
+       left_icon = setting_profile_get_slider_icon(SND_SLIDER_MEDIA, mm_value);
+
+       ADD_SLIDER_MENU(ad->data_media_volume, genlist, ad->itc_layout,
+                                                       left_icon, NULL/*IMG_SLIDER_BTN_VOLUME02*/,
+                                                       mm_value, SETTING_SOUND_TEXT_MEDIA, ad,
+                                                       setting_profile_sound_main_media_sound_slider_value_change_cb,
+                                                       SETTING_SOUND_VOL_MAX,
+                                                       __media_start_change_cb, __volume_stop_change_cb,
+                                                       SETTING_VOL_VIBRATION_GROUP, SETTING_GROUP_STYLE_CENTER)
+
+       elm_genlist_item_select_mode_set(ad->data_media_volume->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+       /* 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;
+       }
+       if(sound_value == FALSE)
+               mm_value = 0;
+
+       left_icon = setting_profile_get_slider_icon(SND_SLIDER_SYSTEM, mm_value);
+
+       ADD_SLIDER_MENU(ad->data_touch_volume, genlist, ad->itc_layout,
+                                                       left_icon, NULL/*IMG_SLIDER_BTN_SYSTEM_VOLUME*/,
+                                                       mm_value, SETTING_SOUND_TEXT_SYSTEM, ad,
+                                                       settings_profile_sound_main_sys_sound_slider_value_change_cb,
+                                                       SETTING_SOUND_VOL_MAX,
+                                                       __system_start_change_cb, __volume_stop_change_cb,
+                                                       SETTING_VOL_SOUND_GROUP, SETTING_GROUP_STYLE_BOTTOM)
+       evas_object_show(genlist);
+       elm_box_pack_end(box, genlist);
+
+       int w = 0, h= 0;
+       elm_win_screen_size_get(ad->win_get, NULL, NULL, &w, &h);
+       //ecore_x_window_size_get(ecore_x_window_root_first_get(), &w,&h);
+       double popup_height = (double)h * ((double)470/(double)800);
+       SETTING_TRACE("popup_height : %d", (int)popup_height);
+       evas_object_size_hint_min_set(box, -1, (int)popup_height);
+
+       elm_object_content_set(ad->volume_popup, box);
+       evas_object_show(ad->volume_popup);
+
+       //__setting_profile_ug_key_grab(ad);
+}
+
+static void __sound_mode_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       /* error check */
+       ret_if(data == NULL);
+       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+
+       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+       elm_genlist_item_selected_set(item, 0);
+
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+
+       SettingProfileUG *ad = data;
+
+       SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
+       if (!safeStrCmp("IDS_ST_HEADER_SOUND", list_item->keyStr))
+       {
+               vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
+               vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
+               elm_radio_value_set(ad->sound_mode_rdg, 0);
+       }
+       else if (!safeStrCmp("IDS_ST_BODY_CALLALERTTYPE_VIBRATION", list_item->keyStr))
+       {
+               vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
+               vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
+               elm_radio_value_set(ad->sound_mode_rdg, 1);
+       }
+       else if (!safeStrCmp("IDS_ST_BODY_MUTE", list_item->keyStr))
+       {
+               vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
+               vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
+               elm_radio_value_set(ad->sound_mode_rdg, 2);
+       }
+
+       if(ad->data_sound_mode && ad->data_sound_mode->item)
+       {
+               G_FREE(ad->data_sound_mode->sub_desc);
+               ad->data_sound_mode->sub_desc = __get_sound_mode_str();
+               elm_genlist_item_update(ad->data_sound_mode->item);
+       }
+
+       if(ad->sound_mode_popup)
+       {
+               evas_object_del(ad->sound_mode_popup);
+               ad->sound_mode_popup = NULL;
+       }
+}
+
+static void __sound_mode_chk_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       /* error check */
+       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+
+       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+       elm_genlist_item_selected_set(item, 0);
+
+       int selected_value = elm_radio_value_get(obj);
+       SETTING_TRACE("selected radio : %d", selected_value);
+
+       if (selected_value == 0)
+       {
+               vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
+               vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
+       }
+       else if (selected_value == 1)
+       {
+               vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
+               vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
+       }
+       else if (selected_value == 2)
+       {
+               vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
+               vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
+       }
+
+       ret_if(data == NULL);
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
+       SettingProfileUG *ad = (SettingProfileUG *)list_item->userdata;
+       ret_if(ad == NULL);
+
+       if(ad->sound_mode_popup)
+       {
+               evas_object_del(ad->sound_mode_popup);
+               ad->sound_mode_popup = NULL;
+       }
+}
+
+static void __sound_mode_popup_del_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE(" REMOVE THE POPUP OBJECT BY THIS FUNCTION ");
+
+       SettingProfileUG *ad = data;
+       if(ad)
+       {
+               if(ad->sound_mode_popup)
+               {
+                       evas_object_del(ad->sound_mode_popup);
+                       ad->sound_mode_popup = NULL;
+               }
+       }
+}
+
+static void setting_profile_sound_main_create_sound_mode_popup(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       setting_retm_if(data == NULL, "data is NULL");
+
+       SettingProfileUG *ad = (SettingProfileUG *)data;
+
+       ad->sound_mode_popup = elm_popup_add(ad->win_get);
+       ea_object_event_callback_add(ad->sound_mode_popup, EA_CALLBACK_BACK, __sound_mode_popup_del_cb, ad);
+       evas_object_size_hint_weight_set(ad->sound_mode_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_smart_callback_add(ad->sound_mode_popup, "block,clicked", NULL, NULL);
+       elm_object_part_text_set(ad->sound_mode_popup, "title,text", _("IDS_ST_OPT_SOUND_MODE_ABB"));
+
+       Evas_Object *box = NULL;
+       box = elm_box_add(ad->sound_mode_popup);
+       evas_object_size_hint_weight_set(ad->sound_mode_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       Evas_Object *menu_glist = elm_genlist_add(box);
+       elm_genlist_mode_set(menu_glist, ELM_LIST_COMPRESS);
+       evas_object_size_hint_weight_set(menu_glist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(menu_glist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       Evas_Object *rdg = elm_radio_add(menu_glist);
+       elm_object_style_set(rdg, "list");
+       evas_object_propagate_events_set(rdg, EINA_TRUE);
+       elm_radio_state_value_set(rdg, -1);
+       evas_object_data_set(menu_glist, "radio", rdg);
+       ad->sound_mode_rdg = rdg;
+
+       setting_create_Gendial_field_1radio(menu_glist, &itc_1text_1icon,
+                                                                               __sound_mode_item_cb, ad,
+                                                                               SWALLOW_Type_1RADIO,
+                                                                               rdg, 0, "IDS_ST_HEADER_SOUND",
+                                                                               __sound_mode_chk_changed_cb);
+
+       setting_create_Gendial_field_1radio(menu_glist, &itc_1text_1icon,
+                                                                               __sound_mode_item_cb, ad,
+                                                                               SWALLOW_Type_1RADIO,
+                                                                               rdg, 1, "IDS_ST_BODY_CALLALERTTYPE_VIBRATION",
+                                                                               __sound_mode_chk_changed_cb);
+
+       setting_create_Gendial_field_1radio(menu_glist, &itc_1text_1icon,
+                                                                               __sound_mode_item_cb, ad,
+                                                                               SWALLOW_Type_1RADIO,
+                                                                               rdg, 2, "IDS_ST_BODY_MUTE",
+                                                                               __sound_mode_chk_changed_cb);
+
+       evas_object_show(menu_glist);
+       elm_box_pack_end(box, menu_glist);
+       evas_object_size_hint_min_set(box, -1, 288*elm_config_scale_get());
+       elm_object_content_set(ad->sound_mode_popup, box);
+       evas_object_show(ad->sound_mode_popup);
+
+       // update radio
+       int sound = 0;
+       int vibration = 0;
+       vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
+       vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vibration);
+
+       if(sound && !vibration)
+               elm_radio_value_set(rdg, 0);
+       else if(vibration && !sound)
+               elm_radio_value_set(rdg, 1);
+       else if(!vibration && !sound)
+               elm_radio_value_set(rdg, 2);
 }
 
 static void
@@ -1407,84 +1553,138 @@ setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
 
        Elm_Object_Item *item = (Elm_Object_Item *) event_info;
        elm_genlist_item_selected_set(item, 0);
+       char *swip_happened = evas_object_data_get(obj, "swip_happened");
+       if(!safeStrCmp(swip_happened, "TRUE"))
+       {
+               evas_object_data_set(obj, "swip_happened", NULL);
+               return;
+       }
        Setting_GenGroupItem_Data *list_item =
            (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
 
        SettingProfileUG *ad = data;
 
-       if(ad->hnd_hpt)
-               haptic_stop_all_effects(ad->hnd_hpt);
+       if(SETTING_RETURN_SUCCESS != setting_profile_close_all_mm_players(ad)){
+               SETTING_TRACE_ERROR("close player fail.");
+       }
+
+       if (ad->hnd_hpt) {
+               int ret = haptic_stop_all_effects(ad->hnd_hpt);
+               if (ret != HAPTIC_ERROR_NONE) {
+                       SETTING_TRACE_ERROR("haptic_stop_all_effects fail");
+               }
+       }
 
        SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
-       if (!safeStrCmp(SETTING_SOUND_TEXT_CALL_RINGTONE, list_item->keyStr)
-           || !safeStrCmp(SETTING_SOUND_TEXT_MSG_ALERT, list_item->keyStr)
-           || !safeStrCmp(SETTING_SOUND_TEXT_EMAIL_ALERT, list_item->keyStr)) {
+       if (!safeStrCmp(SETTING_SOUND_TEXT_RINGTONES, list_item->keyStr)
+           || !safeStrCmp(SETTING_SOUND_TEXT_NOTIFICATION_ALERT, list_item->keyStr))
+       {
                ad->ringtone_type = list_item->keyStr;
-               setting_profile_sound_main_create_myfile_ug(ad);
-       } else if (!safeStrCmp(SETTING_SOUND_TEXT_SOUND, list_item->keyStr)) {
-               int old_status = elm_check_state_get(list_item->eo_check);
-               if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, !old_status) == 0) {
+               setting_profile_sound_main_create_myfile_ug(ad, list_item->keyStr);
+       }
+       else if(!safeStrCmp(VOLUME_STR, list_item->keyStr))
+       {
+               /* Create slider popup */
+               setting_profile_sound_main_create_popup_with_sliders(ad);
+       }
+       else if(!safeStrCmp("IDS_ST_OPT_SOUND_MODE_ABB", list_item->keyStr))
+       {
+               setting_profile_sound_main_create_sound_mode_popup(ad);
+       }
+       /* additional */
+       else if(!safeStrCmp(SETTING_SOUND_TEXT_VIBRATE_WHEN_RING, list_item->keyStr))
+       {
+               /* vibrate when ring*/
+               int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
+               if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, !old_status) == 0) {
                        /* new status */
-                       list_item->chk_status = !old_status;
-                       elm_check_state_set(list_item->eo_check, list_item->chk_status);
-                       if (list_item->chk_status) {
-                               setting_enable_genlist_item(ad->data_call_volume->item);
-                               setting_enable_genlist_item(ad->data_noti_volume->item);
-                               setting_enable_genlist_item(ad->data_media_volume->item);
-                               setting_enable_genlist_item(ad->data_touch_volume->item);
-                       } else {
-                               setting_profile_close_all_mm_players(ad);
-                               setting_disable_genlist_item(ad->data_call_volume->item);
-                               setting_disable_genlist_item(ad->data_noti_volume->item);
-                               setting_disable_genlist_item(ad->data_media_volume->item);
-                               setting_disable_genlist_item(ad->data_touch_volume->item);
-                       }
+                       setting_update_gl_item_chk_status(list_item, !old_status);
                }
-               return;
-       } else if (!safeStrCmp(SETTING_SOUND_TEXT_VIBRATION, list_item->keyStr)) {
-               int old_status = elm_check_state_get(list_item->eo_check);
-               if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, !old_status) == 0) {
+       }
+       else if (!safeStrCmp(SETTING_SOUND_TEXT_LOCK_SOUND, list_item->keyStr))
+       {
+               int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
+               if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, !old_status) == 0) {
                        /* new status */
-                       list_item->chk_status = !old_status;
-                       elm_check_state_set(list_item->eo_check, list_item->chk_status);
-                       if (list_item->chk_status) {
-                               setting_enable_genlist_item(ad->data_vib_volume->item);
-                               setting_enable_genlist_item(ad->data_touch_vib->item);
-
-                               /* Play vib if vib turns on */
-                               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));
-                               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 (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);
-                       }
+                       setting_update_gl_item_chk_status(list_item, !old_status);
                }
-               return;
        }
-       else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
-               int old_status = elm_check_state_get(list_item->eo_check);
+       else if (!safeStrCmp("IDS_ST_MBODY_DIALLING_KEYPAD_TONE", list_item->keyStr))
+       {
+               int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
+               /* To do : set vconfkey for touch sounds */
+               if (vconf_set_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, !old_status) == 0) {
+                       /* new status */
+                       setting_update_gl_item_chk_status(list_item, !old_status);
+               }
+       }
+       else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr))
+       {
+               int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
                /* 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);
+                       setting_update_gl_item_chk_status(list_item, !old_status);
+               }
+       }
+       else if (!safeStrCmp("IDS_SMEMO_MBODY_HAPTIC_FEEDBACK", list_item->keyStr))
+       {
+               int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
+               /* To do : set vconfkey for touch sounds */
+               if (vconf_set_bool(VCONFKEY_SETAPPL_HAPTIC_FEEDBACK_STATUS_BOOL, !old_status) == 0) {
+                       /* new status */
+                       setting_update_gl_item_chk_status(list_item, !old_status);
+               }
+       }
+       else if (!safeStrCmp(SETTING_SOUND_TEXT_MYSOUND, list_item->keyStr))
+       {
+               SETTING_TRACE_DEBUG("Click My sound");
+               bool running = false;
+
+               app_manager_is_running("org.tizen.call-eq-analyzer", &running);
+
+               if (running == true) {
+                       app_context_h appcontext = NULL;
+
+                       SETTING_TRACE_DEBUG("resume app");
+
+                       app_manager_get_app_context("org.tizen.call-eq-analyzer", &appcontext);
+                       ret_if(NULL == appcontext);
+
+                       app_manager_resume_app(appcontext);
+               } else {
+                       app_control_h service = NULL;
+                       int result = 0;
+                       result = app_control_create(&service);
+                       if(result != APP_CONTROL_ERROR_NONE) {
+                               SETTING_TRACE_DEBUG("service_create fail!! ret=%d", result);
+                               return;
+                       }
+                       ret_if(NULL == service);
+
+                       app_control_set_operation(service, APP_CONTROL_OPERATION_DEFAULT);
+                       app_control_set_app_id(service, "org.tizen.call-eq-analyzer");
+
+                       SETTING_TRACE_DEBUG("launch app");
+                       app_control_send_launch_request(service, NULL, NULL);
+                       app_control_destroy(service);
                }
        }
        /* end */
-       else if (ad->data_msg_alert_repeat == list_item
-                || ad->data_email_alert_repeat == list_item) {
+       else if (ad->data_msg_alert_repeat == list_item)
+       {
                bool status = !elm_genlist_item_expanded_get(item);
                elm_genlist_item_expanded_set(item, status);
        }
+#if 0
+       else if (ad->data_call_alert_vib == list_item)
+       {
+               /* Create new view for incoming call vibration */
+               setting_view_change(&setting_view_profile_sound_main, &setting_view_profile_sound_call_vibration, ad);
+               __setting_profile_ug_key_ungrab(ad);
+               __setting_profile_ug_menu_key_grab(ad);
+       }
+#endif
 }
 
 static void
@@ -1492,6 +1692,8 @@ setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data
                                                                      Evas_Object *obj,
                                                                      void *event_info)
 {
+       SETTING_TRACE_BEGIN;
+
        /* error check */
        ret_if(data == NULL);
 
@@ -1499,16 +1701,46 @@ setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data
 
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
-
-       if(ad->mp_ringtone == NULL)
-               return;
+       //SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
 
        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);
+
+               appcore_measure_start();
+
+               if(list_item->chk_status == 0)
+               {
+                       /* change to Vibration mode */
+                       vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
+                       vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
+               }
+               else
+               {
+                       if(!ad->sound_on)
+                       {
+                               vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
+                               vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
+                       }
+               }
+               setting_profile_update_slider_icon(list_item, SND_SLIDER_CALL);
+               SETTING_TRACE_DEBUG("[TIME] change sound mode : %d msec ", appcore_measure_time());
+       }
+
+       setting_profile_create_warning_popup_during_call(ad);
+       if(ad->no_play_popup)
+               return;
+
+       if(ad->play_ringtone_idler)
+       {
+               ecore_idler_del(ad->play_ringtone_idler);
+               ad->play_ringtone_idler = NULL;
        }
+       ad->play_ringtone_idler = ecore_idler_add(__play_ringtone_sound_idle_cb, list_item);
+
+       //SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
 }
 
 static void
@@ -1523,18 +1755,58 @@ setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data,
 
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
-
-       if(ad->mp_noti == NULL)
-               return;
+       //SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
 
        if(list_item->chk_status != (int)(val+0.5))
        {
-               list_item->chk_status = val;
+               list_item->chk_status = (int)(val+0.5);
                sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, list_item->chk_status);
                SETTING_TRACE_DEBUG("notification volume is %d, %f", list_item->chk_status, val);
+
+               setting_profile_update_slider_icon(list_item, SND_SLIDER_NOTI);
+       }
+
+       setting_profile_create_warning_popup_during_call(ad);
+       if(ad->no_play_popup)
+               return;
+
+       if(ad->mp_noti == NULL)
+       {
+               setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_NOTIFICATION);
+               if(list_item->chk_status > 0)
+               {
+                       char    *pa_tone_path = NULL;
+                       pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
+                       if(pa_tone_path == NULL)
+                       {
+                               pa_tone_path = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
+
+                               if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, pa_tone_path) < 0) {
+                                       FREE(pa_tone_path);
+                                       return;
+                               }
+                       }
+                       setting_profile_play_sound_origin(&(ad->mp_noti), ad, NULL,
+                                                                                               pa_tone_path,
+                                                                                               (float)list_item->chk_status,
+                                                                                               SOUND_TYPE_NOTIFICATION);
+               }
+       }
+       else
+       {
+               player_state_e state;
+               player_get_state(*(ad->mp_noti), &state);
+               SETTING_TRACE("noti player status : %d", state);
+               if(state == PLAYER_STATE_PAUSED)
+               {
+                       player_start(*(ad->mp_noti));
+               }
        }
+       //SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
 }
 
+
+#define MAX_SAFETY_VOLUME_LEVEL 10
 static void
 setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
                                                              Evas_Object *obj,
@@ -1542,20 +1814,78 @@ setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
 {
        /* error check */
        ret_if(data == NULL);
-
-       double val = elm_slider_value_get(obj);
+       static bool safety_flag = FALSE;
 
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
+       //SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
 
-       if(ad->mp_media == NULL)
-               return;
-       if(list_item->chk_status != (int)(val+0.5))
+       double val = elm_slider_value_get(obj);
+       int value = (int)(val+0.5);
+       if(list_item->chk_status != value)
        {
-               list_item->chk_status = val;
-               sound_manager_set_volume(SOUND_TYPE_MEDIA, list_item->chk_status);
+               if(safety_flag && (value > MAX_SAFETY_VOLUME_LEVEL))
+                       return;
+
+               list_item->chk_status = value;
+               //int ret = sound_manager_set_volume_with_safety(SOUND_TYPE_MEDIA, value);
+               int ret = sound_manager_set_volume(SOUND_TYPE_MEDIA, value);
+               SETTING_TRACE_DEBUG("ret : 0x%.8x", ret);
+#if 0
+               if(ret == SOUND_MANAGER_ERROR_NO_OPERATION
+                       || ret == SOUND_MANAGER_ERROR_INTERNAL)
+               {
+                       SETTING_TRACE_DEBUG("didn't set safety volume");
+                       if(value > MAX_SAFETY_VOLUME_LEVEL)
+                       {
+                               ad->data_media_volume->chk_status = MAX_SAFETY_VOLUME_LEVEL;
+                               elm_slider_value_set(obj, list_item->chk_status);
+                               safety_flag = TRUE;
+                               return;
+                       }
+               }
+#endif
+               safety_flag = FALSE;
+
                SETTING_TRACE_DEBUG("media volume is %d, %f", list_item->chk_status, val);
        }
+
+       setting_profile_create_warning_popup_during_call(ad);
+       if(ad->no_play_popup)
+               return;
+
+       if(ad->mp_media == NULL)
+       {
+               setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_MEDIA);
+               if(list_item->chk_status > 0)
+               {
+                       char    *pa_tone_path = NULL;
+                       if(isEmulBin())
+                               pa_tone_path = (char*)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+                       else
+                               pa_tone_path = (char*)strdup(SETTING_DEFAULT_MEDIA_TONE);
+
+                       sound_type_e type;
+                       sound_manager_get_current_sound_type(&type);
+                       if(type != SOUND_TYPE_MEDIA)
+                               setting_profile_play_sound_origin(&(ad->mp_media), ad, NULL,
+                                                                                                       pa_tone_path,
+                                                                                                       (float)list_item->chk_status,
+                                                                                                       SOUND_TYPE_MEDIA);
+                       FREE(pa_tone_path);
+               }
+       }
+       else
+       {
+               player_state_e state;
+               player_get_state(*(ad->mp_media), &state);
+               SETTING_TRACE("ringtone player status : %d", state);
+               if(state == PLAYER_STATE_PAUSED)
+               {
+                       player_start(*(ad->mp_media));
+               }
+       }
+       //SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
 }
 
 static void
@@ -1566,60 +1896,134 @@ settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
        /* error check */
        ret_if(data == NULL);
 
-       double val = elm_slider_value_get(obj);
+
+       //---------------------------------------------
+       const char *sub_type = NULL;
+       sub_type = elm_object_widget_type_get(obj);
+       SETTING_TRACE(">>>> slider type :%s", sub_type);
+       //---------------------------------------------
 
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
+       //SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
 
-       if(ad->mp_sys == NULL)
+       if (!ad || !ad->data_touch_volume || !ad->data_touch_volume->eo_check)
+       {
+               SETTING_TRACE_ERROR("!ad || !ad->data_touch_volume || !ad->data_touch_volume->eo_check");
                return;
+       }
 
-       if(list_item->chk_status != (int)(val+0.5))
+       setting_profile_close_all_mm_players(ad);
+
+       //Get the current real value of slider
+       double val = elm_slider_value_get(obj);
+       int value = (int)(val+0.5);
+       sound_manager_set_volume(SOUND_TYPE_SYSTEM, value);
+       SETTING_TRACE_DEBUG("system volume is %d, %f", value, val);
+
+       setting_profile_create_warning_popup_during_call(ad);
+       if(ad->no_play_popup)
+               return;
+
+       if(list_item->chk_status != value)
        {
-               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);
+               if(feedback_initialize() == FEEDBACK_ERROR_NONE)
+               {
+                       feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
+                       feedback_deinitialize();
+               }
+               list_item->chk_status = value;
+               setting_profile_update_slider_icon(list_item, SND_SLIDER_SYSTEM);
        }
-       feedback_initialize();
-       feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_SIP);
-       feedback_deinitialize();
+       //SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
 }
 
 static void
-setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data,
+setting_profile_sound_main_call_vib_sound_slider_value_change_cb(void *data,
                                                            Evas_Object *obj,
                                                            void *event_info)
 {
-       SETTING_TRACE_BEGIN;
        /* error check */
        ret_if(data == NULL);
 
-       static double priv_val_db = 5.0;
        static int priv_val_int = 0;
        double val = elm_slider_value_get(obj);
-       SETTING_TRACE("val = %f", val);
+       SETTING_TRACE_DEBUG("val = %f", val);
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
+       SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
 
-       int value;
+       int slider_value;
        int err;
 
-       value = (int)(val + 0.5);       /*  to sync displayed value on slider */
-       list_item->chk_status = value;
-       if (value != priv_val_int) {
-               vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, value);
-               SETTING_TRACE_DEBUG("current %d", value);
-               char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
-               svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
-               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);
+       slider_value = (int)(val+0.5);  /*  to sync displayed value on slider */
+       list_item->chk_status = slider_value;
+       if (slider_value != priv_val_int) {
+               setting_profile_close_all_mm_players(ad);
+               priv_val_int = slider_value;
+               vconf_set_int(VCONFKEY_SETAPPL_CALL_VIBRATION_LEVEL_INT, slider_value);
+               if(slider_value != 0)
+               {
+                       SETTING_TRACE_DEBUG("play_value %d", slider_value);
+                       char *call_vib_pattern = vconf_get_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR);
+                       if(!call_vib_pattern)
+                               call_vib_pattern = (char*)strdup(SETTING_DEFAULT_CALL_PREVIEW_VIB);
+
+                       err = haptic_vibrate_file_with_detail(ad->hnd_hpt, call_vib_pattern,
+                                                                                                       1, slider_value * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
+                       if(err != 0)
+                               SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
 
-               if (err < 0)
-                       SETTING_TRACE("Failed to play haptic monotone");
-               priv_val_int = value;
+                       FREE(call_vib_pattern);
+               }
+               else
+               {
+                       if (ad->hnd_hpt && haptic_stop_all_effects(ad->hnd_hpt) != 0) {
+                               SETTING_TRACE("ERROR haptic_stop_all_effects");
+                       }
+               }
+
+               setting_profile_update_slider_icon(list_item, SND_SLIDER_CALL_VIB);
        }
-       priv_val_db = val;
+       SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
+}
+
+static void
+setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data,
+                                                           Evas_Object *obj,
+                                                           void *event_info)
+{
+       /* error check */
+       ret_if(data == NULL);
 
+       static int priv_val_int = 0;
+       double val = elm_slider_value_get(obj);
+       SETTING_TRACE_DEBUG("val = %f", val);
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+       SettingProfileUG *ad = list_item->userdata;
+       SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
+
+       int slider_value;
+       int err;
+
+       slider_value = (int)(val+0.5);  /*  to sync displayed value on slider */
+       list_item->chk_status = slider_value;
+       if (slider_value != priv_val_int) {
+               setting_profile_close_all_mm_players(ad);
+               priv_val_int = slider_value;
+               vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, slider_value);
+               if(slider_value != 0)
+               {
+                       SETTING_TRACE_DEBUG("play_value %d", slider_value);
+                       err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_NOTI_PREVIEW_VIB,
+                                                                                                       1, slider_value * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
+                       if(err != 0)
+                               SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
+               }
+
+               setting_profile_update_slider_icon(list_item, SND_SLIDER_NOTI_VIB);
+       }
+       SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
 }
 
 static void
@@ -1628,35 +2032,36 @@ setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data,
                                                                 obj, void
                                                                 *event_info)
 {
-       SETTING_TRACE_BEGIN;
        /* error check */
        ret_if(data == NULL);
 
-       static double priv_val_db = 3.0;
        static int priv_val_int = 0;
        double val = elm_slider_value_get(obj);
-       SETTING_TRACE("val = %f", val);
+       SETTING_TRACE_DEBUG("val = %f", val);
        Setting_GenGroupItem_Data *list_item =
            (Setting_GenGroupItem_Data *) data;
        SettingProfileUG *ad = list_item->userdata;
+       SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
 
-       int value;
+       int slider_value;
        int err;
 
-       value = (int)(val + 0.5);       /*  to sync displayed value on slider */
-       list_item->chk_status = value;
-       if (value != priv_val_int) {
-               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, value);
-               SETTING_TRACE_DEBUG("current %d", value);
-               char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
-               svi_get_path(SVI_TYPE_VIB, SVI_VIB_OPERATION_VIBRATION, pattern_file, sizeof(pattern_file));
-               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");
-               priv_val_int = value;
-       }
-       priv_val_db = val;
-}
+       slider_value = (int)(val+0.5);  /*  to sync displayed value on slider */
+       list_item->chk_status = slider_value;
+       if (slider_value != priv_val_int) {
+               setting_profile_close_all_mm_players(ad);
+               priv_val_int = slider_value;
+               vconf_set_int (VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, slider_value);
+               if(slider_value != 0)
+               {
+                       SETTING_TRACE_DEBUG("play_value %d", slider_value);
+                       err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_HAPTIC_PREVIEW_VIB,
+                                                                                                       1, slider_value * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
+                       if(err != 0)
+                               SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
+               }
 
+               setting_profile_update_slider_icon(list_item, SND_SLIDER_SYSTEM_VIB);
+       }
+       SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
+}