fix N_SE-11026, 11017, 10424, 7981
[apps/core/preloaded/settings.git] / setting-profile / src / setting-profile-sound-main.c
index b0c881a..8dd3cbc 100755 (executable)
@@ -232,88 +232,6 @@ static void __mm_player_msg_cb(void *user_param)
        setting_profile_close_all_mm_players(ad);
 }
 
-Eina_Bool __volume_timer_cb(void *data)
-{
-       SETTING_TRACE_BEGIN;
-       retv_if(data == NULL, EINA_FALSE);
-       SettingProfileUG *ad = (SettingProfileUG *)data;
-       double value = 0.0;
-
-       SETTING_TRACE_DEBUG("cur_vol_type : %d", ad->cur_vol_type);
-
-       switch(ad->cur_vol_type)
-       {
-               case SETTING_VOL_TYPE_RINGTONE:
-                       if(ad->data_call_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_call_volume->eo_check);
-                               sound_manager_set_volume(SOUND_TYPE_RINGTONE, (unsigned int)(value+0.5));
-                               setting_profile_change_player_volume(&ad->mp_ringtone, value);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_NOTIFICATION:
-                       if(ad->data_noti_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_noti_volume->eo_check);
-                               sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, (unsigned int)(value+0.5));
-                               setting_profile_change_player_volume(&ad->mp_noti, value);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_MEDIA:
-                       if(ad->data_media_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_media_volume->eo_check);
-                               sound_manager_set_volume(SOUND_TYPE_MEDIA, (unsigned int)(value+0.5));
-                               setting_profile_change_player_volume(&ad->mp_media, value);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_SYSTEM:
-                       if(ad->data_touch_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_touch_volume->eo_check);
-                               sound_manager_set_volume(SOUND_TYPE_SYSTEM, (unsigned int)(value+0.5));
-                               setting_profile_change_player_volume(&ad->mp_sys, value);
-                       }
-                       break;
-               case SETTING_VOL_TYPE_NOTI_VIB:
-                       if(ad->data_vib_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_vib_volume->eo_check);
-                               vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
-                       }
-                       break;
-               case SETTING_VOL_TYPE_HAPTIC_VIB:
-                       if(ad->data_touch_vib)
-                       {
-                               value = elm_slider_value_get(ad->data_touch_vib->eo_check);
-                               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
-                               //It must change synchronizly to avoid the unexpected terminate issue
-                               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_BAK_INT, (unsigned int)(value+0.5));
-                       }
-                       break;
-               default:
-                       break;
-
-       }
-       return ECORE_CALLBACK_RENEW;
-}
-
-void __create_volume_timer(void *data, setting_volume_types type)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(data == NULL);
-
-       SettingProfileUG *ad = (SettingProfileUG *)data;
-
-       if(ad->volume_timer)
-       {
-               ecore_timer_del(ad->volume_timer);
-               ad->volume_timer = NULL;
-               SETTING_TRACE_DEBUG("[AA] volume timer is deleted");
-       }
-       ad->volume_timer = ecore_timer_add(SETTING_SOUND_VOLUME_TIMER_INTERVAL, (Ecore_Task_Cb)__volume_timer_cb, ad);
-}
-
 void __ringtone_start_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
        ret_if(data == NULL);
@@ -355,29 +273,6 @@ void __system_start_change_cb(void *data, Evas_Object *obj, void *event_info)
        setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_SYSTEM);
 }
 
-void __noti_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       ret_if(data == NULL);
-
-       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
-       SettingProfileUG *ad = list_item->userdata;
-
-       ad->cur_vol_type = SETTING_VOL_TYPE_NOTI_VIB;
-       setting_profile_close_all_mm_players(ad);
-}
-
-void __haptic_vib_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;
-
-       ad->cur_vol_type = SETTING_VOL_TYPE_HAPTIC_VIB;
-       setting_profile_close_all_mm_players(ad);
-}
-
 void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
        SETTING_TRACE_BEGIN;
@@ -461,56 +356,31 @@ void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
                return;
        }
 
-       __create_volume_timer(ad, ad->cur_vol_type);
-
        FREE(pa_tone_path);
 
        SETTING_TRACE_END;
 }
 
-void __vibration_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
+static void __main_list_unrealized_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       ret_if(data == NULL);
+       SETTING_TRACE_BEGIN;
+       retv_if(data == NULL, NULL);
 
-       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
-       SettingProfileUG *ad = list_item->userdata;
+       SettingProfileUG *ad = (SettingProfileUG *) data;
 
-       if (device_haptic_stop_play(ad->hnd_hpt) != 0) {
-               SETTING_TRACE("ERROR device_haptic_stop_play");
-               /* return; */
-       }
+       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 = 0.0;
-       switch(ad->cur_vol_type)
-       {
-               case SETTING_VOL_TYPE_NOTI_VIB:
-                       if(ad->data_vib_volume)
-                       {
-                               value = elm_slider_value_get(ad->data_vib_volume->eo_check);
-                               vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
-                               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, (unsigned int)(value+0.5));
-                       }
-                       break;
-               case SETTING_VOL_TYPE_HAPTIC_VIB:
-                       if(ad->data_touch_vib)
-                       {
-                               value = elm_slider_value_get(ad->data_touch_vib->eo_check);
-                               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
-                               vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_BAK_INT, (unsigned int)(value+0.5));
-                               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;
-       }
-       ad->cur_vol_type = SETTING_VOL_TYPE_MAX;
-       SETTING_TRACE_END;
+       /* 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);
 }
 
 static Evas_Object *__get_main_list(void *data)
@@ -658,14 +528,6 @@ static Evas_Object *__get_main_list(void *data)
                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);
-
-       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);
 
@@ -688,15 +550,11 @@ static Evas_Object *__get_main_list(void *data)
                                         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);
-
-       item = elm_genlist_item_append(genlist, &itc_bottom_seperator, NULL, NULL,
-                               ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
        __change_state_of_sliderbars(ad);
 
+       evas_object_smart_callback_add(genlist, "unrealized", __main_list_unrealized_cb, ad);
+
        ad->sub_view[SETTING_PROF_VIEW_VOL] = genlist;
 
        return ad->sub_view[SETTING_PROF_VIEW_VOL];
@@ -866,7 +724,7 @@ static Evas_Object *__get_ringtone_list(void *data)
 
 static void __view_change_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       appcore_measure_start();
+       //appcore_measure_start();
        retm_if(event_info == NULL, "Invalid argmuent: event info is NULL");
        retm_if(data == NULL, "Invalid argmuent: data is NULL");
 
@@ -1359,6 +1217,7 @@ setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data
        if(list_item->chk_status != (int)(val+0.5))
        {
                list_item->chk_status = (int)(val+0.5);
+               sound_manager_set_volume(SOUND_TYPE_RINGTONE, (unsigned int)list_item->chk_status);
                SETTING_TRACE_DEBUG("ringtone volume is %d, %f", list_item->chk_status, val);
        }
 }
@@ -1382,6 +1241,8 @@ setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data,
        if(list_item->chk_status != (int)(val+0.5))
        {
                list_item->chk_status = val;
+               sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, (unsigned int)list_item->chk_status);
+               SETTING_TRACE_DEBUG("notification volume is %d, %f", list_item->chk_status, val);
        }
 }
 
@@ -1403,6 +1264,8 @@ setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
        if(list_item->chk_status != (int)(val+0.5))
        {
                list_item->chk_status = val;
+               sound_manager_set_volume(SOUND_TYPE_MEDIA, (unsigned int)list_item->chk_status);
+               SETTING_TRACE_DEBUG("media volume is %d, %f", list_item->chk_status, val);
        }
 }
 
@@ -1425,74 +1288,8 @@ settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
        if(list_item->chk_status != (int)(val+0.5))
        {
                list_item->chk_status = val;
+               sound_manager_set_volume(SOUND_TYPE_SYSTEM, (unsigned int)list_item->chk_status);
+               SETTING_TRACE_DEBUG("system volume is %d, %f", list_item->chk_status, val);
        }
 }
 
-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 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_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
-       SettingProfileUG *ad = list_item->userdata;
-       list_item->chk_status = val;
-
-       int value;
-       int err;
-
-       value = (int)(val + 0.5);       /*  to sync displayed value on slider */
-       if (value != priv_val_int) {
-               int vib_volume = value;
-               device_haptic_stop_play(ad->hnd_hpt);
-               err = device_haptic_play_monotone_with_feedback_level(ad->hnd_hpt, 1000, vib_volume);
-
-               if (err < 0)
-                       SETTING_TRACE("Failed to play haptic monotone");
-               priv_val_int = value;
-       }
-       priv_val_db = val;
-
-}
-
-static void
-setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data,
-                                                                Evas_Object *
-                                                                obj, void
-                                                                *event_info)
-{
-       /* 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_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) data;
-       SettingProfileUG *ad = list_item->userdata;
-       list_item->chk_status = val;
-
-       int value;
-       int err;
-
-       value = (int)(val + 0.5);       /*  to sync displayed value on slider */
-       if (value != priv_val_int) {
-
-               int vib_volume = value; /* SETTING_VIB_VOL_MAX; */
-               device_haptic_stop_play(ad->hnd_hpt);
-               err = device_haptic_play_monotone_with_feedback_level(ad->hnd_hpt, 1000, vib_volume);
-
-               if (err < 0)
-                       SETTING_TRACE("Failed to play haptic monotone");
-               priv_val_int = value;
-       }
-       priv_val_db = val;
-}
-