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