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