96ca12ff4854d53c43dbd02cacad640d0c0c5f90
[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 = (char *)strdup(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 = (char *)strdup(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         if(pa_tone_path) {
441                 free(pa_tone_path);
442                 pa_tone_path = NULL;
443         }
444
445         SETTING_TRACE_END;
446 }
447
448 void __vibration_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
449 {
450         ret_if(data == NULL);
451
452         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
453         SettingProfileUG *ad = list_item->userdata;
454
455         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
456                 SETTING_TRACE("ERROR haptic_stop_all_effects");
457                 /* return; */
458         }
459
460         double value = 0.0;
461         switch(ad->cur_vol_type)
462         {
463                 case SETTING_VOL_TYPE_NOTI_VIB:
464                         if(ad->data_vib_volume)
465                         {
466                                 value = elm_slider_value_get(ad->data_vib_volume->eo_check);
467                                 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
468                                 if(value < 0.5)
469                                         elm_slider_value_set(ad->data_vib_volume->eo_check, 0);
470                                 else
471                                         elm_slider_value_set(ad->data_vib_volume->eo_check, (unsigned int)(value+0.5));
472                         }
473                         break;
474                 case SETTING_VOL_TYPE_HAPTIC_VIB:
475                         if(ad->data_touch_vib)
476                         {
477                                 value = elm_slider_value_get(ad->data_touch_vib->eo_check);
478                                 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, (unsigned int)(value+0.5));
479                                 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_BAK_INT, (unsigned int)(value+0.5));
480                                 if(value < 0.5)
481                                         elm_slider_value_set(ad->data_touch_vib->eo_check, 0);
482                                 else
483                                         elm_slider_value_set(ad->data_touch_vib->eo_check, (unsigned int)(value+0.5));
484                         }
485                         break;
486                 default:
487                         break;
488         }
489         ad->cur_vol_type = SETTING_VOL_TYPE_MAX;
490         SETTING_TRACE_END;
491 }
492
493 static void __main_list_unrealized_cb(void *data, Evas_Object *obj, void *event_info)
494 {
495         SETTING_TRACE_BEGIN;
496         ret_if(data == NULL);
497
498         SettingProfileUG *ad = (SettingProfileUG *) data;
499
500         Elm_Object_Item *item = (Elm_Object_Item *)event_info;
501         Setting_GenGroupItem_Data *list_item =
502             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
503
504         /* backup each slider's value */
505         if(list_item == ad->data_call_volume)
506                 sound_manager_set_volume(SOUND_TYPE_RINGTONE, ad->data_call_volume->chk_status);
507         else if(list_item == ad->data_noti_volume)
508                 sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, ad->data_noti_volume->chk_status);
509         else if(list_item == ad->data_media_volume)
510                 sound_manager_set_volume(SOUND_TYPE_MEDIA, ad->data_media_volume->chk_status);
511         else if(list_item == ad->data_touch_volume)
512                 sound_manager_set_volume(SOUND_TYPE_SYSTEM, ad->data_touch_volume->chk_status);
513         else if(list_item == ad->data_vib_volume)
514                 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, ad->data_vib_volume->chk_status);
515         else if(list_item == ad->data_touch_vib)
516                 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, ad->data_touch_vib->chk_status);
517 }
518
519 static Evas_Object *__get_main_list(void *data)
520 {
521         retv_if(data == NULL, NULL);
522
523         SettingProfileUG *ad = (SettingProfileUG *) data;
524
525         __setting_profile_ug_key_grab(ad);
526
527         if(ad->sub_view[SETTING_PROF_VIEW_VOL])
528                 return ad->sub_view[SETTING_PROF_VIEW_VOL];
529
530         Evas_Object *genlist = elm_genlist_add(ad->navi_bar);
531         elm_object_style_set(genlist, "dialogue");
532         retvm_if(genlist == NULL, NULL,
533                  "Cannot set genlist object as contento of layout");
534         elm_genlist_clear(genlist);     /* first to clear list */
535
536         int vconf_value = 0;
537         int mm_value = 0;
538
539         Elm_Object_Item *item = elm_genlist_item_append(genlist,
540                                                                 &(ad->itc_seperator), NULL, NULL,
541                                                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
542         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
543
544         /* a.use sound */
545         if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &vconf_value) < 0)
546                 vconf_value = TRUE;     /*  default value of sound : on */
547         ad->data_sound =
548             setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
549                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
550                                              ad, SWALLOW_Type_1TOGGLE, NULL,
551                                              NULL, vconf_value,
552                                              SETTING_SOUND_TEXT_SOUND, NULL,
553                                              setting_profile_sound_main_Gendial_chk_cb);
554         if (ad->data_sound) {
555                 ad->data_sound->userdata = ad;
556         } else {
557                 SETTING_TRACE_ERROR("ad->data_sound is NULL");
558         }
559         /* b.use vib */
560         if (vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vconf_value) < 0)
561                 vconf_value = TRUE;     /*  default value of vibration : on */
562         ad->data_vibration =
563             setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
564                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
565                                              ad, SWALLOW_Type_1TOGGLE, NULL,
566                                              NULL, vconf_value,
567                                              SETTING_SOUND_TEXT_VIBRATION, NULL,
568                                              setting_profile_sound_main_Gendial_chk_cb);
569         if (ad->data_vibration) {
570                 ad->data_vibration->userdata = ad;
571         } else {
572                 SETTING_TRACE_ERROR("ad->data_vibration is NULL");
573         }
574
575         (void)setting_create_Gendial_field_titleItem(genlist,
576                                                      &(ad->itc_group_item),
577                                                      "IDS_ST_BODY_VOLUME", NULL);
578
579         /* d.call volumn. */
580         if(sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value) < 0)
581                 mm_value = SETTING_DEFAULT_RINGTONE_VOL_INT;
582         ad->data_call_volume =
583             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
584                                              NULL,
585                                              SWALLOW_Type_LAYOUT_SLIDER,
586                                              IMG_SLIDER_BTN_VOLUME01,
587                                              IMG_SLIDER_BTN_VOLUME02, mm_value,
588                                              SETTING_SOUND_TEXT_INCOMING_CALL,
589                                              NULL,
590                                              setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb);
591         if (ad->data_call_volume) {
592                 ad->data_call_volume->win_main = ad->win_main_layout;
593                 ad->data_call_volume->evas = ad->evas;
594                 ad->data_call_volume->isIndicatorVisible = true;
595                 ad->data_call_volume->slider_min = 0;
596                 ad->data_call_volume->slider_max = SETTING_SOUND_VOL_MAX;
597                 ad->data_call_volume->userdata = ad;
598                 ad->data_call_volume->start_change_cb = __ringtone_start_change_cb;
599                 ad->data_call_volume->stop_change_cb = __volume_stop_change_cb;
600                 ad->data_call_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
601         } else {
602                 SETTING_TRACE_ERROR("ad->data_call_volume is NULL");
603         }
604
605         /* e.noti volumn */
606         if(sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value) < 0)
607                 mm_value = SETTING_DEFAULT_NOTI_VOL_INT;
608
609         (void)setting_create_Gendial_field_titleItem(genlist,
610                                                      &(itc_group_item),
611                                                      SETTING_SOUND_TEXT_NOTIFICATION, NULL);
612         ad->data_noti_volume =
613             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
614                                              NULL,
615                                              SWALLOW_Type_LAYOUT_SLIDER,
616                                              IMG_SLIDER_BTN_VOLUME01,
617                                              IMG_SLIDER_BTN_VOLUME02, mm_value,
618                                              NULL,//SETTING_SOUND_TEXT_NOTIFICATION,
619                                              NULL,
620                                              setting_profile_sound_main_noti_sound_slider_value_change_cb);
621         if (ad->data_noti_volume) {
622                 ad->data_noti_volume->win_main = ad->win_main_layout;
623                 ad->data_noti_volume->evas = ad->evas;
624                 ad->data_noti_volume->isIndicatorVisible = true;
625                 ad->data_noti_volume->slider_min = 0;
626                 ad->data_noti_volume->slider_max = SETTING_SOUND_VOL_MAX;
627                 ad->data_noti_volume->userdata = ad;
628                 ad->data_noti_volume->start_change_cb = __noti_start_change_cb;
629                 ad->data_noti_volume->stop_change_cb = __volume_stop_change_cb;
630                 ad->data_noti_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
631         } else {
632                 SETTING_TRACE_ERROR("ad->data_noti_volume is NULL");
633         }
634
635         /* g.media volume */
636         if(sound_manager_get_volume(SOUND_TYPE_MEDIA, &mm_value) < 0)
637                 mm_value = SETTING_DEFAULT_MEDIA_VOL_INT;
638
639         (void)setting_create_Gendial_field_titleItem(genlist,
640                                                      &(itc_group_item),
641                                                      SETTING_SOUND_TEXT_MEDIA, NULL);
642         ad->data_media_volume =
643             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
644                                              NULL,
645                                              SWALLOW_Type_LAYOUT_SLIDER,
646                                              IMG_SLIDER_BTN_VOLUME01,
647                                              IMG_SLIDER_BTN_VOLUME02, mm_value,
648                                              NULL, NULL,
649                                              setting_profile_sound_main_media_sound_slider_value_change_cb);
650         if (ad->data_media_volume) {
651                 ad->data_media_volume->win_main = ad->win_main_layout;
652                 ad->data_media_volume->evas = ad->evas;
653                 ad->data_media_volume->isIndicatorVisible = true;
654                 ad->data_media_volume->slider_min = 0;
655                 ad->data_media_volume->slider_max = SETTING_SOUND_VOL_MAX;
656                 ad->data_media_volume->userdata = ad;
657                 ad->data_media_volume->start_change_cb = __media_start_change_cb;
658                 ad->data_media_volume->stop_change_cb = __volume_stop_change_cb;
659                 ad->data_media_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
660         } else {
661                 SETTING_TRACE_ERROR("ad->data_media_volume is NULL");
662         }
663
664         /* h.system volume */
665         if(sound_manager_get_volume(SOUND_TYPE_SYSTEM, &mm_value) < 0)
666         {
667                 SETTING_TRACE_DEBUG("Fail to get volume");
668                 mm_value = SETTING_DEFAULT_SYSTEM_VOL_INT;
669         }
670         (void)setting_create_Gendial_field_titleItem(genlist,
671                                                      &(itc_group_item),
672                                                      SETTING_SOUND_TEXT_SYSTEM, NULL);
673         ad->data_touch_volume =
674             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
675                                              NULL,
676                                              SWALLOW_Type_LAYOUT_SLIDER,
677                                              IMG_SLIDER_BTN_VOLUME01,
678                                              IMG_SLIDER_BTN_VOLUME02, mm_value,
679                                              NULL, NULL,
680                                              settings_profile_sound_main_sys_sound_slider_value_change_cb);
681         if (ad->data_touch_volume) {
682                 ad->data_touch_volume->win_main = ad->win_main_layout;
683                 ad->data_touch_volume->evas = ad->evas;
684                 ad->data_touch_volume->isIndicatorVisible = true;
685                 ad->data_touch_volume->slider_min = 0;
686                 ad->data_touch_volume->slider_max = SETTING_SOUND_VOL_MAX;
687                 ad->data_touch_volume->userdata = ad;
688                 ad->data_touch_volume->start_change_cb = __system_start_change_cb;
689                 ad->data_touch_volume->stop_change_cb = __volume_stop_change_cb;
690                 ad->data_touch_volume->belongs_to = SETTING_VOL_SOUND_GROUP;
691         } else {
692                 SETTING_TRACE_ERROR("ad->data_touch_volume is NULL");
693         }
694
695         (void)setting_create_Gendial_field_titleItem(genlist,
696                                                      &(ad->itc_group_item),
697                                                      "IDS_ST_BODY_CALLALERTTYPE_VIBRATION", NULL);
698
699         /* f.noti vib */
700         if (vconf_get_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, &vconf_value) < 0)
701                 vconf_value = SETTING_DEFAULT_NOTI_VIB_INT;     /*  default value of notification vibration volume : 5 */
702
703         (void)setting_create_Gendial_field_titleItem(genlist,
704                                                      &(itc_group_item),
705                                                      SETTING_SOUND_TEXT_NOTIFICATION, NULL);
706         ad->data_vib_volume =
707             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
708                                              NULL,
709                                              SWALLOW_Type_LAYOUT_SLIDER,
710                                              IMG_VIBRATION_ICON_01,
711                                              IMG_VIBRATION_ICON_02, vconf_value,
712                                              NULL,//SETTING_SOUND_TEXT_NOTIFICATION,
713                                              NULL,
714                                              setting_profile_sound_main_vib_sound_slider_value_change_cb);
715         if (ad->data_vib_volume) {
716                 ad->data_vib_volume->win_main = ad->win_main_layout;
717                 ad->data_vib_volume->evas = ad->evas;
718                 ad->data_vib_volume->isIndicatorVisible = true;
719                 ad->data_vib_volume->slider_min = 0;
720                 ad->data_vib_volume->slider_max = SETTING_VIB_VOL_MAX;
721                 ad->data_vib_volume->userdata = ad;
722                 ad->data_vib_volume->start_change_cb = __noti_vib_start_change_cb;
723                 ad->data_vib_volume->stop_change_cb = __vibration_stop_change_cb;
724                 ad->data_vib_volume->belongs_to = SETTING_VOL_VIBRATION_GROUP;
725         } else {
726                 SETTING_TRACE_ERROR("ad->data_vib_volume is NULL");
727         }
728
729         /* i.haptic vib */
730         if (vconf_get_int
731             (VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, &vconf_value) < 0)
732                 vconf_value = SETTING_DEFAULT_HAPTIC_VIB_INT;   /*  default value of haptic vibration volume : 3 */
733
734         (void)setting_create_Gendial_field_titleItem(genlist,
735                                                      &(itc_group_item),
736                                                      "IDS_ST_BODY_SOUNDFEEDBACK_HAPTIC_FEEDBACK", NULL);
737         ad->data_touch_vib =
738             setting_create_Gendial_field_def(genlist, &(ad->itc_layout), NULL,
739                                              NULL,
740                                              SWALLOW_Type_LAYOUT_SLIDER,
741                                              IMG_VIBRATION_ICON_01,
742                                              IMG_VIBRATION_ICON_02, vconf_value,
743                                              NULL, NULL,
744                                              setting_profile_sound_main_touchVib_sound_slider_value_change_cb);
745         if (ad->data_touch_vib) {
746                 ad->data_touch_vib->win_main = ad->win_main_layout;
747                 ad->data_touch_vib->evas = ad->evas;
748                 ad->data_touch_vib->isIndicatorVisible = true;
749                 ad->data_touch_vib->slider_min = 0;
750                 ad->data_touch_vib->slider_max = SETTING_VIB_VOL_MAX;
751                 ad->data_touch_vib->userdata = ad;
752                 ad->data_touch_vib->start_change_cb = __haptic_vib_start_change_cb;
753                 ad->data_touch_vib->stop_change_cb = __vibration_stop_change_cb;
754                 ad->data_touch_vib->belongs_to = SETTING_VOL_VIBRATION_GROUP;
755         } else {
756                 SETTING_TRACE_ERROR("ad->data_touch_vib is NULL");
757         }
758
759         setting_create_Gendial_field_def(genlist, &(ad->itc_bg_1icon),
760                                          NULL, ad,
761                                          SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
762                                          NULL, NULL, 0, SOUND_DESC, NULL, NULL);
763         elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
764                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
765
766         /* Touch sounds */
767         if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &vconf_value) < 0)
768                 vconf_value = TRUE;     /*  default value of touch sounds : on */
769
770         ad->data_touch_sounds =
771             setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
772                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
773                                              ad, SWALLOW_Type_1TOGGLE, NULL,
774                                              NULL, vconf_value,
775                                              "IDS_ST_BODY_TOUCH_SOUNDS",
776                                              NULL,
777                                              setting_profile_sound_main_Gendial_chk_cb);
778         if (ad->data_touch_sounds) {
779                 ad->data_touch_sounds->userdata = ad;
780         } else {
781                 SETTING_TRACE_ERROR("ad->data_lock_sound is NULL");
782         }
783
784         setting_create_Gendial_field_def(genlist, &(ad->itc_bg_1icon),
785                                          NULL, ad,
786                                          SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
787                                          NULL, NULL, 0, "IDS_ST_BODY_PLAY_SOUND_WHEN_MAKING_SCREEN_SELECTION", NULL, NULL);
788         elm_genlist_item_select_mode_set(elm_genlist_item_append(genlist, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
789                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
790
791         __change_state_of_sliderbars(ad);
792
793         evas_object_smart_callback_add(genlist, "unrealized", __main_list_unrealized_cb, ad);
794
795         ad->sub_view[SETTING_PROF_VIEW_VOL] = genlist;
796
797         return ad->sub_view[SETTING_PROF_VIEW_VOL];
798 }
799
800 static Evas_Object *__get_ringtone_list(void *data)
801 {
802         retv_if(data == NULL, NULL);
803         SettingProfileUG *ad = (SettingProfileUG *) data;
804
805         if(ad->sub_view[SETTING_PROF_VIEW_RTN])
806                 return ad->sub_view[SETTING_PROF_VIEW_RTN];
807
808         Evas_Object *genlist = elm_genlist_add(ad->navi_bar);
809         elm_object_style_set(genlist, "dialogue");
810         retvm_if(genlist == NULL, NULL,
811                  "Cannot set genlist object as contento of layout");
812         elm_genlist_clear(genlist);     /* first to clear list */
813         setting_enable_expandable_genlist(genlist, ad, __sound_exp_cb, NULL);
814
815         /*  a. incoming call group */
816         (void)setting_create_Gendial_field_titleItem(genlist,
817                                                      &(ad->itc_group_item),
818                                                      SETTING_SOUND_TEXT_INCOMING_CALL,
819                                                      NULL);
820
821         /*  a-1. ringtone */
822         int vconf_ret = 0;
823         char *sub_desc = NULL;
824         char *pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
825         if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
826         {
827                 pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
828                 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_ringtone);
829                 if(vconf_ret < 0)
830                         SETTING_TRACE_DEBUG("failed to set vconf");
831         }
832         sub_desc = setting_file_basename(pa_ringtone);
833
834         ad->data_call_alert_tone =
835             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
836                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
837                                              ad, SWALLOW_Type_INVALID, NULL,
838                                              NULL, 0, SETTING_SOUND_TEXT_CALL_RINGTONE,
839                                              sub_desc, NULL);
840         if (ad->data_call_alert_tone) {
841                 ad->data_call_alert_tone->userdata = ad;
842         } else {
843                 SETTING_TRACE_ERROR("ad->data_call_alert_tone is NULL");
844         }
845
846         FREE(pa_ringtone);
847         G_FREE(sub_desc);
848
849         /*  b. notification */
850         (void)setting_create_Gendial_field_titleItem(genlist,
851                                                      &(ad->itc_group_item),
852                                                      SETTING_SOUND_TEXT_NOTIFICATION,
853                                                      NULL);
854
855         int repeat_value = 0;
856
857         /*  b-1. msg ringtone */
858         pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
859         if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
860         {
861                 pa_ringtone = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
862                 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE);
863                 if(vconf_ret < 0)
864                         SETTING_TRACE_DEBUG("failed to set vconf");
865         }
866         sub_desc = setting_file_basename(pa_ringtone);
867
868         ad->data_msg_alert_tone =
869             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
870                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
871                                              ad, SWALLOW_Type_INVALID, NULL,
872                                              NULL, 0,
873                                              SETTING_SOUND_TEXT_MSG_ALERT,
874                                              sub_desc, NULL);
875         if (ad->data_msg_alert_tone) {
876                 ad->data_msg_alert_tone->userdata = ad;
877         } else {
878                 SETTING_TRACE_ERROR("ad->data_msg_alert_tone is NULL");
879         }
880         FREE(pa_ringtone);
881         G_FREE(sub_desc);
882
883         /*  b-2. msg alert repetition */
884         if (vconf_get_int
885             (VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &repeat_value) != 0)
886                 repeat_value = SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT;   /*  default 0 : repeat once */
887         ad->data_msg_alert_repeat =
888             setting_create_Gendial_exp_parent_field(genlist,
889                                                     &(ad->itc_2text_3_parent),
890                                                     setting_profile_sound_main_mouse_up_Gendial_list_cb,
891                                                     ad, SWALLOW_Type_INVALID,
892                                                     SETTING_SOUND_TEXT_MSG_RINGTONE_REPEAT,
893                                                     _(repeat_type[repeat_value]));
894         if (ad->data_msg_alert_repeat) {
895                 ad->data_msg_alert_repeat->int_slp_setting_binded =
896                         INT_SLP_SETTING_MSG_ALERT_REPEAT;
897         } else {
898                 SETTING_TRACE_ERROR("ad->data_msg_alert_repeat is NULL");
899         }
900
901         /*  b-3. email ringtone */
902         pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR);
903         if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
904         {
905                 pa_ringtone = (char *)strdup(SETTING_DEFAULT_EMAIL_TONE);
906                 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, SETTING_DEFAULT_EMAIL_TONE);
907                 if(vconf_ret < 0)
908                         SETTING_TRACE_DEBUG("failed to set vconf");
909         }
910         sub_desc = setting_file_basename(pa_ringtone);
911
912         ad->data_email_alert_tone =
913             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
914                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
915                                              ad, SWALLOW_Type_INVALID, NULL,
916                                              NULL, 0,
917                                              SETTING_SOUND_TEXT_EMAIL_ALERT,
918                                              sub_desc, NULL);
919         if (ad->data_email_alert_tone) {
920                 ad->data_email_alert_tone->userdata = ad;
921         } else {
922                 SETTING_TRACE_ERROR("ad->data_email_alert_tone is NULL");
923         }
924         FREE(pa_ringtone);
925         G_FREE(sub_desc);
926
927         /*  b-4. email alert repetition */
928         if (vconf_get_int
929             (VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT,
930              &repeat_value) != 0)
931                 repeat_value = SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT;   /*  default 0 : repeat once */
932         ad->data_email_alert_repeat =
933             setting_create_Gendial_exp_parent_field(genlist,
934                                                     &(ad->itc_2text_3_parent),
935                                                     setting_profile_sound_main_mouse_up_Gendial_list_cb,
936                                                     ad, SWALLOW_Type_INVALID,
937                                                     SETTING_SOUND_TEXT_EMAIL_RINGTONE_REPEAT,
938                                                     _(repeat_type[repeat_value]));
939         if (ad->data_email_alert_repeat) {
940                 ad->data_email_alert_repeat->int_slp_setting_binded =
941                         INT_SLP_SETTING_EMAIL_ALERT_REPEAT;
942         } else {
943                 SETTING_TRACE_ERROR("ad->data_email_alert_repeat is NULL");
944         }
945
946         Elm_Object_Item *item = NULL;
947         item = elm_genlist_item_append(genlist, &itc_bottom_seperator, NULL, NULL,
948                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
949         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
950
951         ad->sub_view[SETTING_PROF_VIEW_RTN] = genlist;
952
953         return ad->sub_view[SETTING_PROF_VIEW_RTN];
954 }
955
956 static void __view_change_cb(void *data, Evas_Object *obj, void *event_info)
957 {
958         //appcore_measure_start();
959         retm_if(event_info == NULL, "Invalid argmuent: event info is NULL");
960         retm_if(data == NULL, "Invalid argmuent: data is NULL");
961
962         SettingProfileUG *ad = (SettingProfileUG *) data;
963
964         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
965                 SETTING_TRACE("ERROR haptic_stop_all_effects");
966                 /* return; */
967         }
968         setting_profile_close_all_mm_players(ad);
969
970         Evas_Object *sub_view = NULL;
971         Elm_Object_Item *sel_item = elm_toolbar_selected_item_get(obj);
972         const char *tab_lable = elm_object_item_text_get(sel_item);
973         ret_if(!tab_lable);
974         //SETTING_TRACE("tab_lable:%s", tab_lable);
975         if (0 == safeStrCmp(tab_lable, VOLUME_STR)) {
976                 if(ad->hnd_hpt)
977                         haptic_stop_all_effects(ad->hnd_hpt);
978                 sub_view = __get_main_list(ad);
979         } else if (0 == safeStrCmp(tab_lable, RINGTONE_STR)) {
980                 sub_view = __get_ringtone_list(ad);
981         }
982
983         Evas_Object *old_sub_view = elm_object_part_content_get(ad->view_layout, "elm.swallow.content");
984         ret_if(old_sub_view == sub_view);
985
986         if (sub_view) {
987                 if (old_sub_view)
988                 {
989                         elm_object_part_content_unset(ad->view_layout, "elm.swallow.content");
990                         evas_object_hide(old_sub_view);
991                 }
992                 elm_object_part_content_set(ad->view_layout, "elm.swallow.content", sub_view);
993                 evas_object_show(sub_view);
994         }
995 }
996
997 static int setting_profile_sound_main_create(void *cb)
998 {
999         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1000
1001         SettingProfileUG *ad = (SettingProfileUG *) cb;
1002
1003         ad->ly_main = setting_create_win_layout(ad->win_main_layout, ad->win_get);
1004         ad->navi_bar = setting_create_navi_bar(ad->ly_main);
1005
1006         /*  view layout */
1007         Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
1008         elm_layout_theme_set(view_layout, "layout", "tabbar", "default");
1009         evas_object_show(view_layout);
1010         ad->view_layout = view_layout;
1011
1012         Evas_Object *tabbar= elm_toolbar_add(ad->navi_bar);
1013         if(tabbar == NULL)
1014                 return SETTING_RETURN_FAIL;
1015
1016         elm_object_part_content_set(view_layout, "elm.swallow.tabbar", tabbar);
1017         ad->ctrl_bar = tabbar;
1018         elm_toolbar_shrink_mode_set(tabbar, ELM_TOOLBAR_SHRINK_EXPAND);
1019         elm_object_style_set(tabbar, "tabbar");
1020         elm_toolbar_transverse_expanded_set(tabbar, EINA_TRUE);
1021
1022         ad->ctrl_item[0] = elm_toolbar_item_append(tabbar,
1023                                         IMG_CTRL_ICON_VOLUME,
1024                                         VOLUME_STR, __view_change_cb, ad);
1025
1026         ad->ctrl_item[1] = elm_toolbar_item_append(tabbar,
1027                                         IMG_CTRL_ICON_RINGTONE,
1028                                         RINGTONE_STR, __view_change_cb, ad);
1029
1030         elm_toolbar_select_mode_set(tabbar, ELM_OBJECT_SELECT_MODE_ALWAYS);
1031         elm_toolbar_item_selected_set(ad->ctrl_item[0], EINA_TRUE);
1032
1033         Evas_Object *ug_back_btn = elm_button_add(ad->navi_bar);
1034         elm_object_style_set(ug_back_btn, NAVI_BACK_BUTTON_STYLE);
1035         evas_object_smart_callback_add(ug_back_btn, "clicked", setting_profile_sound_main_click_softkey_cancel_cb, ad);
1036
1037         Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->navi_bar, NULL, ug_back_btn, NULL, ad->view_layout, "tabbar");
1038         elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
1039
1040         setting_view_profile_sound_main.is_create = TRUE;
1041
1042         return SETTING_RETURN_SUCCESS;
1043 }
1044
1045 static int setting_profile_sound_main_destroy(void *cb)
1046 {
1047         /* error check */
1048         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1049
1050         SettingProfileUG *ad = (SettingProfileUG *) cb;
1051
1052         __setting_profile_ug_key_ungrab(ad);
1053
1054         if (ad->ly_main != NULL) {
1055                 //Fix the memory leak,
1056                 //Manage ad->sub_view[] separately, unset first, then delete in together
1057                 if (ad->view_layout)
1058                 {
1059                         elm_object_part_content_unset(ad->view_layout, "elm.swallow.content");
1060                 }
1061                 int i = SETTING_PROF_VIEW_VOL;
1062                 for (; i < SETTING_PROF_VIEW_MAX; i++ )
1063                 {
1064                         evas_object_del(ad->sub_view[i]);
1065                 }
1066
1067                 evas_object_del(ad->ly_main);
1068                 setting_view_profile_sound_main.is_create = FALSE;
1069         }
1070         return SETTING_RETURN_SUCCESS;
1071 }
1072
1073 static int setting_profile_sound_main_update(void *cb)
1074 {
1075         /* error check */
1076         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1077
1078         SettingProfileUG *ad = (SettingProfileUG *) cb;
1079
1080         if (ad->ly_main != NULL) {
1081                 evas_object_show(ad->ly_main);
1082         }
1083
1084         return SETTING_RETURN_SUCCESS;
1085 }
1086
1087 static int setting_profile_sound_main_cleanup(void *cb)
1088 {
1089         /* error check */
1090         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1091
1092         SettingProfileUG *ad = (SettingProfileUG *) cb;
1093
1094         if (ad->ly_main != NULL) {
1095                 evas_object_hide(ad->ly_main);
1096         }
1097
1098         return SETTING_RETURN_SUCCESS;
1099 }
1100
1101 /* ***************************************************
1102  *
1103  *general func
1104  *
1105  ***************************************************/
1106
1107 /* ***************************************************
1108  *
1109  *call back func
1110  *
1111  ***************************************************/
1112
1113 static void setting_profile_sound_main_click_softkey_cancel_cb(void *data,
1114                                                    Evas_Object *obj,
1115                                                    void *event_info)
1116 {
1117         /* error check */
1118         ret_if(data == NULL);
1119
1120         SettingProfileUG *ad = (SettingProfileUG *) data;
1121
1122         /* close mm plaer */
1123         setting_profile_close_all_mm_players(ad);
1124         /* close vibration */
1125         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1126                 SETTING_TRACE("ERROR haptic_stop_all_effects");
1127                 /* return; */
1128         }
1129
1130         /* Send destroy request */
1131         ug_destroy_me(ad->ug);
1132
1133         return;
1134 }
1135
1136 static void setting_profile_sound_main_destroy_myfile_ug_cb(ui_gadget_h ug, void *priv)
1137 {
1138         ret_if(priv == NULL);
1139         SettingProfileUG *ad = (SettingProfileUG *) priv;
1140
1141         __setting_profile_ug_key_grab(ad);
1142
1143         if (ug) {
1144                 ug_destroy(ug);
1145                 ad->ug_loading = NULL;
1146         }
1147 }
1148
1149 static void
1150 setting_profile_sound_main_result_myfile_ug_cb(ui_gadget_h ug,
1151                                                service_h result, void *priv)
1152 {
1153         ret_if(priv == NULL);
1154
1155         SettingProfileUG *ad = (SettingProfileUG *) priv;
1156         char *ringtone_file = NULL;
1157         char *ringtone_path = NULL;
1158
1159         service_get_extra_data(result, "result", &ringtone_path);
1160         if(!ringtone_path)
1161                 return;
1162
1163         SETTING_TRACE("ringtone_path:%s", ringtone_path);
1164
1165         if (ringtone_path != NULL) {
1166                 ringtone_file = setting_file_basename(ringtone_path);
1167                 SETTING_TRACE("ringtone_file:%s", ringtone_file);
1168
1169                 if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_CALL_RINGTONE)) {
1170                         if (vconf_set_str
1171                             (VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, ringtone_path) == 0) {
1172                                 if (ad->data_call_alert_tone) {
1173                                         ad->data_call_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
1174
1175                                         elm_object_item_data_set(ad->data_call_alert_tone->item, ad->data_call_alert_tone);
1176                                         elm_genlist_item_update(ad->data_call_alert_tone->item);
1177                                 }
1178                         }
1179                 } else if (0 ==
1180                            safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_MSG_ALERT)) {
1181                         if (vconf_set_str
1182                             (VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ringtone_path) == 0) {
1183                                 if (ad->data_msg_alert_tone) {
1184                                         ad->data_msg_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
1185
1186                                         elm_object_item_data_set(ad->data_msg_alert_tone->item, ad->data_msg_alert_tone);
1187                                         elm_genlist_item_update(ad->data_msg_alert_tone->item);
1188                                 }
1189                         }
1190                 } else if (0 ==
1191                            safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_EMAIL_ALERT)) {
1192                         if (vconf_set_str
1193                             (VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, ringtone_path) == 0) {
1194                                 if (ad->data_email_alert_tone) {
1195                                         ad->data_email_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
1196
1197                                         elm_object_item_data_set(ad->data_email_alert_tone->item, ad->data_email_alert_tone);
1198                                         elm_genlist_item_update(ad->data_email_alert_tone->item);
1199                                 }
1200                         }
1201                 }
1202         }
1203
1204         G_FREE(ringtone_file);
1205         return;
1206 }
1207
1208 static void
1209 setting_profile_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1210                              void *priv)
1211 {
1212         ret_if(priv == NULL);
1213
1214         SettingProfileUG *ad = (SettingProfileUG *) priv;
1215         Evas_Object *base;
1216
1217         base = (Evas_Object *) ug_get_layout(ug);
1218         if (!base)
1219                 return;
1220
1221         switch (mode) {
1222                 case UG_MODE_FULLVIEW:
1223                         evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1224                         //elm_win_resize_object_add(ad->win_get, base);
1225                         evas_object_show(base);
1226                         break;
1227                 default:
1228                         break;
1229         }
1230 }
1231
1232
1233 static void setting_profile_sound_main_create_myfile_ug(SettingProfileUG *ad)
1234 {
1235         ret_if(ad == NULL);
1236
1237         if(ad->ug_loading)
1238         {
1239                 SETTING_TRACE("Myfiles ug is already loaded.");
1240                 return;
1241         }
1242
1243         struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1244         if (!cbs)
1245                 return;
1246
1247         cbs->layout_cb = setting_profile_layout_ug_cb;
1248         cbs->result_cb = setting_profile_sound_main_result_myfile_ug_cb;
1249         cbs->destroy_cb = setting_profile_sound_main_destroy_myfile_ug_cb;
1250         cbs->priv = (void *)ad;
1251
1252         service_h svc;
1253         if (service_create(&svc)) {
1254                 FREE(cbs);
1255                 return;
1256         }
1257
1258         const char *pa_cur_ringtone = NULL;
1259         const char *dir_path = NULL;
1260         if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_CALL_RINGTONE)) {
1261                 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
1262                 if (pa_cur_ringtone == NULL)
1263                 {
1264                         pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
1265                 }
1266                 dir_path = SETTING_PROFILE_SOUND_RINGTONES_PATH;
1267         } else if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_MSG_ALERT)) {
1268                 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
1269                 if (pa_cur_ringtone == NULL)
1270                         pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
1271                 dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
1272         } else if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_EMAIL_ALERT)) {
1273                 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR);
1274                 if (pa_cur_ringtone == NULL)
1275                         pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_EMAIL_TONE);
1276                 dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
1277         }
1278         SETTING_TRACE("pa_cur_ringtone:\t%s", pa_cur_ringtone);
1279         SETTING_TRACE("dir_path:\t%s", dir_path);
1280
1281         service_add_extra_data(svc, "marked_mode", pa_cur_ringtone);
1282         service_add_extra_data(svc, "path", dir_path);
1283         service_add_extra_data(svc, "select_type", "SINGLE_FILE");
1284         service_add_extra_data(svc, "file_type", "SOUND");
1285         service_add_extra_data(svc, "drm_type", "DRM_ALL");
1286
1287         SETTING_TRACE("ad->ug->layout:%p", (void *)ug_get_layout(ad->ug));
1288         ad->ug_loading = ug_create(ad->ug, "myfile-efl", UG_MODE_FULLVIEW, svc, cbs);
1289         if (NULL == ad->ug_loading) {   /* error handling */
1290                 SETTING_TRACE_ERROR("NULL == ad->ug_loading");
1291         }
1292
1293         service_destroy(svc);
1294         FREE(cbs);
1295
1296         /** @todo verify it's valid */
1297         if(pa_cur_ringtone) {
1298                 free(pa_cur_ringtone);
1299                 pa_cur_ringtone = NULL;
1300         }
1301
1302         __setting_profile_ug_key_ungrab(ad);
1303         return;
1304 }
1305
1306 static void
1307 setting_profile_sound_main_Gendial_chk_cb(void *data, Evas_Object *obj,
1308                                           void *event_info)
1309 {
1310         /* error check */
1311         ret_if(data == NULL);
1312
1313         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1314         SettingProfileUG *ad = list_item->userdata;
1315
1316         int state = list_item->chk_status = elm_check_state_get(obj);   /*  for genlist update status */
1317
1318         /* restore the selected check status */
1319         list_item->chk_status = state;
1320         elm_check_state_set(list_item->eo_check, state);
1321
1322         if (!safeStrCmp(SETTING_SOUND_TEXT_SOUND, list_item->keyStr)) {
1323                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, list_item->chk_status) < 0) {
1324                         list_item->chk_status = !state;
1325                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1326                 }
1327
1328                 if (list_item->chk_status) {
1329                         setting_enable_genlist_item(ad->data_call_volume->item);
1330                         setting_enable_genlist_item(ad->data_noti_volume->item);
1331                         setting_enable_genlist_item(ad->data_media_volume->item);
1332                         setting_enable_genlist_item(ad->data_touch_volume->item);
1333                 } else {
1334                         setting_profile_close_all_mm_players(ad);
1335                         setting_disable_genlist_item(ad->data_call_volume->item);
1336                         setting_disable_genlist_item(ad->data_noti_volume->item);
1337                         setting_disable_genlist_item(ad->data_media_volume->item);
1338                         setting_disable_genlist_item(ad->data_touch_volume->item);
1339                 }
1340         } else if (!safeStrCmp(SETTING_SOUND_TEXT_VIBRATION, list_item->keyStr)) {
1341                 if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, list_item->chk_status) < 0) {
1342                         list_item->chk_status = !state;
1343                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1344                 }
1345                 if (list_item->chk_status) {
1346                         setting_enable_genlist_item(ad->data_vib_volume->item);
1347                         setting_enable_genlist_item(ad->data_touch_vib->item);
1348
1349                         /* Play vib if vib turns on */
1350                         int err = 0;
1351                         char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
1352                         svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
1353                         haptic_stop_all_effects(ad->hnd_hpt);
1354                         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);
1355
1356                         if (err < 0)
1357                                 SETTING_TRACE("Failed to play haptic monotone");
1358                 } else {
1359                         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1360                                 SETTING_TRACE("ERROR haptic_stop_all_effects");
1361                         }
1362                         setting_disable_genlist_item(ad->data_vib_volume->item);
1363                         setting_disable_genlist_item(ad->data_touch_vib->item);
1364                 }
1365         }
1366         /* additional items */
1367         else if (!safeStrCmp(SETTING_SOUND_TEXT_LOCK_SOUND, list_item->keyStr)) {
1368                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, list_item->chk_status) < 0) {
1369                         list_item->chk_status = !state;
1370                         elm_check_state_set(list_item->eo_check, !state);
1371                 }
1372         }
1373         else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
1374                 if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, list_item->chk_status) < 0) {
1375                         list_item->chk_status = !state;
1376                         elm_check_state_set(list_item->eo_check, !state);
1377                 }
1378         }
1379
1380         /* end */
1381
1382 }
1383
1384 static void
1385 setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
1386                                                     Evas_Object *obj,
1387                                                     void *event_info)
1388 {
1389         /* error check */
1390         ret_if(data == NULL);
1391         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1392
1393         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1394         elm_genlist_item_selected_set(item, 0);
1395         Setting_GenGroupItem_Data *list_item =
1396             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
1397
1398         SettingProfileUG *ad = data;
1399
1400         if(ad->hnd_hpt)
1401                 haptic_stop_all_effects(ad->hnd_hpt);
1402
1403         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
1404         if (!safeStrCmp(SETTING_SOUND_TEXT_CALL_RINGTONE, list_item->keyStr)
1405             || !safeStrCmp(SETTING_SOUND_TEXT_MSG_ALERT, list_item->keyStr)
1406             || !safeStrCmp(SETTING_SOUND_TEXT_EMAIL_ALERT, list_item->keyStr)) {
1407                 ad->ringtone_type = list_item->keyStr;
1408                 setting_profile_sound_main_create_myfile_ug(ad);
1409         } else if (!safeStrCmp(SETTING_SOUND_TEXT_SOUND, list_item->keyStr)) {
1410                 int old_status = elm_check_state_get(list_item->eo_check);
1411                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, !old_status) == 0) {
1412                         /* new status */
1413                         list_item->chk_status = !old_status;
1414                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1415                         if (list_item->chk_status) {
1416                                 setting_enable_genlist_item(ad->data_call_volume->item);
1417                                 setting_enable_genlist_item(ad->data_noti_volume->item);
1418                                 setting_enable_genlist_item(ad->data_media_volume->item);
1419                                 setting_enable_genlist_item(ad->data_touch_volume->item);
1420                         } else {
1421                                 setting_profile_close_all_mm_players(ad);
1422                                 setting_disable_genlist_item(ad->data_call_volume->item);
1423                                 setting_disable_genlist_item(ad->data_noti_volume->item);
1424                                 setting_disable_genlist_item(ad->data_media_volume->item);
1425                                 setting_disable_genlist_item(ad->data_touch_volume->item);
1426                         }
1427                 }
1428                 return;
1429         } else if (!safeStrCmp(SETTING_SOUND_TEXT_VIBRATION, list_item->keyStr)) {
1430                 int old_status = elm_check_state_get(list_item->eo_check);
1431                 if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, !old_status) == 0) {
1432                         /* new status */
1433                         list_item->chk_status = !old_status;
1434                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1435                         if (list_item->chk_status) {
1436                                 setting_enable_genlist_item(ad->data_vib_volume->item);
1437                                 setting_enable_genlist_item(ad->data_touch_vib->item);
1438
1439                                 /* Play vib if vib turns on */
1440                                 int err = 0;
1441                                 char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
1442                                 svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
1443                                 haptic_stop_all_effects(ad->hnd_hpt);
1444                                 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);
1445
1446                                 if (err < 0)
1447                                         SETTING_TRACE("Failed to play haptic monotone");
1448                         } else {
1449                                 if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1450                                         SETTING_TRACE("ERROR haptic_stop_all_effects");
1451                                 }
1452                                 setting_disable_genlist_item(ad->data_vib_volume->item);
1453                                 setting_disable_genlist_item(ad->data_touch_vib->item);
1454                         }
1455                 }
1456                 return;
1457         }
1458         else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
1459                 int old_status = elm_check_state_get(list_item->eo_check);
1460                 /* To do : set vconfkey for touch sounds */
1461                 if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, !old_status) == 0) {
1462                         /* new status */
1463                         list_item->chk_status = !old_status;
1464                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
1465                 }
1466         }
1467         /* end */
1468         else if (ad->data_msg_alert_repeat == list_item
1469                  || ad->data_email_alert_repeat == list_item) {
1470                 bool status = !elm_genlist_item_expanded_get(item);
1471                 elm_genlist_item_expanded_set(item, status);
1472         }
1473 }
1474
1475 static void
1476 setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data,
1477                                                                       Evas_Object *obj,
1478                                                                       void *event_info)
1479 {
1480         /* error check */
1481         ret_if(data == NULL);
1482
1483         double val = elm_slider_value_get(obj);
1484
1485         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1486         SettingProfileUG *ad = list_item->userdata;
1487
1488         if(ad->mp_ringtone == NULL)
1489                 return;
1490
1491         if(list_item->chk_status != (int)(val+0.5))
1492         {
1493                 list_item->chk_status = (int)(val+0.5);
1494                 sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
1495                 SETTING_TRACE_DEBUG("ringtone volume is %d, %f", list_item->chk_status, val);
1496         }
1497 }
1498
1499 static void
1500 setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data,
1501                                                              Evas_Object *obj,
1502                                                              void *event_info)
1503 {
1504         /* error check */
1505         ret_if(data == NULL);
1506
1507         double val = elm_slider_value_get(obj);
1508
1509         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1510         SettingProfileUG *ad = list_item->userdata;
1511
1512         if(ad->mp_noti == NULL)
1513                 return;
1514
1515         if(list_item->chk_status != (int)(val+0.5))
1516         {
1517                 list_item->chk_status = val;
1518                 sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, list_item->chk_status);
1519                 SETTING_TRACE_DEBUG("notification volume is %d, %f", list_item->chk_status, val);
1520         }
1521 }
1522
1523 static void
1524 setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
1525                                                               Evas_Object *obj,
1526                                                               void *event_info)
1527 {
1528         /* error check */
1529         ret_if(data == NULL);
1530
1531         double val = elm_slider_value_get(obj);
1532
1533         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1534         SettingProfileUG *ad = list_item->userdata;
1535
1536         if(ad->mp_media == NULL)
1537                 return;
1538         if(list_item->chk_status != (int)(val+0.5))
1539         {
1540                 list_item->chk_status = val;
1541                 sound_manager_set_volume(SOUND_TYPE_MEDIA, list_item->chk_status);
1542                 SETTING_TRACE_DEBUG("media volume is %d, %f", list_item->chk_status, val);
1543         }
1544 }
1545
1546 static void
1547 settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
1548                                                              Evas_Object *obj,
1549                                                              void *event_info)
1550 {
1551         /* error check */
1552         ret_if(data == NULL);
1553
1554         double val = elm_slider_value_get(obj);
1555
1556         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1557         SettingProfileUG *ad = list_item->userdata;
1558
1559         if(ad->mp_sys == NULL)
1560                 return;
1561
1562         if(list_item->chk_status != (int)(val+0.5))
1563         {
1564                 list_item->chk_status = val;
1565                 sound_manager_set_volume(SOUND_TYPE_SYSTEM, list_item->chk_status);
1566                 SETTING_TRACE_DEBUG("system volume is %d, %f", list_item->chk_status, val);
1567         }
1568 }
1569
1570 static void
1571 setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data,
1572                                                             Evas_Object *obj,
1573                                                             void *event_info)
1574 {
1575         /* error check */
1576         ret_if(data == NULL);
1577
1578         static double priv_val_db = 5.0;
1579         static int priv_val_int = 0;
1580         double val = elm_slider_value_get(obj);
1581         SETTING_TRACE("val = %f", val);
1582         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1583         SettingProfileUG *ad = list_item->userdata;
1584
1585         int value;
1586         int err;
1587
1588         value = (int)(val + 0.5);       /*  to sync displayed value on slider */
1589         list_item->chk_status = value;
1590         if (value != priv_val_int) {
1591                 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, list_item->chk_status);
1592                 char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
1593                 svi_get_path(SVI_TYPE_VIB, SVI_VIB_NOTIFICATION_GENERAL, pattern_file, sizeof(pattern_file));
1594                 haptic_stop_all_effects(ad->hnd_hpt);
1595                 err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
1596
1597                 if (err < 0)
1598                         SETTING_TRACE("Failed to play haptic monotone");
1599                 priv_val_int = value;
1600         }
1601         priv_val_db = val;
1602
1603 }
1604
1605 static void
1606 setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data,
1607                                                                  Evas_Object *
1608                                                                  obj, void
1609                                                                  *event_info)
1610 {
1611         /* error check */
1612         ret_if(data == NULL);
1613
1614         static double priv_val_db = 3.0;
1615         static int priv_val_int = 0;
1616         double val = elm_slider_value_get(obj);
1617         SETTING_TRACE("val = %f", val);
1618         Setting_GenGroupItem_Data *list_item =
1619             (Setting_GenGroupItem_Data *) data;
1620         SettingProfileUG *ad = list_item->userdata;
1621
1622         int value;
1623         int err;
1624
1625         value = (int)(val + 0.5);       /*  to sync displayed value on slider */
1626         list_item->chk_status = value;
1627         if (value != priv_val_int) {
1628                 vconf_set_int (VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, list_item->chk_status);
1629                 char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
1630                 svi_get_path(SVI_TYPE_VIB, SVI_VIB_OPERATION_VIBRATION, pattern_file, sizeof(pattern_file));
1631                 haptic_stop_all_effects(ad->hnd_hpt);
1632                 err = haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
1633
1634                 if (err < 0)
1635                         SETTING_TRACE("Failed to play haptic monotone");
1636                 priv_val_int = value;
1637         }
1638         priv_val_db = val;
1639 }
1640