0d68b5465ec755e41e54288907e90d1bd7893213
[apps/core/preloaded/settings.git] / setting-profile / src / setting-profile-sound-main.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-profile-sound-main.h>
22 #include <setting-profile.h>
23
24 #define VOLUME_STR                      _("IDS_ST_BODY_VOLUME")
25 #define RINGTONE_STR            _("IDS_COM_BODY_RINGTONES")
26
27 #define SOUND_DESC "IDS_ST_BODY_ADJUST_VOLUME_AND_INTENSITY_FOR_SOUNDS_WHEN_MSG"
28
29 char *repeat_type[SETTING_SOUND_REPEAT_TYPE_LEN] = {
30                 SETTING_SOUND_TEXT_REPEAT_ONCE,
31                 SETTING_SOUND_TEXT_REPEAT_2MIN,
32                 SETTING_SOUND_TEXT_REPEAT_5MIN,
33                 SETTING_SOUND_TEXT_REPEAT_10MIN
34         };
35
36 static int setting_profile_sound_main_create(void *cb);
37 static int setting_profile_sound_main_destroy(void *cb);
38 static int setting_profile_sound_main_update(void *cb);
39 static int setting_profile_sound_main_cleanup(void *cb);
40
41 static void setting_profile_layout_ug_cb(ui_gadget_h ug,
42                                          enum ug_mode mode, void *priv);
43
44 static void setting_profile_sound_main_click_softkey_cancel_cb(void *data,
45                                                                 Evas_Object *obj, void *event_info);
46
47 static void setting_profile_sound_main_Gendial_chk_cb(void *data,
48                                                                 Evas_Object *obj, void *event_info);
49
50 static void setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
51                                                                         Evas_Object *obj, void *event_info);
52
53 static void setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data,
54                                                                     Evas_Object *obj, void *event_info);
55
56 static void setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data,
57                                                                         Evas_Object *obj, void *event_info);
58
59 static void setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
60                                                                         Evas_Object *obj, void *event_info);
61
62 static void setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data,
63                                                                         Evas_Object *obj, void *event_info);
64
65 static void setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data,
66                                                                         Evas_Object *obj, void *event_info);
67
68 static void settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
69                                                                         Evas_Object *obj, void *event_info);
70
71
72 setting_view setting_view_profile_sound_main = {
73         .create = setting_profile_sound_main_create,
74         .destroy = setting_profile_sound_main_destroy,
75         .update = setting_profile_sound_main_update,
76         .cleanup = setting_profile_sound_main_cleanup,
77 };
78
79 /* ***************************************************
80  *
81  *basic func
82  *
83  ***************************************************/
84 void __change_state_of_sliderbars(void *data)
85 {
86         ret_if(data == NULL);
87         SettingProfileUG *ad = (SettingProfileUG *) data;
88
89         int sound_on = TRUE;
90         int vibration_on = TRUE;
91
92         if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_on) == 0) {
93                 if (sound_on == FALSE) {
94                         /*  disable slider bar of call ringtone, notification, media, and system volume */
95                         if (ad->data_call_volume) {
96                                 setting_disable_genlist_item(ad->data_call_volume->item);
97                         }
98                         if (ad->data_noti_volume) {
99                                 setting_disable_genlist_item(ad->data_noti_volume->item);
100                         }
101                         if (ad->data_media_volume) {
102                                 setting_disable_genlist_item(ad->data_media_volume->item);
103                         }
104                         if (ad->data_touch_volume) {
105                                 setting_disable_genlist_item(ad->data_touch_volume->item);
106                         }
107                 }
108         }
109
110         if (vconf_get_bool
111             (VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vibration_on) == 0) {
112                 if (vibration_on == FALSE) {
113                         /*  disable slider bar of notification and system vibration */
114                         if (ad->data_vib_volume) {
115                                 setting_disable_genlist_item(ad->data_vib_volume->item);
116                         }
117                         if (ad->data_touch_vib) {
118                                 setting_disable_genlist_item(ad->data_touch_vib->item);
119                         }
120                 }
121         }
122 }
123
124 void __sound_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
125 {
126         /* error check */
127         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
128         retm_if(data == NULL, "Invalid argument: data is NULL");
129
130         SettingProfileUG *ad = (SettingProfileUG *) data;
131         Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
132         Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
133         elm_genlist_item_selected_set(subitem, 0);
134         Setting_GenGroupItem_Data *data_subItem =
135             elm_object_item_data_get(subitem);
136         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);
137         if (NULL == data_subItem || NULL == data_parentItem)
138                 return;
139
140         elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
141         int err;
142         setting_set_int_slp_key(data_parentItem->int_slp_setting_binded,
143                                 data_subItem->chk_status, &err);
144
145         if (data_parentItem && data_parentItem->item) {
146                 data_parentItem->sub_desc =
147                     (char *)g_strdup(_(data_subItem->keyStr));
148                 elm_object_item_data_set(data_parentItem->item, data_parentItem);
149                 elm_genlist_item_update(data_parentItem->item);
150         }
151
152         if (data_parentItem->int_slp_setting_binded ==
153             INT_SLP_SETTING_CALL_ALERT_VIB) {
154             if(ad->hnd_hpt < 0)
155                 {
156                         SETTING_TRACE_DEBUG("[ERROR] Can't use haptic handle.");
157                         return;
158                 }
159                 if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
160                         SETTING_TRACE("ERROR haptic_stop_all_effects");
161                         /* return; */
162                 }
163                 setting_profile_play_vibration(ad,
164                                                setting_profile_get_call_playing_vib_by_vconf_value
165                                                (data_subItem->chk_status));
166         }
167 }
168
169 static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
170 {
171         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
172         retm_if(data == NULL, "Invalid argument: data is NULL");
173
174         SettingProfileUG *ad = (SettingProfileUG *) data;
175         Elm_Object_Item *parentItem = event_info;       /* parent item */
176         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
177         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
178
179         Evas_Object *rgd;
180         if (data_parentItem == ad->data_call_alert_vib) {
181                 rgd = elm_radio_add(scroller);
182                 elm_radio_value_set(rgd, -1);
183                 setting_create_Gendial_exp_sub_field(scroller,
184                                                      &(ad->itc_1icon_1text_sub),
185                                                      __sound_sub_list_sel_cb,
186                                                      ad, parentItem,
187                                                      SWALLOW_Type_1RADIO, rgd,
188                                                      0,
189                                                      "IDS_ST_BODY_VIBRATION_1",
190                                                      NULL);
191
192                 setting_create_Gendial_exp_sub_field(scroller,
193                                                      &(ad->itc_1icon_1text_sub),
194                                                      __sound_sub_list_sel_cb,
195                                                      ad, parentItem,
196                                                      SWALLOW_Type_1RADIO, rgd,
197                                                      1,
198                                                      "IDS_ST_BODY_VIBRATION_2",
199                                                      NULL);
200
201                 setting_create_Gendial_exp_sub_field(scroller,
202                                                      &(ad->itc_1icon_1text_sub),
203                                                      __sound_sub_list_sel_cb,
204                                                      ad, parentItem,
205                                                      SWALLOW_Type_1RADIO, rgd,
206                                                      2,
207                                                      "IDS_ST_BODY_VIBRATION_3",
208                                                      NULL);
209
210                 setting_update_chk_status(rgd,
211                                           data_parentItem->
212                                           int_slp_setting_binded);
213
214         } else if (data_parentItem == ad->data_msg_alert_repeat
215                    || data_parentItem == ad->data_email_alert_repeat) {
216                 rgd = elm_radio_add(scroller);
217                 elm_radio_value_set(rgd, -1);
218                 setting_create_Gendial_exp_sub_field(scroller,
219                                                      &(ad->itc_1icon_1text_sub),
220                                                      __sound_sub_list_sel_cb,
221                                                      ad, parentItem,
222                                                      SWALLOW_Type_1RADIO, rgd,
223                                                      0,
224                                                      _(SETTING_SOUND_TEXT_REPEAT_ONCE),
225                                                      NULL);
226
227                 setting_create_Gendial_exp_sub_field(scroller,
228                                                      &(ad->itc_1icon_1text_sub),
229                                                      __sound_sub_list_sel_cb,
230                                                      ad, parentItem,
231                                                      SWALLOW_Type_1RADIO, rgd,
232                                                      1,
233                                                      _(SETTING_SOUND_TEXT_REPEAT_2MIN),
234                                                      NULL);
235
236                 setting_create_Gendial_exp_sub_field(scroller,
237                                                      &(ad->itc_1icon_1text_sub),
238                                                      __sound_sub_list_sel_cb,
239                                                      ad, parentItem,
240                                                      SWALLOW_Type_1RADIO, rgd,
241                                                      2,
242                                                      _(SETTING_SOUND_TEXT_REPEAT_5MIN),
243                                                      NULL);
244                 setting_create_Gendial_exp_sub_field(scroller,
245                                                      &(ad->itc_1icon_1text_sub),
246                                                      __sound_sub_list_sel_cb,
247                                                      ad, parentItem,
248                                                      SWALLOW_Type_1RADIO, rgd,
249                                                      3,
250                                                      _(SETTING_SOUND_TEXT_REPEAT_10MIN),
251                                                      NULL);
252
253                 setting_update_chk_status(rgd,
254                                           data_parentItem->int_slp_setting_binded);
255         }
256 }
257
258 static void __mm_player_msg_cb(void *user_param)
259 {
260         ret_if(user_param == NULL);
261         SettingProfileUG *ad = (SettingProfileUG *)user_param;
262         /*switch(message)
263         {
264                 case MM_MESSAGE_END_OF_STREAM:
265                         SETTING_TRACE_DEBUG("End of Stream");
266                         setting_profile_close_all_mm_players(ad);
267                         return TRUE;
268                 default:
269                         return FALSE;
270         }*/
271         SETTING_TRACE("completed_cb is called.");
272         setting_profile_close_all_mm_players(ad);
273 }
274
275 void __ringtone_start_change_cb(void *data, Evas_Object *obj, void *event_info)
276 {
277         ret_if(data == NULL);
278
279         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
280         SettingProfileUG *ad = list_item->userdata;
281
282         ad->cur_vol_type = SETTING_VOL_TYPE_RINGTONE;
283         setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
284 }
285 void __noti_start_change_cb(void *data, Evas_Object *obj, void *event_info)
286 {
287         ret_if(data == NULL);
288
289         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
290         SettingProfileUG *ad = list_item->userdata;
291
292         ad->cur_vol_type = SETTING_VOL_TYPE_NOTIFICATION;
293         setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_NOTIFICATION);
294 }
295 void __media_start_change_cb(void *data, Evas_Object *obj, void *event_info)
296 {
297         ret_if(data == NULL);
298
299         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
300         SettingProfileUG *ad = list_item->userdata;
301
302         ad->cur_vol_type = SETTING_VOL_TYPE_MEDIA;
303         setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_MEDIA);
304 }
305 void __system_start_change_cb(void *data, Evas_Object *obj, void *event_info)
306 {
307         ret_if(data == NULL);
308
309         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
310         SettingProfileUG *ad = list_item->userdata;
311
312         ad->cur_vol_type = SETTING_VOL_TYPE_SYSTEM;
313         setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_SYSTEM);
314 }
315
316 void __noti_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
317 {
318         ret_if(data == NULL);
319
320         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
321         SettingProfileUG *ad = list_item->userdata;
322
323         ad->cur_vol_type = SETTING_VOL_TYPE_NOTI_VIB;
324         setting_profile_close_all_mm_players(ad);
325
326         int err = 0;
327         char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
328         svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, MAX_COMMON_BUFFER_LEN);
329         haptic_stop_all_effects(ad->hnd_hpt);
330         err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
331         if (err < 0)
332                         SETTING_TRACE("Failed to play haptic monotone");
333 }
334
335 void __haptic_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
336         {
337         SETTING_TRACE_BEGIN;
338         ret_if(data == NULL);
339
340         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
341         SettingProfileUG *ad = list_item->userdata;
342
343         ad->cur_vol_type = SETTING_VOL_TYPE_HAPTIC_VIB;
344         setting_profile_close_all_mm_players(ad);
345
346         int err = 0;
347         char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
348         svi_get_path(SVI_TYPE_VIB, SVI_VIB_OPERATION_VIBRATION, pattern_file, MAX_COMMON_BUFFER_LEN);
349         haptic_stop_all_effects(ad->hnd_hpt);
350         err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
351
352         if (err < 0)
353                 SETTING_TRACE("Failed to play haptic monotone");
354 }
355
356 void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
357 {
358         SETTING_TRACE_BEGIN;
359         ret_if(data == NULL);
360
361         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
362         SettingProfileUG *ad = list_item->userdata;
363
364         char    *pa_tone_path = NULL;
365         player_h **player = NULL;
366
367         double   value = elm_slider_value_get(obj);
368         list_item->chk_status = (unsigned int)(value+0.5);
369
370         switch(ad->cur_vol_type)
371         {
372                 case SETTING_VOL_TYPE_RINGTONE:
373                         sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
374                         player = &(ad->mp_ringtone);
375                         if(*player != NULL)
376                                 return;
377                         SETTING_TRACE_DEBUG("ringtone player will be created");
378                         pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
379                         if(pa_tone_path == NULL)
380                         {
381                                 pa_tone_path = SETTING_DEFAULT_CALL_TONE;
382
383                                 if(vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0)
384                                         return;
385                         }
386                         setting_profile_play_sound_origin(player, ad, __mm_player_msg_cb,
387                                                         pa_tone_path,
388                                                         (float)value,
389                                                         SOUND_TYPE_RINGTONE);
390                         break;
391                 case SETTING_VOL_TYPE_NOTIFICATION:
392                         sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, list_item->chk_status);
393                         player = &(ad->mp_noti);
394                         if(*player != NULL)
395                                 return;
396                         SETTING_TRACE_DEBUG("noti player will be created");
397                         pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
398                         if(pa_tone_path == NULL)
399                         {
400                                 pa_tone_path = SETTING_DEFAULT_MSG_TONE;
401                                 if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE) < 0)
402                                         return;
403                         }
404                         setting_profile_play_sound_origin(player, ad, __mm_player_msg_cb,
405                                                         pa_tone_path,
406                                                         (float)value,
407                                                         SOUND_TYPE_NOTIFICATION);
408                         break;
409                 case SETTING_VOL_TYPE_MEDIA:
410                         sound_manager_set_volume(SOUND_TYPE_MEDIA, list_item->chk_status);
411                         player = &(ad->mp_media);
412                         if(*player != NULL)
413                                 return;
414                         SETTING_TRACE_DEBUG("media player will be created");
415                         pa_tone_path = (char*)strdup(SETTING_DEFAULT_MEDIA_TONE);
416
417                         setting_profile_play_sound_origin(player, ad, __mm_player_msg_cb,
418                                                         pa_tone_path,
419                                                         (float)value,
420                                                         SOUND_TYPE_MEDIA);
421                         break;
422                 case SETTING_VOL_TYPE_SYSTEM:
423                         sound_manager_set_volume(SOUND_TYPE_SYSTEM, list_item->chk_status);
424                         player = &(ad->mp_sys);
425                         if(*player != NULL)
426                                 return;
427                         SETTING_TRACE_DEBUG("ringtone player will be created");
428                         char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
429                         svi_get_path(SVI_TYPE_SND, SVI_SND_TOUCH_TOUCH1, pattern_file, sizeof(pattern_file));
430
431                         setting_profile_play_sound_origin(player, ad, __mm_player_msg_cb,
432                                                         pattern_file,
433                                                         (float)value,
434                                                         SOUND_TYPE_SYSTEM);
435                         break;
436                 default:
437                 return;
438         }
439
440         FREE(pa_tone_path);
441
442         SETTING_TRACE_END;
443 }
444
445 void __vibration_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
446 {
447         ret_if(data == NULL);
448
449         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
450         SettingProfileUG *ad = list_item->userdata;
451
452         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
453                 SETTING_TRACE("ERROR haptic_stop_all_effects");
454                 /* return; */
455         }
456
457         double value = 0.0;
458         switch(ad->cur_vol_type)
459         {
460                 case SETTING_VOL_TYPE_NOTI_VIB:
461                         if(ad->data_vib_volume)
462                         {
463                                 value = elm_slider_value_get(ad->data_vib_volume->eo_check);
464                                 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
465                                 if(value < 0.5)
466                                         elm_slider_value_set(ad->data_vib_volume->eo_check, 0);
467                                 else
468                                         elm_slider_value_set(ad->data_vib_volume->eo_check, (unsigned int)(value+0.5));
469                         }
470                         break;
471                 case SETTING_VOL_TYPE_HAPTIC_VIB:
472                         if(ad->data_touch_vib)
473                         {
474                                 value = elm_slider_value_get(ad->data_touch_vib->eo_check);
475                                 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
476                                 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_BAK_INT, (unsigned int)(value+0.5));
477                                 if(value < 0.5)
478                                         elm_slider_value_set(ad->data_touch_vib->eo_check, 0);
479                                 else
480                                         elm_slider_value_set(ad->data_touch_vib->eo_check, (unsigned int)(value+0.5));
481                         }
482                         break;
483                 default:
484                         break;
485         }
486         ad->cur_vol_type = SETTING_VOL_TYPE_MAX;
487         SETTING_TRACE_END;
488 }
489
490 static void __main_list_unrealized_cb(void *data, Evas_Object *obj, void *event_info)
491 {
492         SETTING_TRACE_BEGIN;
493         ret_if(data == NULL);
494
495         SettingProfileUG *ad = (SettingProfileUG *) data;
496
497         Elm_Object_Item *item = (Elm_Object_Item *)event_info;
498         Setting_GenGroupItem_Data *list_item =
499             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
500
501         /* backup each slider's value */
502         if(list_item == ad->data_call_volume)
503                 sound_manager_set_volume(SOUND_TYPE_RINGTONE, ad->data_call_volume->chk_status);
504         else if(list_item == ad->data_noti_volume)
505                 sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, ad->data_noti_volume->chk_status);
506         else if(list_item == ad->data_media_volume)
507                 sound_manager_set_volume(SOUND_TYPE_MEDIA, ad->data_media_volume->chk_status);
508         else if(list_item == ad->data_touch_volume)
509                 sound_manager_set_volume(SOUND_TYPE_SYSTEM, ad->data_touch_volume->chk_status);
510         else if(list_item == ad->data_vib_volume)
511                 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, ad->data_vib_volume->chk_status);
512         else if(list_item == ad->data_touch_vib)
513                 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, ad->data_touch_vib->chk_status);
514 }
515
516 static Evas_Object *__get_main_list(void *data)
517 {
518         retv_if(data == NULL, NULL);
519
520         SettingProfileUG *ad = (SettingProfileUG *) data;
521
522         __setting_profile_ug_key_grab(ad);
523
524         if(ad->sub_view[SETTING_PROF_VIEW_VOL])
525                 return ad->sub_view[SETTING_PROF_VIEW_VOL];
526
527         Evas_Object *genlist = elm_genlist_add(ad->navi_bar);
528         elm_object_style_set(genlist, "dialogue");
529         retvm_if(genlist == NULL, NULL,
530                  "Cannot set genlist object as contento of layout");
531         elm_genlist_clear(genlist);     /* first to clear list */
532
533         int vconf_value = 0;
534         int mm_value = 0;
535
536         Elm_Object_Item *item = elm_genlist_item_append(genlist,
537                                                                 &(ad->itc_seperator), NULL, NULL,
538                                                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
539         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
540
541         /* a.use sound */
542         if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &vconf_value) < 0)
543                 vconf_value = TRUE;     /*  default value of sound : on */
544         ad->data_sound =
545             setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
546                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
547                                              ad, SWALLOW_Type_1TOGGLE, NULL,
548                                              NULL, vconf_value,
549                                              SETTING_SOUND_TEXT_SOUND, NULL,
550                                              setting_profile_sound_main_Gendial_chk_cb);
551         if (ad->data_sound) {
552                 ad->data_sound->userdata = ad;
553         } else {
554                 SETTING_TRACE_ERROR("ad->data_sound is NULL");
555         }
556         /* b.use vib */
557         if (vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vconf_value) < 0)
558                 vconf_value = TRUE;     /*  default value of vibration : on */
559         ad->data_vibration =
560             setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
561                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
562                                              ad, SWALLOW_Type_1TOGGLE, NULL,
563                                              NULL, vconf_value,
564                                              SETTING_SOUND_TEXT_VIBRATION, NULL,
565                                              setting_profile_sound_main_Gendial_chk_cb);
566         if (ad->data_vibration) {
567                 ad->data_vibration->userdata = ad;
568         } else {
569                 SETTING_TRACE_ERROR("ad->data_vibration is NULL");
570         }
571
572         (void)setting_create_Gendial_field_titleItem(genlist,
573                                                      &(ad->itc_group_item),
574                                                      "IDS_ST_BODY_VOLUME", NULL);
575
576         /* d.call volumn. */
577         if(sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value) < 0)
578                 mm_value = SETTING_DEFAULT_RINGTONE_VOL_INT;
579         ad->data_call_volume =
580             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
581                                              NULL,
582                                              SWALLOW_Type_LAYOUT_SLIDER,
583                                              IMG_SLIDER_BTN_VOLUME01,
584                                              IMG_SLIDER_BTN_VOLUME02, mm_value,
585                                              SETTING_SOUND_TEXT_INCOMING_CALL,
586                                              NULL,
587                                              setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb);
588         if (ad->data_call_volume) {
589                 ad->data_call_volume->win_main = ad->win_main_layout;
590                 ad->data_call_volume->evas = ad->evas;
591                 ad->data_call_volume->isIndicatorVisible = true;
592                 ad->data_call_volume->slider_min = 0;
593                 ad->data_call_volume->slider_max = SETTING_SOUND_VOL_MAX;
594                 ad->data_call_volume->userdata = ad;
595                 ad->data_call_volume->start_change_cb = __ringtone_start_change_cb;
596                 ad->data_call_volume->stop_change_cb = __volume_stop_change_cb;
597                 ad->data_call_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
598         } else {
599                 SETTING_TRACE_ERROR("ad->data_call_volume is NULL");
600         }
601
602         /* e.noti volumn */
603         if(sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value) < 0)
604                 mm_value = SETTING_DEFAULT_NOTI_VOL_INT;
605
606         (void)setting_create_Gendial_field_titleItem(genlist,
607                                                      &(itc_group_item),
608                                                      SETTING_SOUND_TEXT_NOTIFICATION, NULL);
609         ad->data_noti_volume =
610             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
611                                              NULL,
612                                              SWALLOW_Type_LAYOUT_SLIDER,
613                                              IMG_SLIDER_BTN_VOLUME01,
614                                              IMG_SLIDER_BTN_VOLUME02, mm_value,
615                                              NULL,//SETTING_SOUND_TEXT_NOTIFICATION,
616                                              NULL,
617                                              setting_profile_sound_main_noti_sound_slider_value_change_cb);
618         if (ad->data_noti_volume) {
619                 ad->data_noti_volume->win_main = ad->win_main_layout;
620                 ad->data_noti_volume->evas = ad->evas;
621                 ad->data_noti_volume->isIndicatorVisible = true;
622                 ad->data_noti_volume->slider_min = 0;
623                 ad->data_noti_volume->slider_max = SETTING_SOUND_VOL_MAX;
624                 ad->data_noti_volume->userdata = ad;
625                 ad->data_noti_volume->start_change_cb = __noti_start_change_cb;
626                 ad->data_noti_volume->stop_change_cb = __volume_stop_change_cb;
627                 ad->data_noti_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
628         } else {
629                 SETTING_TRACE_ERROR("ad->data_noti_volume is NULL");
630         }
631
632         /* g.media volume */
633         if(sound_manager_get_volume(SOUND_TYPE_MEDIA, &mm_value) < 0)
634                 mm_value = SETTING_DEFAULT_MEDIA_VOL_INT;
635
636         (void)setting_create_Gendial_field_titleItem(genlist,
637                                                      &(itc_group_item),
638                                                      SETTING_SOUND_TEXT_MEDIA, NULL);
639         ad->data_media_volume =
640             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
641                                              NULL,
642                                              SWALLOW_Type_LAYOUT_SLIDER,
643                                              IMG_SLIDER_BTN_VOLUME01,
644                                              IMG_SLIDER_BTN_VOLUME02, mm_value,
645                                              NULL, NULL,
646                                              setting_profile_sound_main_media_sound_slider_value_change_cb);
647         if (ad->data_media_volume) {
648                 ad->data_media_volume->win_main = ad->win_main_layout;
649                 ad->data_media_volume->evas = ad->evas;
650                 ad->data_media_volume->isIndicatorVisible = true;
651                 ad->data_media_volume->slider_min = 0;
652                 ad->data_media_volume->slider_max = SETTING_SOUND_VOL_MAX;
653                 ad->data_media_volume->userdata = ad;
654                 ad->data_media_volume->start_change_cb = __media_start_change_cb;
655                 ad->data_media_volume->stop_change_cb = __volume_stop_change_cb;
656                 ad->data_media_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
657         } else {
658                 SETTING_TRACE_ERROR("ad->data_media_volume is NULL");
659         }
660
661         /* h.system volume */
662         if(sound_manager_get_volume(SOUND_TYPE_SYSTEM, &mm_value) < 0)
663         {
664                 SETTING_TRACE_DEBUG("Fail to get volume");
665                 mm_value = SETTING_DEFAULT_SYSTEM_VOL_INT;
666         }
667         (void)setting_create_Gendial_field_titleItem(genlist,
668                                                      &(itc_group_item),
669                                                      SETTING_SOUND_TEXT_SYSTEM, NULL);
670         ad->data_touch_volume =
671             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
672                                              NULL,
673                                              SWALLOW_Type_LAYOUT_SLIDER,
674                                              IMG_SLIDER_BTN_VOLUME01,
675                                              IMG_SLIDER_BTN_VOLUME02, mm_value,
676                                              NULL, NULL,
677                                              settings_profile_sound_main_sys_sound_slider_value_change_cb);
678         if (ad->data_touch_volume) {
679                 ad->data_touch_volume->win_main = ad->win_main_layout;
680                 ad->data_touch_volume->evas = ad->evas;
681                 ad->data_touch_volume->isIndicatorVisible = true;
682                 ad->data_touch_volume->slider_min = 0;
683                 ad->data_touch_volume->slider_max = SETTING_SOUND_VOL_MAX;
684                 ad->data_touch_volume->userdata = ad;
685                 ad->data_touch_volume->start_change_cb = __system_start_change_cb;
686                 ad->data_touch_volume->stop_change_cb = __volume_stop_change_cb;
687                 ad->data_touch_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
688         } else {
689                 SETTING_TRACE_ERROR("ad->data_touch_volume is NULL");
690         }
691
692         (void)setting_create_Gendial_field_titleItem(genlist,
693                                                      &(ad->itc_group_item),
694                                                      "IDS_ST_BODY_CALLALERTTYPE_VIBRATION", NULL);
695
696         /* f.noti vib */
697         if (vconf_get_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, &vconf_value) < 0)
698                 vconf_value = SETTING_DEFAULT_NOTI_VIB_INT;     /*  default value of notification vibration volume : 5 */
699
700         (void)setting_create_Gendial_field_titleItem(genlist,
701                                                      &(itc_group_item),
702                                                      SETTING_SOUND_TEXT_NOTIFICATION, NULL);
703         ad->data_vib_volume =
704             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
705                                              NULL,
706                                              SWALLOW_Type_LAYOUT_SLIDER,
707                                              IMG_VIBRATION_ICON_01,
708                                              IMG_VIBRATION_ICON_02, vconf_value,
709                                              NULL,//SETTING_SOUND_TEXT_NOTIFICATION,
710                                              NULL,
711                                              setting_profile_sound_main_vib_sound_slider_value_change_cb);
712         if (ad->data_vib_volume) {
713                 ad->data_vib_volume->win_main = ad->win_main_layout;
714                 ad->data_vib_volume->evas = ad->evas;
715                 ad->data_vib_volume->isIndicatorVisible = true;
716                 ad->data_vib_volume->slider_min = 0;
717                 ad->data_vib_volume->slider_max = SETTING_VIB_VOL_MAX;
718                 ad->data_vib_volume->userdata = ad;
719                 ad->data_vib_volume->start_change_cb = __noti_vib_start_change_cb;
720                 ad->data_vib_volume->stop_change_cb = __vibration_stop_change_cb;
721                 ad->data_vib_volume->belongs_to = SETTING_VOL_VIBRATION_GROUP;
722         } else {
723                 SETTING_TRACE_ERROR("ad->data_vib_volume is NULL");
724         }
725
726         /* i.haptic vib */
727         if (vconf_get_int
728             (VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, &vconf_value) < 0)
729                 vconf_value = SETTING_DEFAULT_HAPTIC_VIB_INT;   /*  default value of haptic vibration volume : 3 */
730
731         (void)setting_create_Gendial_field_titleItem(genlist,
732                                                      &(itc_group_item),
733                                                      "IDS_ST_BODY_SOUNDFEEDBACK_HAPTIC_FEEDBACK", NULL);
734         ad->data_touch_vib =
735             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
736                                              NULL,
737                                              SWALLOW_Type_LAYOUT_SLIDER,
738                                              IMG_VIBRATION_ICON_01,
739                                              IMG_VIBRATION_ICON_02, vconf_value,
740                                              NULL, NULL,
741                                              setting_profile_sound_main_touchVib_sound_slider_value_change_cb);
742         if (ad->data_touch_vib) {
743                 ad->data_touch_vib->win_main = ad->win_main_layout;
744                 ad->data_touch_vib->evas = ad->evas;
745                 ad->data_touch_vib->isIndicatorVisible = true;
746                 ad->data_touch_vib->slider_min = 0;
747                 ad->data_touch_vib->slider_max = SETTING_VIB_VOL_MAX;
748                 ad->data_touch_vib->userdata = ad;
749                 ad->data_touch_vib->start_change_cb = __haptic_vib_start_change_cb;
750                 ad->data_touch_vib->stop_change_cb = __vibration_stop_change_cb;
751                 ad->data_touch_vib->belongs_to = SETTING_VOL_VIBRATION_GROUP;
752         } else {
753                 SETTING_TRACE_ERROR("ad->data_touch_vib is NULL");
754         }
755
756         setting_create_Gendial_field_def(genlist, &(ad->itc_bg_1icon),
757                                          NULL, ad,
758                                          SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
759                                          NULL, NULL, 0, SOUND_DESC, NULL, NULL);
760         elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
761                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
762
763         /* Touch sounds */
764         if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &vconf_value) < 0)
765                 vconf_value = TRUE;     /*  default value of touch sounds : on */
766
767         ad->data_touch_sounds =
768             setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
769                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
770                                              ad, SWALLOW_Type_1TOGGLE, NULL,
771                                              NULL, vconf_value,
772                                              "IDS_ST_BODY_TOUCH_SOUNDS",
773                                              NULL,
774                                              setting_profile_sound_main_Gendial_chk_cb);
775         if (ad->data_touch_sounds) {
776                 ad->data_touch_sounds->userdata = ad;
777         } else {
778                 SETTING_TRACE_ERROR("ad->data_lock_sound is NULL");
779         }
780
781         setting_create_Gendial_field_def(genlist, &(ad->itc_bg_1icon),
782                                          NULL, ad,
783                                          SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
784                                          NULL, NULL, 0, "IDS_ST_BODY_PLAY_SOUND_WHEN_MAKING_SCREEN_SELECTION", NULL, NULL);
785         elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
786                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
787
788         __change_state_of_sliderbars(ad);
789
790         evas_object_smart_callback_add(genlist, "unrealized", __main_list_unrealized_cb, ad);
791
792         ad->sub_view[SETTING_PROF_VIEW_VOL] = genlist;
793
794         return ad->sub_view[SETTING_PROF_VIEW_VOL];
795 }
796
797 static Evas_Object *__get_ringtone_list(void *data)
798 {
799         retv_if(data == NULL, NULL);
800         SettingProfileUG *ad = (SettingProfileUG *) data;
801
802         if(ad->sub_view[SETTING_PROF_VIEW_RTN])
803                 return ad->sub_view[SETTING_PROF_VIEW_RTN];
804
805         Evas_Object *genlist = elm_genlist_add(ad->navi_bar);
806         elm_object_style_set(genlist, "dialogue");
807         retvm_if(genlist == NULL, NULL,
808                  "Cannot set genlist object as contento of layout");
809         elm_genlist_clear(genlist);     /* first to clear list */
810         setting_enable_expandable_genlist(genlist, ad, __sound_exp_cb, NULL);
811
812         /*  a. incoming call group */
813         (void)setting_create_Gendial_field_titleItem(genlist,
814                                                      &(ad->itc_group_item),
815                                                      SETTING_SOUND_TEXT_INCOMING_CALL,
816                                                      NULL);
817
818         /*  a-1. ringtone */
819         int vconf_ret = 0;
820         char *sub_desc = NULL;
821         char *pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
822         if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
823         {
824                 pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
825                 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_ringtone);
826                 if(vconf_ret < 0)
827                         SETTING_TRACE_DEBUG("failed to set vconf");
828         }
829         sub_desc = setting_file_basename(pa_ringtone);
830
831         ad->data_call_alert_tone =
832             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
833                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
834                                              ad, SWALLOW_Type_INVALID, NULL,
835                                              NULL, 0, SETTING_SOUND_TEXT_CALL_RINGTONE,
836                                              sub_desc, NULL);
837         if (ad->data_call_alert_tone) {
838                 ad->data_call_alert_tone->userdata = ad;
839         } else {
840                 SETTING_TRACE_ERROR("ad->data_call_alert_tone is NULL");
841         }
842
843         FREE(pa_ringtone);
844         G_FREE(sub_desc);
845
846         /*  b. notification */
847         (void)setting_create_Gendial_field_titleItem(genlist,
848                                                      &(ad->itc_group_item),
849                                                      SETTING_SOUND_TEXT_NOTIFICATION,
850                                                      NULL);
851
852         int repeat_value = 0;
853
854         /*  b-1. msg ringtone */
855         pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
856         if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
857         {
858                 pa_ringtone = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
859                 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE);
860                 if(vconf_ret < 0)
861                         SETTING_TRACE_DEBUG("failed to set vconf");
862         }
863         sub_desc = setting_file_basename(pa_ringtone);
864
865         ad->data_msg_alert_tone =
866             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
867                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
868                                              ad, SWALLOW_Type_INVALID, NULL,
869                                              NULL, 0,
870                                              SETTING_SOUND_TEXT_MSG_ALERT,
871                                              sub_desc, NULL);
872         if (ad->data_msg_alert_tone) {
873                 ad->data_msg_alert_tone->userdata = ad;
874         } else {
875                 SETTING_TRACE_ERROR("ad->data_msg_alert_tone is NULL");
876         }
877         FREE(pa_ringtone);
878         G_FREE(sub_desc);
879
880         /*  b-2. msg alert repetition */
881         if (vconf_get_int
882             (VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &repeat_value) != 0)
883                 repeat_value = SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT;   /*  default 0 : repeat once */
884         ad->data_msg_alert_repeat =
885             setting_create_Gendial_exp_parent_field(genlist,
886                                                     &(ad->itc_2text_3_parent),
887                                                     setting_profile_sound_main_mouse_up_Gendial_list_cb,
888                                                     ad, SWALLOW_Type_INVALID,
889                                                     SETTING_SOUND_TEXT_MSG_RINGTONE_REPEAT,
890                                                     _(repeat_type[repeat_value]));
891         if (ad->data_msg_alert_repeat) {
892                 ad->data_msg_alert_repeat->int_slp_setting_binded =
893                         INT_SLP_SETTING_MSG_ALERT_REPEAT;
894         } else {
895                 SETTING_TRACE_ERROR("ad->data_msg_alert_repeat is NULL");
896         }
897
898         /*  b-3. email ringtone */
899         pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR);
900         if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
901         {
902                 pa_ringtone = (char *)strdup(SETTING_DEFAULT_EMAIL_TONE);
903                 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, SETTING_DEFAULT_EMAIL_TONE);
904                 if(vconf_ret < 0)
905                         SETTING_TRACE_DEBUG("failed to set vconf");
906         }
907         sub_desc = setting_file_basename(pa_ringtone);
908
909         ad->data_email_alert_tone =
910             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
911                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
912                                              ad, SWALLOW_Type_INVALID, NULL,
913                                              NULL, 0,
914                                              SETTING_SOUND_TEXT_EMAIL_ALERT,
915                                              sub_desc, NULL);
916         if (ad->data_email_alert_tone) {
917                 ad->data_email_alert_tone->userdata = ad;
918         } else {
919                 SETTING_TRACE_ERROR("ad->data_email_alert_tone is NULL");
920         }
921         FREE(pa_ringtone);
922         G_FREE(sub_desc);
923
924         /*  b-4. email alert repetition */
925         if (vconf_get_int
926             (VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT,
927              &repeat_value) != 0)
928                 repeat_value = SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT;   /*  default 0 : repeat once */
929         ad->data_email_alert_repeat =
930             setting_create_Gendial_exp_parent_field(genlist,
931                                                     &(ad->itc_2text_3_parent),
932                                                     setting_profile_sound_main_mouse_up_Gendial_list_cb,
933                                                     ad, SWALLOW_Type_INVALID,
934                                                     SETTING_SOUND_TEXT_EMAIL_RINGTONE_REPEAT,
935                                                     _(repeat_type[repeat_value]));
936         if (ad->data_email_alert_repeat) {
937                 ad->data_email_alert_repeat->int_slp_setting_binded =
938                         INT_SLP_SETTING_EMAIL_ALERT_REPEAT;
939         } else {
940                 SETTING_TRACE_ERROR("ad->data_email_alert_repeat is NULL");
941         }
942
943         Elm_Object_Item *item = NULL;
944         item = elm_genlist_item_append(genlist, &itc_bottom_seperator, NULL, NULL,
945                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
946         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
947
948         ad->sub_view[SETTING_PROF_VIEW_RTN] = genlist;
949
950         return ad->sub_view[SETTING_PROF_VIEW_RTN];
951 }
952
953 static void __view_change_cb(void *data, Evas_Object *obj, void *event_info)
954 {
955         //appcore_measure_start();
956         retm_if(event_info == NULL, "Invalid argmuent: event info is NULL");
957         retm_if(data == NULL, "Invalid argmuent: data is NULL");
958
959         SettingProfileUG *ad = (SettingProfileUG *) data;
960
961         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
962                 SETTING_TRACE("ERROR haptic_stop_all_effects");
963                 /* return; */
964         }
965         setting_profile_close_all_mm_players(ad);
966
967         Evas_Object *sub_view = NULL;
968         Elm_Object_Item *sel_item = elm_toolbar_selected_item_get(obj);
969         const char *tab_lable = elm_object_item_text_get(sel_item);
970         ret_if(!tab_lable);
971         //SETTING_TRACE("tab_lable:%s", tab_lable);
972         if (0 == safeStrCmp(tab_lable, VOLUME_STR)) {
973                 if(ad->hnd_hpt)
974                         haptic_stop_all_effects(ad->hnd_hpt);
975                 sub_view = __get_main_list(ad);
976         } else if (0 == safeStrCmp(tab_lable, RINGTONE_STR)) {
977                 sub_view = __get_ringtone_list(ad);
978         }
979
980         Evas_Object *old_sub_view = elm_object_part_content_get(ad->view_layout, "elm.swallow.content");
981         ret_if(old_sub_view == sub_view);
982
983         if (sub_view) {
984                 if (old_sub_view)
985                 {
986                         elm_object_part_content_unset(ad->view_layout, "elm.swallow.content");
987                         evas_object_hide(old_sub_view);
988                 }
989                 elm_object_part_content_set(ad->view_layout, "elm.swallow.content", sub_view);
990                 evas_object_show(sub_view);
991         }
992 }
993
994 static int setting_profile_sound_main_create(void *cb)
995 {
996         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
997
998         SettingProfileUG *ad = (SettingProfileUG *) cb;
999
1000         ad->ly_main = setting_create_win_layout(ad->win_main_layout, ad->win_get);
1001         ad->navi_bar = setting_create_navi_bar(ad->ly_main);
1002
1003         /*  view layout */
1004         Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
1005         elm_layout_theme_set(view_layout, "layout", "tabbar", "default");
1006         evas_object_show(view_layout);
1007         ad->view_layout = view_layout;
1008
1009         Evas_Object *tabbar= elm_toolbar_add(ad->navi_bar);
1010         if(tabbar == NULL)
1011                 return SETTING_RETURN_FAIL;
1012
1013         elm_object_part_content_set(view_layout, "elm.swallow.tabbar", tabbar);
1014         ad->ctrl_bar = tabbar;
1015         elm_toolbar_shrink_mode_set(tabbar, ELM_TOOLBAR_SHRINK_EXPAND);
1016         elm_object_style_set(tabbar, "tabbar");
1017         elm_toolbar_transverse_expanded_set(tabbar, EINA_TRUE);
1018
1019         ad->ctrl_item[0] = elm_toolbar_item_append(tabbar,
1020                                         IMG_CTRL_ICON_VOLUME,
1021                                         VOLUME_STR, __view_change_cb, ad);
1022
1023         ad->ctrl_item[1] = elm_toolbar_item_append(tabbar,
1024                                         IMG_CTRL_ICON_RINGTONE,
1025                                         RINGTONE_STR, __view_change_cb, ad);
1026
1027         elm_toolbar_select_mode_set(tabbar, ELM_OBJECT_SELECT_MODE_ALWAYS);
1028         elm_toolbar_item_selected_set(ad->ctrl_item[0], EINA_TRUE);
1029
1030         Evas_Object *ug_back_btn = elm_button_add(ad->navi_bar);
1031         elm_object_style_set(ug_back_btn, NAVI_BACK_BUTTON_STYLE);
1032         evas_object_smart_callback_add(ug_back_btn, "clicked", setting_profile_sound_main_click_softkey_cancel_cb, ad);
1033
1034         Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->navi_bar, NULL, ug_back_btn, NULL, ad->view_layout, "tabbar");
1035         elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
1036
1037         setting_view_profile_sound_main.is_create = TRUE;
1038
1039         return SETTING_RETURN_SUCCESS;
1040 }
1041
1042 static int setting_profile_sound_main_destroy(void *cb)
1043 {
1044         /* error check */
1045         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1046
1047         SettingProfileUG *ad = (SettingProfileUG *) cb;
1048
1049         __setting_profile_ug_key_ungrab(ad);
1050
1051         if (ad->ly_main != NULL) {
1052                 //Fix the memory leak,
1053                 //Manage ad->sub_view[] separately, unset first, then delete in together
1054                 if (ad->view_layout)
1055                 {
1056                         elm_object_part_content_unset(ad->view_layout, "elm.swallow.content");
1057                 }
1058                 int i = SETTING_PROF_VIEW_VOL;
1059                 for (; i < SETTING_PROF_VIEW_MAX; i++ )
1060                 {
1061                         evas_object_del(ad->sub_view[i]);
1062                 }
1063
1064                 evas_object_del(ad->ly_main);
1065                 setting_view_profile_sound_main.is_create = FALSE;
1066         }
1067         return SETTING_RETURN_SUCCESS;
1068 }
1069
1070 static int setting_profile_sound_main_update(void *cb)
1071 {
1072         /* error check */
1073         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1074
1075         SettingProfileUG *ad = (SettingProfileUG *) cb;
1076
1077         if (ad->ly_main != NULL) {
1078                 evas_object_show(ad->ly_main);
1079         }
1080
1081         return SETTING_RETURN_SUCCESS;
1082 }
1083
1084 static int setting_profile_sound_main_cleanup(void *cb)
1085 {
1086         /* error check */
1087         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1088
1089         SettingProfileUG *ad = (SettingProfileUG *) cb;
1090
1091         if (ad->ly_main != NULL) {
1092                 evas_object_hide(ad->ly_main);
1093         }
1094
1095         return SETTING_RETURN_SUCCESS;
1096 }
1097
1098 /* ***************************************************
1099  *
1100  *general func
1101  *
1102  ***************************************************/
1103
1104 /* ***************************************************
1105  *
1106  *call back func
1107  *
1108  ***************************************************/
1109
1110 static void setting_profile_sound_main_click_softkey_cancel_cb(void *data,
1111                                                    Evas_Object *obj,
1112                                                    void *event_info)
1113 {
1114         /* error check */
1115         ret_if(data == NULL);
1116
1117         SettingProfileUG *ad = (SettingProfileUG *) data;
1118
1119         /* close mm plaer */
1120         setting_profile_close_all_mm_players(ad);
1121         /* close vibration */
1122         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1123                 SETTING_TRACE("ERROR haptic_stop_all_effects");
1124                 /* return; */
1125         }
1126
1127         /* Send destroy request */
1128         ug_destroy_me(ad->ug);
1129
1130         return;
1131 }
1132
1133 static void setting_profile_sound_main_destroy_myfile_ug_cb(ui_gadget_h ug, void *priv)
1134 {
1135         ret_if(priv == NULL);
1136         SettingProfileUG *ad = (SettingProfileUG *) priv;
1137
1138         __setting_profile_ug_key_grab(ad);
1139
1140         if (ug) {
1141                 ug_destroy(ug);
1142                 ad->ug_loading = NULL;
1143         }
1144 }
1145
1146 static void
1147 setting_profile_sound_main_result_myfile_ug_cb(ui_gadget_h ug,
1148                                                service_h result, void *priv)
1149 {
1150         ret_if(priv == NULL);
1151
1152         SettingProfileUG *ad = (SettingProfileUG *) priv;
1153         char *ringtone_file = NULL;
1154         char *ringtone_path = NULL;
1155
1156         service_get_extra_data(result, "result", &ringtone_path);
1157         if(!ringtone_path)
1158                 return;
1159
1160         SETTING_TRACE("ringtone_path:%s", ringtone_path);
1161
1162         if (ringtone_path != NULL) {
1163                 ringtone_file = setting_file_basename(ringtone_path);
1164                 SETTING_TRACE("ringtone_file:%s", ringtone_file);
1165
1166                 if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_CALL_RINGTONE)) {
1167                         if (vconf_set_str
1168                             (VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, ringtone_path) == 0) {
1169                                 if (ad->data_call_alert_tone) {
1170                                         ad->data_call_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
1171
1172                                         elm_object_item_data_set(ad->data_call_alert_tone->item, ad->data_call_alert_tone);
1173                                         elm_genlist_item_update(ad->data_call_alert_tone->item);
1174                                 }
1175                         }
1176                 } else if (0 ==
1177                            safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_MSG_ALERT)) {
1178                         if (vconf_set_str
1179                             (VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ringtone_path) == 0) {
1180                                 if (ad->data_msg_alert_tone) {
1181                                         ad->data_msg_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
1182
1183                                         elm_object_item_data_set(ad->data_msg_alert_tone->item, ad->data_msg_alert_tone);
1184                                         elm_genlist_item_update(ad->data_msg_alert_tone->item);
1185                                 }
1186                         }
1187                 } else if (0 ==
1188                            safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_EMAIL_ALERT)) {
1189                         if (vconf_set_str
1190                             (VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, ringtone_path) == 0) {
1191                                 if (ad->data_email_alert_tone) {
1192                                         ad->data_email_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
1193
1194                                         elm_object_item_data_set(ad->data_email_alert_tone->item, ad->data_email_alert_tone);
1195                                         elm_genlist_item_update(ad->data_email_alert_tone->item);
1196                                 }
1197                         }
1198                 }
1199         }
1200
1201         G_FREE(ringtone_file);
1202         return;
1203 }
1204
1205 static void
1206 setting_profile_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1207                              void *priv)
1208 {
1209         ret_if(priv == NULL);
1210
1211         SettingProfileUG *ad = (SettingProfileUG *) priv;
1212         Evas_Object *base;
1213
1214         base = (Evas_Object *) ug_get_layout(ug);
1215         if (!base)
1216                 return;
1217
1218         switch (mode) {
1219                 case UG_MODE_FULLVIEW:
1220                         evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1221                         //elm_win_resize_object_add(ad->win_get, base);
1222                         evas_object_show(base);
1223                         break;
1224                 default:
1225                         break;
1226         }
1227 }
1228
1229
1230 static void setting_profile_sound_main_create_myfile_ug(SettingProfileUG *ad)
1231 {
1232         ret_if(ad == NULL);
1233
1234         if(ad->ug_loading)
1235         {
1236                 SETTING_TRACE("Myfiles ug is already loaded.");
1237                 return;
1238         }
1239
1240         struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1241         if (!cbs)
1242                 return;
1243
1244         cbs->layout_cb = setting_profile_layout_ug_cb;
1245         cbs->result_cb = setting_profile_sound_main_result_myfile_ug_cb;
1246         cbs->destroy_cb = setting_profile_sound_main_destroy_myfile_ug_cb;
1247         cbs->priv = (void *)ad;
1248
1249         service_h svc;
1250         if (service_create(&svc)) {
1251                 FREE(cbs);
1252                 return;
1253         }
1254
1255         const char *pa_cur_ringtone = NULL;
1256         const char *dir_path = NULL;
1257         if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_CALL_RINGTONE)) {
1258                 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
1259                 if (pa_cur_ringtone == NULL)
1260                 {
1261                         pa_cur_ringtone = SETTING_DEFAULT_CALL_TONE;
1262                 }
1263                 dir_path = SETTING_PROFILE_SOUND_RINGTONES_PATH;
1264         } else if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_MSG_ALERT)) {
1265                 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
1266                 if (pa_cur_ringtone == NULL)
1267                         pa_cur_ringtone = SETTING_DEFAULT_MSG_TONE;
1268                 dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
1269         } else if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_EMAIL_ALERT)) {
1270                 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR);
1271                 if (pa_cur_ringtone == NULL)
1272                         pa_cur_ringtone = SETTING_DEFAULT_EMAIL_TONE;
1273                 dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
1274         }
1275         SETTING_TRACE("pa_cur_ringtone:\t%s", pa_cur_ringtone);
1276         SETTING_TRACE("dir_path:\t%s", dir_path);
1277
1278         service_add_extra_data(svc, "marked_mode", pa_cur_ringtone);
1279         service_add_extra_data(svc, "path", dir_path);
1280         service_add_extra_data(svc, "select_type", "SINGLE_FILE");
1281         service_add_extra_data(svc, "file_type", "SOUND");
1282         service_add_extra_data(svc, "drm_type", "DRM_ALL");
1283
1284         SETTING_TRACE("ad->ug->layout:%p", (void *)ug_get_layout(ad->ug));
1285         ad->ug_loading = ug_create(ad->ug, "myfile-efl", UG_MODE_FULLVIEW, svc, cbs);
1286         if (NULL == ad->ug_loading) {   /* error handling */
1287                 SETTING_TRACE_ERROR("NULL == ad->ug_loading");
1288         }
1289
1290         service_destroy(svc);
1291         FREE(cbs);
1292
1293         /** @todo verify it's valid */
1294         if(pa_cur_ringtone)
1295                 FREE(pa_cur_ringtone);
1296
1297         __setting_profile_ug_key_ungrab(ad);
1298         return;
1299 }
1300
1301 static void
1302 setting_profile_sound_main_Gendial_chk_cb(void *data, Evas_Object *obj,
1303                                           void *event_info)
1304 {
1305         /* error check */
1306         ret_if(data == NULL);
1307
1308         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1309         SettingProfileUG *ad = list_item->userdata;
1310
1311         int state = list_item->chk_status = elm_check_state_get(obj);   /*  for genlist update status */
1312
1313         /* restore the selected check status */
1314         list_item->chk_status = state;
1315         elm_check_state_set(list_item->eo_check, state);
1316
1317         if (!safeStrCmp(SETTING_SOUND_TEXT_SOUND, list_item->keyStr)) {
1318                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, list_item->chk_status) < 0) {
1319                         list_item->chk_status = !state;
1320                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1321                 }
1322
1323                 if (list_item->chk_status) {
1324                         setting_enable_genlist_item(ad->data_call_volume->item);
1325                         setting_enable_genlist_item(ad->data_noti_volume->item);
1326                         setting_enable_genlist_item(ad->data_media_volume->item);
1327                         setting_enable_genlist_item(ad->data_touch_volume->item);
1328                 } else {
1329                         setting_profile_close_all_mm_players(ad);
1330                         setting_disable_genlist_item(ad->data_call_volume->item);
1331                         setting_disable_genlist_item(ad->data_noti_volume->item);
1332                         setting_disable_genlist_item(ad->data_media_volume->item);
1333                         setting_disable_genlist_item(ad->data_touch_volume->item);
1334                 }
1335         } else if (!safeStrCmp(SETTING_SOUND_TEXT_VIBRATION, list_item->keyStr)) {
1336                 if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, list_item->chk_status) < 0) {
1337                         list_item->chk_status = !state;
1338                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1339                 }
1340                 if (list_item->chk_status) {
1341                         setting_enable_genlist_item(ad->data_vib_volume->item);
1342                         setting_enable_genlist_item(ad->data_touch_vib->item);
1343
1344                         /* Play vib if vib turns on */
1345                         int err = 0;
1346                         char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
1347                         svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
1348                         haptic_stop_all_effects(ad->hnd_hpt);
1349                         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);
1350
1351                         if (err < 0)
1352                                 SETTING_TRACE("Failed to play haptic monotone");
1353                 } else {
1354                         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1355                                 SETTING_TRACE("ERROR haptic_stop_all_effects");
1356                         }
1357                         setting_disable_genlist_item(ad->data_vib_volume->item);
1358                         setting_disable_genlist_item(ad->data_touch_vib->item);
1359                 }
1360         }
1361         /* additional items */
1362         else if (!safeStrCmp(SETTING_SOUND_TEXT_LOCK_SOUND, list_item->keyStr)) {
1363                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, list_item->chk_status) < 0) {
1364                         list_item->chk_status = !state;
1365                         elm_check_state_set(list_item->eo_check, !state);
1366                 }
1367         }
1368         else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
1369                 if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, list_item->chk_status) < 0) {
1370                         list_item->chk_status = !state;
1371                         elm_check_state_set(list_item->eo_check, !state);
1372                 }
1373         }
1374
1375         /* end */
1376
1377 }
1378
1379 static void
1380 setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
1381                                                     Evas_Object *obj,
1382                                                     void *event_info)
1383 {
1384         /* error check */
1385         ret_if(data == NULL);
1386         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1387
1388         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1389         elm_genlist_item_selected_set(item, 0);
1390         Setting_GenGroupItem_Data *list_item =
1391             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
1392
1393         SettingProfileUG *ad = data;
1394
1395         if(ad->hnd_hpt)
1396                 haptic_stop_all_effects(ad->hnd_hpt);
1397
1398         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
1399         if (!safeStrCmp(SETTING_SOUND_TEXT_CALL_RINGTONE, list_item->keyStr)
1400             || !safeStrCmp(SETTING_SOUND_TEXT_MSG_ALERT, list_item->keyStr)
1401             || !safeStrCmp(SETTING_SOUND_TEXT_EMAIL_ALERT, list_item->keyStr)) {
1402                 ad->ringtone_type = list_item->keyStr;
1403                 setting_profile_sound_main_create_myfile_ug(ad);
1404         } else if (!safeStrCmp(SETTING_SOUND_TEXT_SOUND, list_item->keyStr)) {
1405                 int old_status = elm_check_state_get(list_item->eo_check);
1406                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, !old_status) == 0) {
1407                         /* new status */
1408                         list_item->chk_status = !old_status;
1409                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1410                         if (list_item->chk_status) {
1411                                 setting_enable_genlist_item(ad->data_call_volume->item);
1412                                 setting_enable_genlist_item(ad->data_noti_volume->item);
1413                                 setting_enable_genlist_item(ad->data_media_volume->item);
1414                                 setting_enable_genlist_item(ad->data_touch_volume->item);
1415                         } else {
1416                                 setting_profile_close_all_mm_players(ad);
1417                                 setting_disable_genlist_item(ad->data_call_volume->item);
1418                                 setting_disable_genlist_item(ad->data_noti_volume->item);
1419                                 setting_disable_genlist_item(ad->data_media_volume->item);
1420                                 setting_disable_genlist_item(ad->data_touch_volume->item);
1421                         }
1422                 }
1423                 return;
1424         } else if (!safeStrCmp(SETTING_SOUND_TEXT_VIBRATION, list_item->keyStr)) {
1425                 int old_status = elm_check_state_get(list_item->eo_check);
1426                 if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, !old_status) == 0) {
1427                         /* new status */
1428                         list_item->chk_status = !old_status;
1429                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1430                         if (list_item->chk_status) {
1431                                 setting_enable_genlist_item(ad->data_vib_volume->item);
1432                                 setting_enable_genlist_item(ad->data_touch_vib->item);
1433
1434                                 /* Play vib if vib turns on */
1435                                 int err = 0;
1436                                 char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
1437                                 svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
1438                                 haptic_stop_all_effects(ad->hnd_hpt);
1439                                 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);
1440
1441                                 if (err < 0)
1442                                         SETTING_TRACE("Failed to play haptic monotone");
1443                         } else {
1444                                 if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1445                                         SETTING_TRACE("ERROR haptic_stop_all_effects");
1446                                 }
1447                                 setting_disable_genlist_item(ad->data_vib_volume->item);
1448                                 setting_disable_genlist_item(ad->data_touch_vib->item);
1449                         }
1450                 }
1451                 return;
1452         }
1453         else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
1454                 int old_status = elm_check_state_get(list_item->eo_check);
1455                 /* To do : set vconfkey for touch sounds */
1456                 if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, !old_status) == 0) {
1457                         /* new status */
1458                         list_item->chk_status = !old_status;
1459                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1460                 }
1461         }
1462         /* end */
1463         else if (ad->data_msg_alert_repeat == list_item
1464                  || ad->data_email_alert_repeat == list_item) {
1465                 bool status = !elm_genlist_item_expanded_get(item);
1466                 elm_genlist_item_expanded_set(item, status);
1467         }
1468 }
1469
1470 static void
1471 setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data,
1472                                                                       Evas_Object *obj,
1473                                                                       void *event_info)
1474 {
1475         /* error check */
1476         ret_if(data == NULL);
1477
1478         double val = elm_slider_value_get(obj);
1479
1480         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1481         SettingProfileUG *ad = list_item->userdata;
1482
1483         if(ad->mp_ringtone == NULL)
1484                 return;
1485
1486         if(list_item->chk_status != (int)(val+0.5))
1487         {
1488                 list_item->chk_status = (int)(val+0.5);
1489                 sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
1490                 SETTING_TRACE_DEBUG("ringtone volume is %d, %f", list_item->chk_status, val);
1491         }
1492 }
1493
1494 static void
1495 setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data,
1496                                                              Evas_Object *obj,
1497                                                              void *event_info)
1498 {
1499         /* error check */
1500         ret_if(data == NULL);
1501
1502         double val = elm_slider_value_get(obj);
1503
1504         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1505         SettingProfileUG *ad = list_item->userdata;
1506
1507         if(ad->mp_noti == NULL)
1508                 return;
1509
1510         if(list_item->chk_status != (int)(val+0.5))
1511         {
1512                 list_item->chk_status = val;
1513                 sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, list_item->chk_status);
1514                 SETTING_TRACE_DEBUG("notification volume is %d, %f", list_item->chk_status, val);
1515         }
1516 }
1517
1518 static void
1519 setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
1520                                                               Evas_Object *obj,
1521                                                               void *event_info)
1522 {
1523         /* error check */
1524         ret_if(data == NULL);
1525
1526         double val = elm_slider_value_get(obj);
1527
1528         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1529         SettingProfileUG *ad = list_item->userdata;
1530
1531         if(ad->mp_media == NULL)
1532                 return;
1533         if(list_item->chk_status != (int)(val+0.5))
1534         {
1535                 list_item->chk_status = val;
1536                 sound_manager_set_volume(SOUND_TYPE_MEDIA, list_item->chk_status);
1537                 SETTING_TRACE_DEBUG("media volume is %d, %f", list_item->chk_status, val);
1538         }
1539 }
1540
1541 static void
1542 settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
1543                                                              Evas_Object *obj,
1544                                                              void *event_info)
1545 {
1546         /* error check */
1547         ret_if(data == NULL);
1548
1549         double val = elm_slider_value_get(obj);
1550
1551         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1552         SettingProfileUG *ad = list_item->userdata;
1553
1554         if(ad->mp_sys == NULL)
1555                 return;
1556
1557         if(list_item->chk_status != (int)(val+0.5))
1558         {
1559                 list_item->chk_status = val;
1560                 sound_manager_set_volume(SOUND_TYPE_SYSTEM, list_item->chk_status);
1561                 SETTING_TRACE_DEBUG("system volume is %d, %f", list_item->chk_status, val);
1562         }
1563 }
1564
1565 static void
1566 setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data,
1567                                                             Evas_Object *obj,
1568                                                             void *event_info)
1569 {
1570         /* error check */
1571         ret_if(data == NULL);
1572
1573         static double priv_val_db = 5.0;
1574         static int priv_val_int = 0;
1575         double val = elm_slider_value_get(obj);
1576         SETTING_TRACE("val = %f", val);
1577         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1578         SettingProfileUG *ad = list_item->userdata;
1579
1580         int value;
1581         int err;
1582
1583         value = (int)(val + 0.5);       /*  to sync displayed value on slider */
1584         list_item->chk_status = value;
1585         if (value != priv_val_int) {
1586                 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, list_item->chk_status);
1587                 char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
1588                 svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
1589                 haptic_stop_all_effects(ad->hnd_hpt);
1590                 err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
1591
1592                 if (err < 0)
1593                         SETTING_TRACE("Failed to play haptic monotone");
1594                 priv_val_int = value;
1595         }
1596         priv_val_db = val;
1597
1598 }
1599
1600 static void
1601 setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data,
1602                                                                  Evas_Object *
1603                                                                  obj, void
1604                                                                  *event_info)
1605 {
1606         /* error check */
1607         ret_if(data == NULL);
1608
1609         static double priv_val_db = 3.0;
1610         static int priv_val_int = 0;
1611         double val = elm_slider_value_get(obj);
1612         SETTING_TRACE("val = %f", val);
1613         Setting_GenGroupItem_Data *list_item =
1614             (Setting_GenGroupItem_Data *) data;
1615         SettingProfileUG *ad = list_item->userdata;
1616
1617         int value;
1618         int err;
1619
1620         value = (int)(val + 0.5);       /*  to sync displayed value on slider */
1621         list_item->chk_status = value;
1622         if (value != priv_val_int) {
1623                 vconf_set_int (VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, list_item->chk_status);
1624                 char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
1625                 svi_get_path(SVI_TYPE_VIB, SVI_VIB_OPERATION_VIBRATION, pattern_file, sizeof(pattern_file));
1626                 haptic_stop_all_effects(ad->hnd_hpt);
1627                 err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
1628
1629                 if (err < 0)
1630                         SETTING_TRACE("Failed to play haptic monotone");
1631                 priv_val_int = value;
1632         }
1633         priv_val_db = val;
1634 }
1635