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