fccb9e46121c8c72df9bb1fa0c4bd6a7aefe06fe
[apps/home/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
22 #include <feedback.h>
23 #include <mm_sound_private.h>
24 #include <app_manager.h>
25 #include <setting-profile-sound-main.h>
26 #include <setting-profile.h>
27
28 #define STR_RINGTONES_AND_NOTIFICATIONS "IDS_ST_HEADER_RINGTONES_AND_NOTIFICATIONS"
29 #define STR_FEEDBACK                                                            "IDS_ST_HEADER_FEEDBACK"
30
31 char *repeat_type[SETTING_SOUND_REPEAT_TYPE_LEN] = {
32                 SETTING_SOUND_TEXT_REPEAT_ONCE,
33                 SETTING_SOUND_TEXT_REPEAT_2MIN,
34                 SETTING_SOUND_TEXT_REPEAT_5MIN,
35                 SETTING_SOUND_TEXT_REPEAT_10MIN
36         };
37
38
39 static int setting_profile_sound_main_create(void *cb);
40 static int setting_profile_sound_main_destroy(void *cb);
41 static int setting_profile_sound_main_update(void *cb);
42 static int setting_profile_sound_main_cleanup(void *cb);
43
44 static void setting_profile_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
45 static Eina_Bool setting_profile_sound_main_click_softkey_cancel_cb(void *data, Elm_Object_Item *it);
46 static void setting_profile_sound_main_Gendial_chk_cb(void *data, Evas_Object *obj, void *event_info);
47 static void setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, void *event_info);
48 static void setting_profile_sound_main_create_popup_with_sliders(void *data);
49 static void setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
50 static void setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
51 static void setting_profile_sound_main_media_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
52 static void setting_profile_sound_main_call_vib_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
53 static void setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
54 static void setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
55 static void settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
56 static void setting_profile_sound_main_tts_sound_slider_value_change_cb(void *data, Evas_Object *obj, void *event_info);
57
58
59 #define ADD_GENLIST(genlist, parent) \
60 {\
61         genlist = elm_genlist_add(parent);\
62         retvm_if(genlist == NULL, NULL, "Cannot set genlist object as contento of layout");\
63         elm_genlist_realization_mode_set(genlist, EINA_TRUE);\
64         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);\
65         elm_object_style_set(genlist, "dialogue");\
66         elm_genlist_clear(genlist);\
67         evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);\
68         elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);\
69 }
70
71 #define ADD_TOGGLE_MENU(item, genlist, item_style, keystr, value, g_style, data) \
72 {\
73         item = setting_create_Gendial_field_def(genlist, &(item_style), \
74                                              setting_profile_sound_main_mouse_up_Gendial_list_cb, \
75                                              data, SWALLOW_Type_1ICON_1RADIO, NULL, \
76                                              NULL, value, \
77                                              keystr, NULL, \
78                                              setting_profile_sound_main_Gendial_chk_cb); \
79         if (item) {\
80                 item->userdata = data;\
81                 setting_genlist_item_groupstyle_set(item, g_style); \
82         } else {\
83                 SETTING_TRACE_ERROR("%s item is NULL", keystr);\
84         }\
85 }
86
87 #define ADD_SLIDER_MENU(item, genlist, item_style, l_img, r_img, value, keystr, data, sld_cb, sld_max, start_cb, stop_cb, sound_group, g_style) \
88 { \
89         item = setting_create_Gendial_field_def(genlist, &(item_style), NULL,\
90                                              NULL, \
91                                              SWALLOW_Type_LAYOUT_SLIDER,\
92                                              l_img, r_img,\
93                                              value,\
94                                              keystr,\
95                                              NULL,\
96                                              sld_cb);\
97         if (item) {\
98                 item->win_main = data->win_main_layout;\
99                 item->evas = data->evas;\
100                 item->isIndicatorVisible = TRUE;\
101                 item->slider_min = 0;\
102                 item->slider_max = sld_max;\
103                 item->userdata = data;\
104                 item->start_change_cb = start_cb;\
105                 item->stop_change_cb = stop_cb;\
106                 item->belongs_to = sound_group;\
107                 setting_genlist_item_groupstyle_set(item, g_style); \
108         } else {\
109                 SETTING_TRACE_ERROR("%s item is NULL", keystr);\
110         }\
111 }
112
113 setting_view setting_view_profile_sound_main = {
114         .create = setting_profile_sound_main_create,
115         .destroy = setting_profile_sound_main_destroy,
116         .update = setting_profile_sound_main_update,
117         .cleanup = setting_profile_sound_main_cleanup,
118 };
119
120 extern char *setting_vib_type[];
121
122 /* ***************************************************
123  *
124  *basic func
125  *
126  ***************************************************/
127 void __change_state_of_sliderbars(void *data)
128 {
129         ret_if(data == NULL);
130         SettingProfileUG *ad = (SettingProfileUG *) data;
131
132         int sound_on = TRUE;
133         int vibration_on = TRUE;
134
135         if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_on) == 0) {
136                 if (sound_on == FALSE) {
137                         /*  disable slider bar of call ringtone, notification, media, and system volume */
138                         if (ad->data_call_volume) {
139                                 setting_disable_genlist_item(ad->data_call_volume->item);
140                         }
141                         if (ad->data_noti_volume) {
142                                 setting_disable_genlist_item(ad->data_noti_volume->item);
143                         }
144                         if (ad->data_media_volume) {
145                                 setting_disable_genlist_item(ad->data_media_volume->item);
146                         }
147                         if (ad->data_touch_volume) {
148                                 setting_disable_genlist_item(ad->data_touch_volume->item);
149                         }
150                 }
151         }
152
153         if (vconf_get_bool
154             (VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vibration_on) == 0) {
155                 if (vibration_on == FALSE) {
156                         /*  disable slider bar of notification and system vibration */
157                         if (ad->data_vib_volume) {
158                                 setting_disable_genlist_item(ad->data_vib_volume->item);
159                         }
160                         if (ad->data_touch_vib) {
161                                 setting_disable_genlist_item(ad->data_touch_vib->item);
162                         }
163                 }
164         }
165 }
166
167 void __sound_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
168 {
169         /* error check */
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 *subitem = (Elm_Object_Item *) event_info;
175         Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
176         elm_genlist_item_selected_set(subitem, 0);
177         Setting_GenGroupItem_Data *data_subItem =
178             elm_object_item_data_get(subitem);
179         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);
180         if (NULL == data_subItem || NULL == data_parentItem)
181                 return;
182
183         elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
184         int err;
185         setting_set_int_slp_key(data_parentItem->int_slp_setting_binded,
186                                 data_subItem->chk_status, &err);
187
188         if (data_parentItem && data_parentItem->item) {
189                 data_parentItem->sub_desc =
190                     (char *)g_strdup(_(data_subItem->keyStr));
191                 elm_object_item_data_set(data_parentItem->item, data_parentItem);
192                 elm_genlist_item_update(data_parentItem->item);
193         }
194
195         elm_genlist_item_expanded_set(parentItem, EINA_FALSE);
196 }
197
198 static void __sound_exp_cb(void *data, Evas_Object *obj, void *event_info)
199 {
200         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
201         retm_if(data == NULL, "Invalid argument: data is NULL");
202
203         SettingProfileUG *ad = (SettingProfileUG *) data;
204         Elm_Object_Item *parentItem = event_info;       /* parent item */
205         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
206         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
207
208         Evas_Object *rgd;
209         if (data_parentItem == ad->data_msg_alert_repeat
210                    || data_parentItem == ad->data_email_alert_repeat) {
211                 rgd = elm_radio_add(scroller);
212                 elm_object_style_set(rgd, "list");
213                 evas_object_propagate_events_set(rgd, EINA_TRUE);
214                 elm_radio_value_set(rgd, -1);
215                 if(parentItem)
216                         elm_object_item_signal_emit(parentItem, "elm,state,center", "");
217                 if(data_parentItem)
218                         data_parentItem->group_style = SETTING_GROUP_STYLE_CENTER;
219
220                 ad->data_sound_text_repeat_once = setting_create_Gendial_exp_sub_field(scroller,
221                                                      &(ad->itc_1icon_1text_sub),
222                                                      __sound_sub_list_sel_cb,
223                                                      ad, parentItem,
224                                                      SWALLOW_Type_1RADIO, rgd,
225                                                      0,
226                                                      _(SETTING_SOUND_TEXT_REPEAT_ONCE),
227                                                      NULL);
228                 if(ad->data_sound_text_repeat_once)
229                 {
230                         ad->data_sound_text_repeat_once->userdata = ad;
231                         setting_genlist_item_groupstyle_set(ad->data_sound_text_repeat_once, SETTING_GROUP_STYLE_CENTER);
232                 }
233                 ad->data_sound_text_repeat_2min = setting_create_Gendial_exp_sub_field(scroller,
234                                                      &(ad->itc_1icon_1text_sub),
235                                                      __sound_sub_list_sel_cb,
236                                                      ad, parentItem,
237                                                      SWALLOW_Type_1RADIO, rgd,
238                                                      1,
239                                                      _(SETTING_SOUND_TEXT_REPEAT_2MIN),
240                                                      NULL);
241                 if(ad->data_sound_text_repeat_2min)
242                 {
243                         ad->data_sound_text_repeat_2min->userdata = ad;
244                         setting_genlist_item_groupstyle_set(ad->data_sound_text_repeat_2min, SETTING_GROUP_STYLE_CENTER);
245                 }
246                 ad->data_sound_text_repeat_5min = setting_create_Gendial_exp_sub_field(scroller,
247                                                      &(ad->itc_1icon_1text_sub),
248                                                      __sound_sub_list_sel_cb,
249                                                      ad, parentItem,
250                                                      SWALLOW_Type_1RADIO, rgd,
251                                                      2,
252                                                      _(SETTING_SOUND_TEXT_REPEAT_5MIN),
253                                                      NULL);
254                 if(ad->data_sound_text_repeat_5min)
255                 {
256                         ad->data_sound_text_repeat_5min->userdata = ad;
257                         setting_genlist_item_groupstyle_set(ad->data_sound_text_repeat_5min, SETTING_GROUP_STYLE_CENTER);
258                 }
259                 ad->data_sound_text_repeat_10min = setting_create_Gendial_exp_sub_field(scroller,
260                                                      &(ad->itc_1icon_1text_sub),
261                                                      __sound_sub_list_sel_cb,
262                                                      ad, parentItem,
263                                                      SWALLOW_Type_1RADIO, rgd,
264                                                      3,
265                                                      _(SETTING_SOUND_TEXT_REPEAT_10MIN),
266                                                      NULL);
267                 if(ad->data_sound_text_repeat_10min)
268                 {
269                         ad->data_sound_text_repeat_10min->userdata = ad;
270                         setting_genlist_item_groupstyle_set(ad->data_sound_text_repeat_10min, SETTING_GROUP_STYLE_BOTTOM);
271                 }
272                 if(data_parentItem) {
273                         setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
274                 }
275         }
276 }
277 static void __sound_con_cb(void *data, Evas_Object *obj,
278                                                 void *event_info)
279 {
280         ret_if(data == NULL || event_info == NULL);
281         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
282         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(item);
283         char *cb_type = data;
284
285         if (0 == safeStrCmp(cb_type, "drag")
286             || 0 == safeStrCmp(cb_type, "longpressed")) {
287                 //Evas_Object *base_view = (Evas_Object *) elm_genlist_item_object_get(item);
288                 //edje_object_signal_emit(base_view, "mouse,out", "touch_arrow");
289         } else if (0 == safeStrCmp(cb_type, "contracted")) {
290                 if(item)
291                 {
292                         elm_genlist_item_subitems_clear(item);
293                         elm_object_item_signal_emit(item, "elm,state,bottom", "");
294                 }
295                 if(data_parentItem)
296                         data_parentItem->group_style = SETTING_GROUP_STYLE_BOTTOM;
297         }
298 }
299
300 static Eina_Bool __play_ringtone_sound_idle_cb(void *data)
301 {
302         SETTING_TRACE_BEGIN;
303         retv_if(!data, EINA_FALSE);
304
305         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
306         SettingProfileUG *ad = list_item->userdata;
307
308         if(list_item->eo_check)
309         {
310                 double current;
311                 current = elm_slider_value_get(list_item->eo_check);
312                 list_item->chk_status = (int)(current+0.5);
313         }
314
315         if(ad->mp_ringtone == NULL)
316         {
317                 setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
318                 char    *pa_tone_path = NULL;
319                 pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
320                 if(pa_tone_path == NULL)
321                 {
322                         if(isEmulBin())
323                                 pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
324                         else
325                                 pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
326
327                         if(vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
328                                 FREE(pa_tone_path);
329                                 return EINA_FALSE;
330                         }
331                 }
332                 if(list_item->chk_status > 0)
333                 {
334                         setting_profile_play_sound_origin(&(ad->mp_ringtone), ad, NULL,
335                                                                                                 pa_tone_path,
336                                                                                                 (float)list_item->chk_status,
337                                                                                                 SOUND_TYPE_RINGTONE);
338                 }
339         }
340         else
341         {
342                 player_state_e state;
343                 player_get_state(*(ad->mp_ringtone), &state);
344                 SETTING_TRACE("ringtone player status : %d", state);
345                 if(state == PLAYER_STATE_PAUSED)
346                 {
347                         player_start(*(ad->mp_ringtone));
348                 }
349                 else if(state == PLAYER_STATE_PLAYING)
350                 {
351                         //bool is_muted = 0;
352                         //player_is_muted(*(ad->mp_ringtone), &is_muted);
353                         //SETTING_TRACE("ringtone player is muted : %d", is_muted);
354                         if(/*is_muted &&*/ ad->sound_on)
355                                 player_set_mute(*(ad->mp_ringtone), 0);
356                 }
357         }
358
359         ad->play_ringtone_idler = NULL;
360         return EINA_FALSE;
361 }
362
363 void __ringtone_start_change_cb(void *data, Evas_Object *obj, void *event_info)
364 {
365         SETTING_TRACE_BEGIN;
366         ret_if(data == NULL);
367
368         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
369         SettingProfileUG *ad = list_item->userdata;
370         ret_if(ad == NULL);
371         //if(haptic_stop_all_effects(ad->hnd_hpt) != 0){
372         //      SETTING_TRACE("Error,haptic_stop_all_effects")
373         //}
374
375         ad->cur_vol_type = SETTING_VOL_TYPE_RINGTONE;
376
377         setting_profile_create_warning_popup_during_call(ad);
378         if(ad->no_play_popup)
379                 return;
380 #if 0
381         if(ad->mp_ringtone == NULL)
382         {
383                 setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
384                 if(list_item->chk_status > 0)
385                 {
386                         char    *pa_tone_path = NULL;
387                         pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
388                         if(pa_tone_path == NULL)
389                         {
390                                 if(isEmulBin())
391                                         pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
392                                 else
393                                         pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
394
395                                 if(vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
396                                         FREE(pa_tone_path);
397                                         return;
398                                 }
399                         }
400                         setting_profile_play_sound_origin(&(ad->mp_ringtone), ad, NULL,
401                                                                                                 pa_tone_path,
402                                                                                                 (float)list_item->chk_status,
403                                                                                                 SOUND_TYPE_RINGTONE);
404                 }
405         }
406 #else
407         setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
408 #endif
409 }
410 void __noti_start_change_cb(void *data, Evas_Object *obj, void *event_info)
411 {
412         SETTING_TRACE_BEGIN;
413         ret_if(data == NULL);
414
415         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
416         SettingProfileUG *ad = list_item->userdata;
417         ret_if(ad == NULL);
418
419         //if(haptic_stop_all_effects(ad->hnd_hpt) != 0){
420         //      SETTING_TRACE("Error,haptic_stop_all_effects")
421         //}
422
423         ad->cur_vol_type = SETTING_VOL_TYPE_NOTIFICATION;
424
425         setting_profile_create_warning_popup_during_call(ad);
426         if(ad->no_play_popup)
427                 return;
428 #if 0
429         if(ad->mp_noti == NULL)
430         {
431                 setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_NOTIFICATION);
432                 if(list_item->chk_status > 0)
433                 {
434                         char    *pa_tone_path = NULL;
435                         pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_RINGTONE_PATH_STR);
436                         if(pa_tone_path == NULL)
437                         {
438                                 pa_tone_path = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
439
440                                 if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_RINGTONE_PATH_STR, pa_tone_path) < 0) {
441                                         FREE(pa_tone_path);
442                                         return;
443                                 }
444                         }
445                         setting_profile_play_sound_origin(&(ad->mp_noti), ad, NULL,
446                                                                                                 pa_tone_path,
447                                                                                                 (float)list_item->chk_status,
448                                                                                                 SOUND_TYPE_NOTIFICATION);
449                 }
450         }
451 #else
452         setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_NOTIFICATION);
453 #endif
454 }
455 void __media_start_change_cb(void *data, Evas_Object *obj, void *event_info)
456 {
457         ret_if(data == NULL);
458
459         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
460         SettingProfileUG *ad = list_item->userdata;
461
462         if(haptic_stop_all_effects(ad->hnd_hpt) != 0){
463                 SETTING_TRACE("Error,haptic_stop_all_effects")
464         }
465
466         ad->cur_vol_type = SETTING_VOL_TYPE_MEDIA;
467
468         setting_profile_create_warning_popup_during_call(ad);
469         if(ad->no_play_popup)
470                 return;
471 #if 0
472         if(ad->mp_media == NULL)
473         {
474                 sound_type_e type;
475                 sound_manager_get_current_sound_type(&type);
476                 if(type != SOUND_TYPE_MEDIA)
477                 {
478                         setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_MEDIA);
479                         if(list_item->chk_status > 0)
480                         {
481                                 setting_profile_play_sound_origin(&(ad->mp_media), ad, NULL,
482                                                                                                 SETTING_DEFAULT_MEDIA_TONE,
483                                                                                                 (float)list_item->chk_status,
484                                                                                                 SOUND_TYPE_MEDIA);
485                         }
486                 }
487         }
488 #else
489         setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_MEDIA);
490 #endif
491 }
492 void __system_start_change_cb(void *data, Evas_Object *obj, void *event_info)
493 {
494         ret_if(data == NULL);
495
496         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
497         SettingProfileUG *ad = list_item->userdata;
498
499         if(haptic_stop_all_effects(ad->hnd_hpt) != 0){
500                 SETTING_TRACE("Error,haptic_stop_all_effects")
501         }
502
503         ad->cur_vol_type = SETTING_VOL_TYPE_SYSTEM;
504
505         setting_profile_create_warning_popup_during_call(ad);
506         if(ad->no_play_popup)
507                 return;
508
509         setting_profile_close_all_mm_players(ad);
510 }
511
512 void __noti_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
513 {
514         ret_if(data == NULL);
515
516         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
517         SettingProfileUG *ad = list_item->userdata;
518
519         ad->cur_vol_type = SETTING_VOL_TYPE_NOTI_VIB;
520         setting_profile_close_all_mm_players(ad);
521
522         if(list_item->chk_status > 0)
523         {
524                 SETTING_TRACE_DEBUG("play_value %d", list_item->chk_status);
525                 int err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_NOTI_PREVIEW_VIB,
526                                                                                                         1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
527                 if(err != 0)
528                         SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
529         }
530 }
531
532 void __haptic_vib_start_change_cb(void *data, Evas_Object *obj, void *event_info)
533 {
534         SETTING_TRACE_BEGIN;
535         ret_if(data == NULL);
536
537         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
538         SettingProfileUG *ad = list_item->userdata;
539
540         ad->cur_vol_type = SETTING_VOL_TYPE_HAPTIC_VIB;
541         setting_profile_close_all_mm_players(ad);
542
543         if(list_item->chk_status > 0)
544         {
545                 SETTING_TRACE_DEBUG("play_value %d", list_item->chk_status);
546                 int err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_HAPTIC_PREVIEW_VIB,
547                                                                                                         1, list_item->chk_status * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
548                 if(err != 0)
549                         SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
550         }
551 }
552
553 void __volume_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
554 {
555         SETTING_TRACE_BEGIN;
556 #if 0
557         ret_if(data == NULL);
558
559         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
560         SettingProfileUG *ad = list_item->userdata;
561
562         SETTING_TRACE("cur_vol_type : %d", ad->cur_vol_type);
563
564         double   value = elm_slider_value_get(obj);
565         SETTING_TRACE("value : %f", value);
566         list_item->chk_status = (int)(value+0.5);
567         SETTING_TRACE("list_item->chk_status : %d", list_item->chk_status);
568         elm_slider_value_set(obj, list_item->chk_status);
569
570         /* Change left icon of sliders */
571         char *left_icon = NULL;
572         switch(ad->cur_vol_type)
573         {
574                 case SETTING_VOL_TYPE_RINGTONE :
575                         left_icon = setting_profile_get_slider_icon(SND_SLIDER_CALL, list_item->chk_status);
576                         break;
577                 case SETTING_VOL_TYPE_NOTIFICATION :
578                         left_icon = setting_profile_get_slider_icon(SND_SLIDER_NOTI, list_item->chk_status);
579                         break;
580                 case SETTING_VOL_TYPE_MEDIA :
581                         /* MEDIA has just one icon type. No need to change */
582                         return;
583                 case SETTING_VOL_TYPE_SYSTEM :
584                         left_icon = setting_profile_get_slider_icon(SND_SLIDER_SYSTEM, list_item->chk_status);
585                         break;
586                 default:
587                         break;
588         }
589
590         if(!left_icon)
591                 return;
592
593         Evas_Object *cur_icon = elm_object_content_unset(obj);
594         if(cur_icon)
595         {
596                 evas_object_del(cur_icon);
597                 cur_icon = NULL;
598         }
599         Evas_Object *icon = elm_icon_add(obj);
600         elm_image_file_set(icon, left_icon, NULL);
601         evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
602         elm_object_content_set(obj, icon);
603         evas_object_show(icon);
604 #else
605         ret_if(data == NULL);
606         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
607         SETTING_TRACE("chk_status : %d, slider : %f", list_item->chk_status, elm_slider_value_get(obj));
608         if(list_item->chk_status == 0)
609         {
610                 elm_slider_value_set(obj, 0.0);
611         }
612         else if(list_item->chk_status == 15)
613         {
614                 elm_slider_value_set(obj, 15.0);
615         }
616 #endif
617         SETTING_TRACE_END;
618 }
619
620 void __vibration_stop_change_cb(void *data, Evas_Object *obj, void *event_info)
621 {
622         ret_if(data == NULL);
623
624         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
625         //SettingProfileUG *ad = list_item->userdata;
626
627         double   value = elm_slider_value_get(obj);
628         list_item->chk_status = (int)(value+0.5);
629         elm_slider_value_set(obj, list_item->chk_status);
630
631         SETTING_TRACE_END;
632 }
633
634 void ___sound_destroy_ug_cb(ui_gadget_h ug, void *priv)
635 {
636         ret_if(priv == NULL);
637         SettingProfileUG *ad =  priv;
638         if (ug) {
639                 setting_ug_destroy(ug);
640                 ad->ug_loading = NULL;
641         }
642 }
643
644 char* __get_sound_mode_str(void)
645 {
646         // update radio
647         int sound = 0;
648         int vibration = 0;
649         vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
650         vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vibration);
651
652         if(sound && !vibration)
653                 return (char*)g_strdup("IDS_ST_HEADER_SOUND");
654         else if(vibration && !sound)
655                 return (char*)g_strdup("IDS_ST_BODY_CALLALERTTYPE_VIBRATION");
656         else if(!vibration && !sound)
657                 return (char*)g_strdup("IDS_ST_BODY_MUTE");
658         else
659                 return NULL;
660 }
661
662 static void __get_lite_main_list(void *data)
663 {
664         SETTING_TRACE_BEGIN;
665         ret_if(!data);
666         SettingProfileUG *ad = (SettingProfileUG *)data;
667
668         int vconf_value = 0;
669         char *sub_desc = NULL;
670
671         Evas_Object *genlist = NULL;
672         ADD_GENLIST(genlist, ad->navi_bar);
673         ad->gl_lite_main = genlist;
674         elm_genlist_block_count_set(genlist, 3);
675         setting_enable_expandable_genlist(genlist, ad, __sound_exp_cb, NULL);
676
677         /* 1. Sound mode */
678         sub_desc = __get_sound_mode_str();
679         ad->data_sound_mode =
680             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
681                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
682                                              ad, SWALLOW_Type_INVALID, NULL,
683                                              NULL, 0, "IDS_ST_OPT_SOUND_MODE_ABB",
684                                              sub_desc, NULL);
685         if (ad->data_sound_mode) {
686                 ad->data_sound_mode->userdata = ad;
687                 setting_genlist_item_groupstyle_set(ad->data_sound_mode, SETTING_GROUP_STYLE_TOP);
688         } else {
689                 SETTING_TRACE_ERROR("ad->data_call_alert_tone is NULL");
690         }
691
692         G_FREE(sub_desc);
693
694         /* 2. Volume */
695         setting_create_Gendial_field_def(genlist, &itc_1text,
696                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
697                                              data, SWALLOW_Type_INVALID, NULL,
698                                              NULL, 0,
699                                              VOLUME_STR, NULL, NULL);
700
701         ADD_GL_SEPARATOR(genlist)
702
703         /* Group title : Ringtones and notifications */
704         (void)setting_create_Gendial_field_titleItem(genlist,
705                                                      &itc_group_item,
706                                                      _(STR_RINGTONES_AND_NOTIFICATIONS), NULL);
707         /* 3. Ringtones */
708         int vconf_ret = 0;
709         char *pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
710         if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
711         {
712                 if(isEmulBin())
713                         pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
714                 else
715                         pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
716                 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_ringtone);
717                 if(vconf_ret < 0)
718                         SETTING_TRACE_DEBUG("failed to set vconf");
719         }
720         sub_desc = setting_media_basename(pa_ringtone);
721
722         ad->data_call_alert_tone =
723             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
724                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
725                                              ad, SWALLOW_Type_INVALID, NULL,
726                                              NULL, 0, SETTING_SOUND_TEXT_RINGTONES,
727                                              sub_desc, NULL);
728         if (ad->data_call_alert_tone) {
729                 ad->data_call_alert_tone->userdata = ad;
730                 setting_genlist_item_groupstyle_set(ad->data_call_alert_tone, SETTING_GROUP_STYLE_TOP);
731         } else {
732                 SETTING_TRACE_ERROR("ad->data_call_alert_tone is NULL");
733         }
734
735         FREE(pa_ringtone);
736         G_FREE(sub_desc);
737
738         /* 4. Notification alert */
739         pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
740         if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
741         {
742                 pa_ringtone = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
743                 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE);
744                 if(vconf_ret < 0)
745                         SETTING_TRACE_DEBUG("failed to set vconf");
746         }
747         sub_desc = setting_media_basename(pa_ringtone);
748
749         ad->data_msg_alert_tone =
750             setting_create_Gendial_field_def(genlist, &(ad->itc_2text_2),
751                                              setting_profile_sound_main_mouse_up_Gendial_list_cb,
752                                              ad, SWALLOW_Type_INVALID, NULL,
753                                              NULL, 0,
754                                              SETTING_SOUND_TEXT_NOTIFICATION_ALERT/*SETTING_SOUND_TEXT_MSG_ALERT*/,
755                                              sub_desc, NULL);
756         if (ad->data_msg_alert_tone) {
757                 ad->data_msg_alert_tone->userdata = ad;
758                 ad->data_msg_alert_tone->group_style = SETTING_GROUP_STYLE_TOP;
759                 setting_genlist_item_groupstyle_set(ad->data_msg_alert_tone, SETTING_GROUP_STYLE_TOP);
760         } else {
761                 SETTING_TRACE_ERROR("ad->data_msg_alert_tone is NULL");
762         }
763         FREE(pa_ringtone);
764         G_FREE(sub_desc);
765
766         /* 5. Notification alert repetition */
767         if (vconf_get_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &vconf_value) != 0)
768                 vconf_value = SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT;    /*  default 0 : repeat once */
769         ad->data_msg_alert_repeat =
770             setting_create_Gendial_exp_parent_field(genlist,
771                                                     &itc_2text_3_parent,
772                                                     NULL, NULL, SWALLOW_Type_INVALID,
773                                                     SETTING_SOUND_TEXT_NOTIFICATION_ALERT_REPETITION/*SETTING_SOUND_TEXT_MSG_RINGTONE_REPEAT*/,
774                                                     _(repeat_type[vconf_value]),
775                                                     SETTING_GROUP_STYLE_CENTER, SETTING_GROUP_STYLE_CENTER);
776         if (ad->data_msg_alert_repeat) {
777                 ad->data_msg_alert_repeat->int_slp_setting_binded =
778                                         INT_SLP_SETTING_MSG_ALERT_REPEAT;
779         } else {
780                 SETTING_TRACE_ERROR("ad->data_msg_alert_repeat is NULL");
781         }
782
783         /* 1. Vibrate when ringing */
784         if (vconf_get_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, &vconf_value) < 0)
785         {
786                 vconf_value = TRUE;     /*  default value of vibrate sound : on */
787         }
788         ADD_TOGGLE_MENU(ad->data_sound_when_ring, genlist, itc_1text_1icon, SETTING_SOUND_TEXT_VIBRATE_WHEN_RING, vconf_value, SETTING_GROUP_STYLE_NONE, ad);
789
790         /* Group title : Feedback */
791         setting_create_Gendial_field_titleItem(genlist,
792                                                      &itc_group_item,
793                                                      _(STR_FEEDBACK), NULL);
794
795         /* 6. Keytones */
796         if (vconf_get_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, &vconf_value) < 0)
797                 vconf_value = TRUE;     /*  default value of touch sounds : on */
798         ADD_TOGGLE_MENU(ad->data_button_sounds, genlist, itc_1text_1icon, "IDS_ST_MBODY_DIALLING_KEYPAD_TONE", vconf_value, SETTING_GROUP_STYLE_NONE, ad)
799         ADD_GL_HELP(genlist,"IDS_ST_BODY_PLAY_TONE_WHEN_THE_DIALLING_KEYPAD_IS_TAPPED");
800
801         /* 7. Touch sounds */
802         if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &vconf_value) < 0)
803                 vconf_value = TRUE;     /*  default value of touch sounds : on */
804         ADD_TOGGLE_MENU(ad->data_touch_sounds, genlist, itc_1text_1icon, "IDS_ST_BODY_TOUCH_SOUNDS", vconf_value, SETTING_GROUP_STYLE_NONE, ad)
805         ADD_GL_HELP(genlist,"IDS_ST_BODY_PLAY_SOUND_WHEN_MAKING_SCREEN_SELECTION");
806
807         /*  8. Screen lock sound */
808         if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &vconf_value) < 0)
809                 vconf_value = 0;        /*  default value of lock/unlock sound : off */
810         ADD_TOGGLE_MENU(ad->data_lock_sound, genlist, itc_1text_1icon, SETTING_SOUND_TEXT_LOCK_SOUND, vconf_value, SETTING_GROUP_STYLE_NONE, ad)
811         ADD_GL_HELP(genlist,"IDS_ST_BODY_PLAY_SOUNDS_WHEN_LOCKING_AND_UNLOCKING_SCREEN");
812 }
813
814
815
816 static int setting_profile_sound_main_create(void *cb)
817 {
818         SETTING_TRACE_BEGIN;
819         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
820
821         SettingProfileUG *ad = (SettingProfileUG *) cb;
822
823         ad->ly_main = setting_create_win_layout(ad->win_main_layout, ad->win_get);
824         ad->navi_bar = setting_create_navi_bar(ad->ly_main);
825
826         SETTING_TRACE("1");
827         __get_lite_main_list(ad);
828         Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->navi_bar, KeyStr_Sounds, NULL, NULL, ad->gl_lite_main, NULL);
829         elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
830
831         SETTING_TRACE("viewtype: %s", ad->viewtype);
832         if(!safeStrCmp(ad->viewtype, "org.tizen.setting.volume"))
833         {
834                 SETTING_TRACE("ENTER setting_profile_sound_main_create_popup_with_sliders");
835                 setting_profile_sound_main_create_popup_with_sliders(ad);
836         }
837
838         SETTING_TRACE("2");
839         elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)setting_profile_sound_main_click_softkey_cancel_cb, ad);
840
841         setting_view_profile_sound_main.is_create = TRUE;
842
843         SETTING_TRACE("3");
844         return SETTING_RETURN_SUCCESS;
845 }
846
847 static int setting_profile_sound_main_destroy(void *cb)
848 {
849         /* error check */
850         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
851         SETTING_TRACE_BEGIN;
852
853         SettingProfileUG *ad = (SettingProfileUG *) cb;
854         if (ad->set_sound_idler) {
855                 ecore_idler_del(ad->set_sound_idler);
856                 ad->set_sound_idler = NULL;
857         }
858         if (ad->set_vib_idler) {
859                 ecore_idler_del(ad->set_vib_idler);
860                 ad->set_vib_idler = NULL;
861         }
862
863         if(ad->play_ringtone_idler)
864         {
865                 ecore_idler_del(ad->play_ringtone_idler);
866                 ad->play_ringtone_idler = NULL;
867         }
868
869         //__setting_profile_ug_key_ungrab(ad);
870         //__setting_profile_ug_menu_key_ungrab(ad);
871
872         if(ad->volume_popup)
873         {
874                 evas_object_del(ad->volume_popup);
875                 ad->volume_popup = NULL;
876         }
877         if(ad->sound_mode_popup)
878         {
879                 evas_object_del(ad->sound_mode_popup);
880                 ad->sound_mode_popup = NULL;
881         }
882
883         if (ad->ly_main != NULL) {
884                 evas_object_del(ad->ly_main);
885                 setting_view_profile_sound_main.is_create = FALSE;
886         }
887         return SETTING_RETURN_SUCCESS;
888 }
889
890 static int setting_profile_sound_main_update(void *cb)
891 {
892         /* error check */
893         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
894
895         SettingProfileUG *ad = (SettingProfileUG *) cb;
896
897         if (ad->ly_main != NULL) {
898                 evas_object_show(ad->ly_main);
899         }
900         return SETTING_RETURN_SUCCESS;
901 }
902
903 static int setting_profile_sound_main_cleanup(void *cb)
904 {
905         /* error check */
906         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
907
908         SettingProfileUG *ad = (SettingProfileUG *) cb;
909
910         if (ad->ly_main != NULL) {
911                 evas_object_hide(ad->ly_main);
912         }
913
914         return SETTING_RETURN_SUCCESS;
915 }
916
917 /* ***************************************************
918  *
919  *general func
920  *
921  ***************************************************/
922
923 /* ***************************************************
924  *
925  *call back func
926  *
927  ***************************************************/
928
929 static Eina_Bool setting_profile_sound_main_click_softkey_cancel_cb(void *data, Elm_Object_Item *it)
930 {
931         /* error check */
932         retv_if(data == NULL, EINA_FALSE);
933
934         SettingProfileUG *ad = (SettingProfileUG *) data;
935         SETTING_TRACE_BEGIN;
936
937         /* close mm plaer */
938         setting_profile_close_all_mm_players(ad);
939         /* close vibration */
940         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
941                 SETTING_TRACE("ERROR haptic_stop_all_effects");
942         }
943
944         /* Send destroy request */
945         ug_destroy_me(ad->ug);
946
947         return EINA_FALSE;
948 }
949
950 static void setting_profile_sound_main_destroy_myfile_ug_cb(ui_gadget_h ug, void *priv)
951 {
952         SETTING_TRACE_BEGIN;
953         ret_if(priv == NULL);
954         SettingProfileUG *ad = (SettingProfileUG *) priv;
955
956         //__setting_profile_ug_key_grab(ad);
957
958         if (ug) {
959                 setting_ug_destroy(ug);
960                 ad->ug_loading = NULL;
961         }
962 }
963
964 static void
965 setting_profile_sound_main_result_myfile_ug_cb(ui_gadget_h ug,
966                                                app_control_h result, void *priv)
967 {
968         SETTING_TRACE_BEGIN;
969         ret_if(priv == NULL);
970
971         SettingProfileUG *ad = (SettingProfileUG *) priv;
972         char *ringtone_file = NULL;
973         char *ringtone_path = NULL;
974
975         app_control_get_extra_data(result, "result", &ringtone_path);
976         if(!ringtone_path)
977                 return;
978
979         char *recommend_time = NULL;
980         app_control_get_extra_data(result, "position", &recommend_time);
981
982         SETTING_TRACE("ringtone_path:%s", ringtone_path);
983
984         if (ringtone_path != NULL) {
985                 ringtone_file = setting_media_basename(ringtone_path);
986                 SETTING_TRACE("ringtone_file:%s", ringtone_file);
987
988                 if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_RINGTONES)) {
989                         if (vconf_set_str
990                             (VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, ringtone_path) == 0) {
991                                 if (ad->data_call_alert_tone) {
992                                         ad->data_call_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
993
994                                         elm_object_item_data_set(ad->data_call_alert_tone->item, ad->data_call_alert_tone);
995                                         elm_genlist_item_update(ad->data_call_alert_tone->item);
996                                 }
997                         }
998                         if(recommend_time)
999                         {
1000                                 char recommend_info[512] = {0,};
1001                                 snprintf(recommend_info, 512, "%s; %smsec", ringtone_path, recommend_time);
1002                                 SETTING_TRACE_DEBUG("%s", recommend_info);
1003                                 vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_WITH_RECOMMENDATION_TIME_STR, recommend_info);
1004                         }
1005                 } else if (0 ==
1006                            safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_NOTIFICATION_ALERT)) {
1007                         if (vconf_set_str
1008                             (VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ringtone_path) == 0) {
1009                                 if (ad->data_msg_alert_tone) {
1010                                         ad->data_msg_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
1011
1012                                         elm_object_item_data_set(ad->data_msg_alert_tone->item, ad->data_msg_alert_tone);
1013                                         elm_genlist_item_update(ad->data_msg_alert_tone->item);
1014                                 }
1015                         }
1016                 } else if (0 ==
1017                            safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_EMAIL_ALERT)) {
1018                         if (vconf_set_str
1019                             (VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, ringtone_path) == 0) {
1020                                 if (ad->data_email_alert_tone) {
1021                                         ad->data_email_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
1022
1023                                         elm_object_item_data_set(ad->data_email_alert_tone->item, ad->data_email_alert_tone);
1024                                         elm_genlist_item_update(ad->data_email_alert_tone->item);
1025                                 }
1026                         }
1027                 }
1028         }
1029
1030         FREE(ringtone_path);
1031         FREE(recommend_time);
1032         G_FREE(ringtone_file);
1033         return;
1034 }
1035
1036 static void
1037 setting_profile_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
1038                              void *priv)
1039 {
1040         ret_if(priv == NULL);
1041
1042         //SettingProfileUG *ad = (SettingProfileUG *) priv;
1043         Evas_Object *base;
1044
1045         base = (Evas_Object *) ug_get_layout(ug);
1046         if (!base)
1047                 return;
1048
1049         switch (mode) {
1050                 case UG_MODE_FULLVIEW:
1051                         evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1052                         //elm_win_resize_object_add(ad->win_get, base);
1053                         evas_object_show(base);
1054                         break;
1055                 default:
1056                         break;
1057         }
1058 }
1059
1060
1061 static void setting_profile_sound_main_create_myfile_ug(SettingProfileUG *ad, char *titleID)
1062 {
1063         ret_if(ad == NULL);
1064
1065         if(ad->ug_loading)
1066         {
1067                 SETTING_TRACE("Myfiles ug is already loaded.");
1068                 return;
1069         }
1070
1071         struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1072         if (!cbs)
1073                 return;
1074
1075         cbs->layout_cb = setting_profile_layout_ug_cb;
1076         cbs->result_cb = setting_profile_sound_main_result_myfile_ug_cb;
1077         cbs->destroy_cb = setting_profile_sound_main_destroy_myfile_ug_cb;
1078         cbs->priv = (void *)ad;
1079
1080         app_control_h svc;
1081         if (app_control_create(&svc)) {
1082                 FREE(cbs);
1083                 return;
1084         }
1085
1086         const char *pa_cur_ringtone = NULL;
1087         const char *dir_path = NULL;
1088         if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_RINGTONES)) {
1089                 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
1090                 if (pa_cur_ringtone == NULL)
1091                 {
1092                         if(isEmulBin())
1093                                 pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
1094                         else
1095                                 pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
1096                 }
1097                 dir_path = SETTING_PROFILE_SOUND_RINGTONES_PATH;
1098         } else if (0 == safeStrCmp(ad->ringtone_type, SETTING_SOUND_TEXT_NOTIFICATION_ALERT)) {
1099                 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
1100                 if (pa_cur_ringtone == NULL)
1101                         pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
1102                 dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
1103         }
1104         SETTING_TRACE("pa_cur_ringtone:\t%s", pa_cur_ringtone);
1105         SETTING_TRACE("dir_path:\t%s", dir_path);
1106
1107         app_control_add_extra_data(svc, "title", titleID);
1108         app_control_add_extra_data(svc, "domain", SETTING_PACKAGE);
1109         app_control_add_extra_data(svc, "path", dir_path);
1110         app_control_add_extra_data(svc, "select_type", "SINGLE_FILE");
1111         app_control_add_extra_data(svc, "file_type", "SOUND");
1112         app_control_add_extra_data(svc, "drm_type", "DRM_ALL");
1113         app_control_add_extra_data(svc, "silent", "silent show"); /* Show Silent item in the list */
1114         if(safeStrCmp(pa_cur_ringtone, "silent") == 0)
1115                 app_control_add_extra_data(svc, "marked_mode", "silent");       /* Set radio on Silent item */
1116         else
1117                 app_control_add_extra_data(svc, "marked_mode", pa_cur_ringtone);
1118
1119         elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
1120         SETTING_TRACE("ad->ug->layout:%p", (void *)ug_get_layout(ad->ug));
1121         ad->ug_loading = setting_ug_create(ad->ug, "setting-ringtone-efl", UG_MODE_FULLVIEW, svc, cbs);
1122         if (NULL == ad->ug_loading) {   /* error handling */
1123                 SETTING_TRACE_ERROR("NULL == ad->ug_loading");
1124         }
1125
1126         app_control_destroy(svc);
1127         FREE(cbs);
1128
1129         /** @todo verify it's valid */
1130         if(pa_cur_ringtone) {
1131                 free((void *)pa_cur_ringtone);
1132                 pa_cur_ringtone = NULL;
1133         }
1134
1135         //__setting_profile_ug_key_ungrab(ad);
1136         //__setting_profile_ug_menu_key_grab(ad);
1137         return;
1138 }
1139
1140 static void
1141 setting_profile_sound_main_Gendial_chk_cb(void *data, Evas_Object *obj,
1142                                           void *event_info)
1143 {
1144         /* error check */
1145         ret_if(data == NULL);
1146
1147         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1148         SettingProfileUG *ad = list_item->userdata;
1149         SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
1150
1151         if(SETTING_RETURN_SUCCESS != setting_profile_close_all_mm_players(ad)){
1152                 SETTING_TRACE_ERROR("close player fail.");
1153         }
1154
1155         int state = list_item->chk_status = elm_check_state_get(obj);   /*  for genlist update status */
1156
1157         /* restore the selected check status */
1158         setting_update_gl_item_chk_status(list_item, state);
1159
1160         if (!safeStrCmp(SETTING_SOUND_TEXT_SOUND, list_item->keyStr)) {
1161                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, list_item->chk_status) < 0) {
1162                         setting_update_gl_item_chk_status(list_item, !state);
1163                 }
1164
1165                 if (!list_item->chk_status) {
1166                         setting_profile_close_all_mm_players(ad);
1167                 }
1168         } else if (!safeStrCmp(SETTING_SOUND_TEXT_VIBRATION, list_item->keyStr)) {
1169                 if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, list_item->chk_status) < 0) {
1170                         setting_update_gl_item_chk_status(list_item, !state);
1171                 }
1172                 if (list_item->chk_status) {
1173                         /* Play vib if vib turns on */
1174                         int err = 0;
1175                         int noti_vib = 5;
1176                         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1177                                 SETTING_TRACE("ERROR haptic_stop_all_effects");
1178                         }
1179                         if(ad->data_vib_volume && ad->data_vib_volume->eo_check)
1180                                 noti_vib = (int)(elm_slider_value_get(ad->data_vib_volume->eo_check) + 0.5);
1181                         err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_NOTI_PREVIEW_VIB, 1, noti_vib * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
1182
1183                         if (err < 0)
1184                                 SETTING_TRACE("Failed to play haptic monotone");
1185                 } else {
1186                         if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1187                                 SETTING_TRACE("ERROR haptic_stop_all_effects");
1188                         }
1189                 }
1190         }
1191         /* additional items */
1192         else if(!safeStrCmp(SETTING_SOUND_TEXT_VIBRATE_WHEN_RING, list_item->keyStr))
1193         {
1194                 /* vibrate when ring*/
1195                 if(vconf_set_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, list_item->chk_status) < 0)
1196                 {
1197                         setting_update_gl_item_chk_status(list_item, !state);
1198                 }
1199         }
1200         else if (!safeStrCmp(SETTING_SOUND_TEXT_LOCK_SOUND, list_item->keyStr)) {
1201                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, list_item->chk_status) < 0) {
1202                         setting_update_gl_item_chk_status(list_item, !state);
1203                 }
1204         }
1205         else if (!safeStrCmp("IDS_ST_MBODY_DIALLING_KEYPAD_TONE", list_item->keyStr)) {
1206                 if (vconf_set_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, list_item->chk_status) < 0) {
1207                         setting_update_gl_item_chk_status(list_item, !state);
1208                 }
1209         }
1210         else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr)) {
1211                 if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, list_item->chk_status) < 0) {
1212                         setting_update_gl_item_chk_status(list_item, !state);
1213                 }
1214         }
1215         else if (!safeStrCmp("IDS_SMEMO_MBODY_HAPTIC_FEEDBACK", list_item->keyStr)) {
1216                 if (vconf_set_bool(VCONFKEY_SETAPPL_HAPTIC_FEEDBACK_STATUS_BOOL, list_item->chk_status) < 0) {
1217                         setting_update_gl_item_chk_status(list_item, !state);
1218                 }
1219         }
1220
1221         /* end */
1222         SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
1223 }
1224
1225 static void __slider_popup_del_cb(void *data, Evas_Object *obj, void *event_info)
1226 {
1227         SETTING_TRACE_BEGIN;
1228         SETTING_TRACE(" REMOVE THE POPUP OBJECT BY THIS FUNCTION ");
1229
1230         SettingProfileUG *ad = data;
1231         if(ad)
1232         {
1233                 if(ad->volume_popup)
1234                 {
1235                         evas_object_del(ad->volume_popup);
1236                         ad->volume_popup = NULL;
1237                 }
1238                 ad->data_call_volume = NULL;
1239                 ad->data_noti_volume = NULL;
1240                 ad->data_media_volume = NULL;
1241                 ad->data_touch_volume = NULL;
1242                 //__setting_profile_ug_key_ungrab(ad);
1243                 setting_profile_close_all_mm_players(ad);
1244         }
1245
1246         if(!safeStrCmp(ad->viewtype, "org.tizen.setting.volume"))
1247         {
1248                 ug_destroy_me(ad->ug);
1249                 elm_exit();
1250         }
1251 }
1252
1253 static void setting_profile_sound_main_create_popup_with_sliders(void *data)
1254 {
1255         ret_if(!data);
1256         SettingProfileUG *ad = data;
1257
1258         int mm_value = 0;
1259         int sound_value = 0;
1260         char *left_icon = NULL;
1261
1262         Evas_Object *genlist;
1263         Evas_Object *box;
1264         Evas_Object *done_btn;
1265
1266         ad->volume_popup = elm_popup_add(ad->win_get);
1267         ea_object_event_callback_add(ad->volume_popup, EA_CALLBACK_BACK, __slider_popup_del_cb, ad);
1268         evas_object_size_hint_weight_set(ad->volume_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1269         elm_object_part_text_set(ad->volume_popup, "title,text", _(VOLUME_STR));
1270         //evas_object_smart_callback_add(popup, "block,clicked", __slider_popup_del_cb, ad);
1271
1272         /* Done button */
1273         done_btn = elm_button_add(ad->volume_popup);
1274         elm_object_text_set(done_btn, _("IDS_ST_SK3_DONE"));
1275         elm_object_part_content_set(ad->volume_popup, "button1", done_btn);
1276         elm_object_style_set(done_btn, "popup");
1277         evas_object_smart_callback_add(done_btn, "clicked", __slider_popup_del_cb, ad);
1278
1279         box = elm_box_add(ad->volume_popup);
1280         evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1281
1282         genlist = elm_genlist_add(box);
1283         elm_genlist_realization_mode_set(genlist, EINA_TRUE);
1284         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1285         evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1286         evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
1287
1288         if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_value) < 0)
1289                 sound_value = TRUE;     /*  default value of sound : on */
1290
1291         /* d.call volumn. */
1292         if(sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value) < 0)
1293                 mm_value = SETTING_DEFAULT_RINGTONE_VOL_INT;
1294         if(sound_value == FALSE)
1295                 mm_value = 0;
1296
1297         left_icon = setting_profile_get_slider_icon(SND_SLIDER_CALL, mm_value);
1298
1299         ADD_SLIDER_MENU(ad->data_call_volume, genlist, ad->itc_layout,
1300                                                         left_icon, NULL/*IMG_SLIDER_BTN_RING_VOLUME*/,
1301                                                         mm_value, SETTING_SOUND_TEXT_INCOMING_CALL, ad,
1302                                                         setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb,
1303                                                         SETTING_SOUND_VOL_MAX,
1304                                                         __ringtone_start_change_cb, __volume_stop_change_cb,
1305                                                         SETTING_VOL_VIBRATION_GROUP, SETTING_GROUP_STYLE_TOP)
1306
1307         elm_genlist_item_select_mode_set(ad->data_call_volume->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1308
1309         /* e.noti volumn */
1310         if(sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value) < 0)
1311                 mm_value = SETTING_DEFAULT_NOTI_VOL_INT;
1312         if(sound_value == FALSE)
1313                 mm_value = 0;
1314
1315         left_icon = setting_profile_get_slider_icon(SND_SLIDER_NOTI, mm_value);
1316
1317         ADD_SLIDER_MENU(ad->data_noti_volume, genlist, ad->itc_layout,
1318                                                         left_icon, NULL/*IMG_SLIDER_BTN_NOTI_VOLUME*/,
1319                                                         mm_value, SETTING_SOUND_TEXT_NOTIFICATION, ad,
1320                                                         setting_profile_sound_main_noti_sound_slider_value_change_cb,
1321                                                         SETTING_SOUND_VOL_MAX,
1322                                                         __noti_start_change_cb, __volume_stop_change_cb,
1323                                                         SETTING_VOL_SOUND_GROUP, SETTING_GROUP_STYLE_CENTER)
1324
1325         elm_genlist_item_select_mode_set(ad->data_noti_volume->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1326
1327         /* g.media volume */
1328         if(sound_manager_get_volume(SOUND_TYPE_MEDIA, &mm_value) < 0)
1329                 mm_value = SETTING_DEFAULT_MEDIA_VOL_INT;
1330
1331         left_icon = setting_profile_get_slider_icon(SND_SLIDER_MEDIA, mm_value);
1332
1333         ADD_SLIDER_MENU(ad->data_media_volume, genlist, ad->itc_layout,
1334                                                         left_icon, NULL/*IMG_SLIDER_BTN_VOLUME02*/,
1335                                                         mm_value, SETTING_SOUND_TEXT_MEDIA, ad,
1336                                                         setting_profile_sound_main_media_sound_slider_value_change_cb,
1337                                                         SETTING_SOUND_VOL_MAX,
1338                                                         __media_start_change_cb, __volume_stop_change_cb,
1339                                                         SETTING_VOL_VIBRATION_GROUP, SETTING_GROUP_STYLE_CENTER)
1340
1341         elm_genlist_item_select_mode_set(ad->data_media_volume->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1342
1343         /* h.system volume */
1344         if(sound_manager_get_volume(SOUND_TYPE_SYSTEM, &mm_value) < 0)
1345         {
1346                 SETTING_TRACE_DEBUG("Fail to get volume");
1347                 mm_value = SETTING_DEFAULT_SYSTEM_VOL_INT;
1348         }
1349         if(sound_value == FALSE)
1350                 mm_value = 0;
1351
1352         left_icon = setting_profile_get_slider_icon(SND_SLIDER_SYSTEM, mm_value);
1353
1354         ADD_SLIDER_MENU(ad->data_touch_volume, genlist, ad->itc_layout,
1355                                                         left_icon, NULL/*IMG_SLIDER_BTN_SYSTEM_VOLUME*/,
1356                                                         mm_value, SETTING_SOUND_TEXT_SYSTEM, ad,
1357                                                         settings_profile_sound_main_sys_sound_slider_value_change_cb,
1358                                                         SETTING_SOUND_VOL_MAX,
1359                                                         __system_start_change_cb, __volume_stop_change_cb,
1360                                                         SETTING_VOL_SOUND_GROUP, SETTING_GROUP_STYLE_BOTTOM)
1361         evas_object_show(genlist);
1362         elm_box_pack_end(box, genlist);
1363
1364         int w = 0, h= 0;
1365         elm_win_screen_size_get(ad->win_get, NULL, NULL, &w, &h);
1366         //ecore_x_window_size_get(ecore_x_window_root_first_get(), &w,&h);
1367         double popup_height = (double)h * ((double)470/(double)800);
1368         SETTING_TRACE("popup_height : %d", (int)popup_height);
1369         evas_object_size_hint_min_set(box, -1, (int)popup_height);
1370
1371         elm_object_content_set(ad->volume_popup, box);
1372         evas_object_show(ad->volume_popup);
1373
1374         //__setting_profile_ug_key_grab(ad);
1375 }
1376
1377 static void __sound_mode_item_cb(void *data, Evas_Object *obj, void *event_info)
1378 {
1379         /* error check */
1380         ret_if(data == NULL);
1381         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1382
1383         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1384         elm_genlist_item_selected_set(item, 0);
1385
1386         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
1387
1388         SettingProfileUG *ad = data;
1389
1390         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
1391         if (!safeStrCmp("IDS_ST_HEADER_SOUND", list_item->keyStr))
1392         {
1393                 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
1394                 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
1395                 elm_radio_value_set(ad->sound_mode_rdg, 0);
1396         }
1397         else if (!safeStrCmp("IDS_ST_BODY_CALLALERTTYPE_VIBRATION", list_item->keyStr))
1398         {
1399                 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
1400                 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
1401                 elm_radio_value_set(ad->sound_mode_rdg, 1);
1402         }
1403         else if (!safeStrCmp("IDS_ST_BODY_MUTE", list_item->keyStr))
1404         {
1405                 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
1406                 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
1407                 elm_radio_value_set(ad->sound_mode_rdg, 2);
1408         }
1409
1410         if(ad->data_sound_mode && ad->data_sound_mode->item)
1411         {
1412                 G_FREE(ad->data_sound_mode->sub_desc);
1413                 ad->data_sound_mode->sub_desc = __get_sound_mode_str();
1414                 elm_genlist_item_update(ad->data_sound_mode->item);
1415         }
1416
1417         if(ad->sound_mode_popup)
1418         {
1419                 evas_object_del(ad->sound_mode_popup);
1420                 ad->sound_mode_popup = NULL;
1421         }
1422 }
1423
1424 static void __sound_mode_chk_changed_cb(void *data, Evas_Object *obj, void *event_info)
1425 {
1426         /* error check */
1427         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1428
1429         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1430         elm_genlist_item_selected_set(item, 0);
1431
1432         int selected_value = elm_radio_value_get(obj);
1433         SETTING_TRACE("selected radio : %d", selected_value);
1434
1435         if (selected_value == 0)
1436         {
1437                 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
1438                 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
1439         }
1440         else if (selected_value == 1)
1441         {
1442                 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
1443                 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
1444         }
1445         else if (selected_value == 2)
1446         {
1447                 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
1448                 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
1449         }
1450
1451         ret_if(data == NULL);
1452         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
1453         SettingProfileUG *ad = (SettingProfileUG *)list_item->userdata;
1454         ret_if(ad == NULL);
1455
1456         if(ad->sound_mode_popup)
1457         {
1458                 evas_object_del(ad->sound_mode_popup);
1459                 ad->sound_mode_popup = NULL;
1460         }
1461 }
1462
1463 static void __sound_mode_popup_del_cb(void *data, Evas_Object *obj, void *event_info)
1464 {
1465         SETTING_TRACE(" REMOVE THE POPUP OBJECT BY THIS FUNCTION ");
1466
1467         SettingProfileUG *ad = data;
1468         if(ad)
1469         {
1470                 if(ad->sound_mode_popup)
1471                 {
1472                         evas_object_del(ad->sound_mode_popup);
1473                         ad->sound_mode_popup = NULL;
1474                 }
1475         }
1476 }
1477
1478 static void setting_profile_sound_main_create_sound_mode_popup(void *data)
1479 {
1480         SETTING_TRACE_BEGIN;
1481         setting_retm_if(data == NULL, "data is NULL");
1482
1483         SettingProfileUG *ad = (SettingProfileUG *)data;
1484
1485         ad->sound_mode_popup = elm_popup_add(ad->win_get);
1486         ea_object_event_callback_add(ad->sound_mode_popup, EA_CALLBACK_BACK, __sound_mode_popup_del_cb, ad);
1487         evas_object_size_hint_weight_set(ad->sound_mode_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1488         evas_object_smart_callback_add(ad->sound_mode_popup, "block,clicked", NULL, NULL);
1489         elm_object_part_text_set(ad->sound_mode_popup, "title,text", _("IDS_ST_OPT_SOUND_MODE_ABB"));
1490
1491         Evas_Object *box = NULL;
1492         box = elm_box_add(ad->sound_mode_popup);
1493         evas_object_size_hint_weight_set(ad->sound_mode_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1494
1495         Evas_Object *menu_glist = elm_genlist_add(box);
1496         elm_genlist_mode_set(menu_glist, ELM_LIST_COMPRESS);
1497         evas_object_size_hint_weight_set(menu_glist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1498         evas_object_size_hint_align_set(menu_glist, EVAS_HINT_FILL, EVAS_HINT_FILL);
1499
1500         Evas_Object *rdg = elm_radio_add(menu_glist);
1501         elm_object_style_set(rdg, "list");
1502         evas_object_propagate_events_set(rdg, EINA_TRUE);
1503         elm_radio_state_value_set(rdg, -1);
1504         evas_object_data_set(menu_glist, "radio", rdg);
1505         ad->sound_mode_rdg = rdg;
1506
1507         setting_create_Gendial_field_1radio(menu_glist, &itc_1text_1icon,
1508                                                                                 __sound_mode_item_cb, ad,
1509                                                                                 SWALLOW_Type_1RADIO,
1510                                                                                 rdg, 0, "IDS_ST_HEADER_SOUND",
1511                                                                                 __sound_mode_chk_changed_cb);
1512
1513         setting_create_Gendial_field_1radio(menu_glist, &itc_1text_1icon,
1514                                                                                 __sound_mode_item_cb, ad,
1515                                                                                 SWALLOW_Type_1RADIO,
1516                                                                                 rdg, 1, "IDS_ST_BODY_CALLALERTTYPE_VIBRATION",
1517                                                                                 __sound_mode_chk_changed_cb);
1518
1519         setting_create_Gendial_field_1radio(menu_glist, &itc_1text_1icon,
1520                                                                                 __sound_mode_item_cb, ad,
1521                                                                                 SWALLOW_Type_1RADIO,
1522                                                                                 rdg, 2, "IDS_ST_BODY_MUTE",
1523                                                                                 __sound_mode_chk_changed_cb);
1524
1525         evas_object_show(menu_glist);
1526         elm_box_pack_end(box, menu_glist);
1527         evas_object_size_hint_min_set(box, -1, 288*elm_config_scale_get());
1528         elm_object_content_set(ad->sound_mode_popup, box);
1529         evas_object_show(ad->sound_mode_popup);
1530
1531         // update radio
1532         int sound = 0;
1533         int vibration = 0;
1534         vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
1535         vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vibration);
1536
1537         if(sound && !vibration)
1538                 elm_radio_value_set(rdg, 0);
1539         else if(vibration && !sound)
1540                 elm_radio_value_set(rdg, 1);
1541         else if(!vibration && !sound)
1542                 elm_radio_value_set(rdg, 2);
1543 }
1544
1545 static void
1546 setting_profile_sound_main_mouse_up_Gendial_list_cb(void *data,
1547                                                     Evas_Object *obj,
1548                                                     void *event_info)
1549 {
1550         /* error check */
1551         ret_if(data == NULL);
1552         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1553
1554         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1555         elm_genlist_item_selected_set(item, 0);
1556         char *swip_happened = evas_object_data_get(obj, "swip_happened");
1557         if(!safeStrCmp(swip_happened, "TRUE"))
1558         {
1559                 evas_object_data_set(obj, "swip_happened", NULL);
1560                 return;
1561         }
1562         Setting_GenGroupItem_Data *list_item =
1563             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
1564
1565         SettingProfileUG *ad = data;
1566
1567         if(SETTING_RETURN_SUCCESS != setting_profile_close_all_mm_players(ad)){
1568                 SETTING_TRACE_ERROR("close player fail.");
1569         }
1570
1571         if (ad->hnd_hpt) {
1572                 int ret = haptic_stop_all_effects(ad->hnd_hpt);
1573                 if (ret != HAPTIC_ERROR_NONE) {
1574                         SETTING_TRACE_ERROR("haptic_stop_all_effects fail");
1575                 }
1576         }
1577
1578         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
1579         if (!safeStrCmp(SETTING_SOUND_TEXT_RINGTONES, list_item->keyStr)
1580             || !safeStrCmp(SETTING_SOUND_TEXT_NOTIFICATION_ALERT, list_item->keyStr))
1581         {
1582                 ad->ringtone_type = list_item->keyStr;
1583                 setting_profile_sound_main_create_myfile_ug(ad, list_item->keyStr);
1584         }
1585         else if(!safeStrCmp(VOLUME_STR, list_item->keyStr))
1586         {
1587                 /* Create slider popup */
1588                 setting_profile_sound_main_create_popup_with_sliders(ad);
1589         }
1590         else if(!safeStrCmp("IDS_ST_OPT_SOUND_MODE_ABB", list_item->keyStr))
1591         {
1592                 setting_profile_sound_main_create_sound_mode_popup(ad);
1593         }
1594         /* additional */
1595         else if(!safeStrCmp(SETTING_SOUND_TEXT_VIBRATE_WHEN_RING, list_item->keyStr))
1596         {
1597                 /* vibrate when ring*/
1598                 int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
1599                 if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, !old_status) == 0) {
1600                         /* new status */
1601                         setting_update_gl_item_chk_status(list_item, !old_status);
1602                 }
1603         }
1604         else if (!safeStrCmp(SETTING_SOUND_TEXT_LOCK_SOUND, list_item->keyStr))
1605         {
1606                 int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
1607                 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, !old_status) == 0) {
1608                         /* new status */
1609                         setting_update_gl_item_chk_status(list_item, !old_status);
1610                 }
1611         }
1612         else if (!safeStrCmp("IDS_ST_MBODY_DIALLING_KEYPAD_TONE", list_item->keyStr))
1613         {
1614                 int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
1615                 /* To do : set vconfkey for touch sounds */
1616                 if (vconf_set_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, !old_status) == 0) {
1617                         /* new status */
1618                         setting_update_gl_item_chk_status(list_item, !old_status);
1619                 }
1620         }
1621         else if (!safeStrCmp("IDS_ST_BODY_TOUCH_SOUNDS", list_item->keyStr))
1622         {
1623                 int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
1624                 /* To do : set vconfkey for touch sounds */
1625                 if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, !old_status) == 0) {
1626                         /* new status */
1627                         setting_update_gl_item_chk_status(list_item, !old_status);
1628                 }
1629         }
1630         else if (!safeStrCmp("IDS_SMEMO_MBODY_HAPTIC_FEEDBACK", list_item->keyStr))
1631         {
1632                 int old_status = list_item->chk_status;//elm_check_state_get(list_item->eo_check);
1633                 /* To do : set vconfkey for touch sounds */
1634                 if (vconf_set_bool(VCONFKEY_SETAPPL_HAPTIC_FEEDBACK_STATUS_BOOL, !old_status) == 0) {
1635                         /* new status */
1636                         setting_update_gl_item_chk_status(list_item, !old_status);
1637                 }
1638         }
1639         else if (!safeStrCmp(SETTING_SOUND_TEXT_MYSOUND, list_item->keyStr))
1640         {
1641                 SETTING_TRACE_DEBUG("Click My sound");
1642                 bool running = false;
1643
1644                 app_manager_is_running("org.tizen.call-eq-analyzer", &running);
1645
1646                 if (running == true) {
1647                         app_context_h appcontext = NULL;
1648
1649                         SETTING_TRACE_DEBUG("resume app");
1650
1651                         app_manager_get_app_context("org.tizen.call-eq-analyzer", &appcontext);
1652                         ret_if(NULL == appcontext);
1653
1654                         app_manager_resume_app(appcontext);
1655                 } else {
1656                         app_control_h service = NULL;
1657                         int result = 0;
1658                         result = app_control_create(&service);
1659                         if(result != APP_CONTROL_ERROR_NONE) {
1660                                 SETTING_TRACE_DEBUG("service_create fail!! ret=%d", result);
1661                                 return;
1662                         }
1663                         ret_if(NULL == service);
1664
1665                         app_control_set_operation(service, APP_CONTROL_OPERATION_DEFAULT);
1666                         app_control_set_app_id(service, "org.tizen.call-eq-analyzer");
1667
1668                         SETTING_TRACE_DEBUG("launch app");
1669                         app_control_send_launch_request(service, NULL, NULL);
1670                         app_control_destroy(service);
1671                 }
1672         }
1673         /* end */
1674         else if (ad->data_msg_alert_repeat == list_item)
1675         {
1676                 bool status = !elm_genlist_item_expanded_get(item);
1677                 elm_genlist_item_expanded_set(item, status);
1678         }
1679 #if 0
1680         else if (ad->data_call_alert_vib == list_item)
1681         {
1682                 /* Create new view for incoming call vibration */
1683                 setting_view_change(&setting_view_profile_sound_main, &setting_view_profile_sound_call_vibration, ad);
1684                 __setting_profile_ug_key_ungrab(ad);
1685                 __setting_profile_ug_menu_key_grab(ad);
1686         }
1687 #endif
1688 }
1689
1690 static void
1691 setting_profile_sound_main_call_ringtone_sound_slider_value_change_cb(void *data,
1692                                                                       Evas_Object *obj,
1693                                                                       void *event_info)
1694 {
1695         SETTING_TRACE_BEGIN;
1696
1697         /* error check */
1698         ret_if(data == NULL);
1699
1700         double val = elm_slider_value_get(obj);
1701
1702         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1703         SettingProfileUG *ad = list_item->userdata;
1704         //SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
1705
1706         if(list_item->chk_status != (int)(val+0.5))
1707         {
1708                 list_item->chk_status = (int)(val+0.5);
1709                 sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
1710                 SETTING_TRACE_DEBUG("ringtone volume is %d, %f", list_item->chk_status, val);
1711
1712                 appcore_measure_start();
1713
1714                 if(list_item->chk_status == 0)
1715                 {
1716                         /* change to Vibration mode */
1717                         vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
1718                         vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
1719                 }
1720                 else
1721                 {
1722                         if(!ad->sound_on)
1723                         {
1724                                 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
1725                                 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
1726                         }
1727                 }
1728                 setting_profile_update_slider_icon(list_item, SND_SLIDER_CALL);
1729                 SETTING_TRACE_DEBUG("[TIME] change sound mode : %d msec ", appcore_measure_time());
1730         }
1731
1732         setting_profile_create_warning_popup_during_call(ad);
1733         if(ad->no_play_popup)
1734                 return;
1735
1736         if(ad->play_ringtone_idler)
1737         {
1738                 ecore_idler_del(ad->play_ringtone_idler);
1739                 ad->play_ringtone_idler = NULL;
1740         }
1741         ad->play_ringtone_idler = ecore_idler_add(__play_ringtone_sound_idle_cb, list_item);
1742
1743         //SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
1744 }
1745
1746 static void
1747 setting_profile_sound_main_noti_sound_slider_value_change_cb(void *data,
1748                                                              Evas_Object *obj,
1749                                                              void *event_info)
1750 {
1751         /* error check */
1752         ret_if(data == NULL);
1753
1754         double val = elm_slider_value_get(obj);
1755
1756         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1757         SettingProfileUG *ad = list_item->userdata;
1758         //SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
1759
1760         if(list_item->chk_status != (int)(val+0.5))
1761         {
1762                 list_item->chk_status = (int)(val+0.5);
1763                 sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, list_item->chk_status);
1764                 SETTING_TRACE_DEBUG("notification volume is %d, %f", list_item->chk_status, val);
1765
1766                 setting_profile_update_slider_icon(list_item, SND_SLIDER_NOTI);
1767         }
1768
1769         setting_profile_create_warning_popup_during_call(ad);
1770         if(ad->no_play_popup)
1771                 return;
1772
1773         if(ad->mp_noti == NULL)
1774         {
1775                 setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_NOTIFICATION);
1776                 if(list_item->chk_status > 0)
1777                 {
1778                         char    *pa_tone_path = NULL;
1779                         pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
1780                         if(pa_tone_path == NULL)
1781                         {
1782                                 pa_tone_path = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
1783
1784                                 if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, pa_tone_path) < 0) {
1785                                         FREE(pa_tone_path);
1786                                         return;
1787                                 }
1788                         }
1789                         setting_profile_play_sound_origin(&(ad->mp_noti), ad, NULL,
1790                                                                                                 pa_tone_path,
1791                                                                                                 (float)list_item->chk_status,
1792                                                                                                 SOUND_TYPE_NOTIFICATION);
1793                 }
1794         }
1795         else
1796         {
1797                 player_state_e state;
1798                 player_get_state(*(ad->mp_noti), &state);
1799                 SETTING_TRACE("noti player status : %d", state);
1800                 if(state == PLAYER_STATE_PAUSED)
1801                 {
1802                         player_start(*(ad->mp_noti));
1803                 }
1804         }
1805         //SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
1806 }
1807
1808
1809 #define MAX_SAFETY_VOLUME_LEVEL 10
1810 static void
1811 setting_profile_sound_main_media_sound_slider_value_change_cb(void *data,
1812                                                               Evas_Object *obj,
1813                                                               void *event_info)
1814 {
1815         /* error check */
1816         ret_if(data == NULL);
1817         static bool safety_flag = FALSE;
1818
1819         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1820         SettingProfileUG *ad = list_item->userdata;
1821         //SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
1822
1823         double val = elm_slider_value_get(obj);
1824         int value = (int)(val+0.5);
1825         if(list_item->chk_status != value)
1826         {
1827                 if(safety_flag && (value > MAX_SAFETY_VOLUME_LEVEL))
1828                         return;
1829
1830                 list_item->chk_status = value;
1831                 //int ret = sound_manager_set_volume_with_safety(SOUND_TYPE_MEDIA, value);
1832                 int ret = sound_manager_set_volume(SOUND_TYPE_MEDIA, value);
1833                 SETTING_TRACE_DEBUG("ret : 0x%.8x", ret);
1834 #if 0
1835                 if(ret == SOUND_MANAGER_ERROR_NO_OPERATION
1836                         || ret == SOUND_MANAGER_ERROR_INTERNAL)
1837                 {
1838                         SETTING_TRACE_DEBUG("didn't set safety volume");
1839                         if(value > MAX_SAFETY_VOLUME_LEVEL)
1840                         {
1841                                 ad->data_media_volume->chk_status = MAX_SAFETY_VOLUME_LEVEL;
1842                                 elm_slider_value_set(obj, list_item->chk_status);
1843                                 safety_flag = TRUE;
1844                                 return;
1845                         }
1846                 }
1847 #endif
1848                 safety_flag = FALSE;
1849
1850                 SETTING_TRACE_DEBUG("media volume is %d, %f", list_item->chk_status, val);
1851         }
1852
1853         setting_profile_create_warning_popup_during_call(ad);
1854         if(ad->no_play_popup)
1855                 return;
1856
1857         if(ad->mp_media == NULL)
1858         {
1859                 setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_MEDIA);
1860                 if(list_item->chk_status > 0)
1861                 {
1862                         char    *pa_tone_path = NULL;
1863                         if(isEmulBin())
1864                                 pa_tone_path = (char*)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
1865                         else
1866                                 pa_tone_path = (char*)strdup(SETTING_DEFAULT_MEDIA_TONE);
1867
1868                         sound_type_e type;
1869                         sound_manager_get_current_sound_type(&type);
1870                         if(type != SOUND_TYPE_MEDIA)
1871                                 setting_profile_play_sound_origin(&(ad->mp_media), ad, NULL,
1872                                                                                                         pa_tone_path,
1873                                                                                                         (float)list_item->chk_status,
1874                                                                                                         SOUND_TYPE_MEDIA);
1875                         FREE(pa_tone_path);
1876                 }
1877         }
1878         else
1879         {
1880                 player_state_e state;
1881                 player_get_state(*(ad->mp_media), &state);
1882                 SETTING_TRACE("ringtone player status : %d", state);
1883                 if(state == PLAYER_STATE_PAUSED)
1884                 {
1885                         player_start(*(ad->mp_media));
1886                 }
1887         }
1888         //SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
1889 }
1890
1891 static void
1892 settings_profile_sound_main_sys_sound_slider_value_change_cb(void *data,
1893                                                              Evas_Object *obj,
1894                                                              void *event_info)
1895 {
1896         /* error check */
1897         ret_if(data == NULL);
1898
1899
1900         //---------------------------------------------
1901         const char *sub_type = NULL;
1902         sub_type = elm_object_widget_type_get(obj);
1903         SETTING_TRACE(">>>> slider type :%s", sub_type);
1904         //---------------------------------------------
1905
1906         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1907         SettingProfileUG *ad = list_item->userdata;
1908         //SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
1909
1910         if (!ad || !ad->data_touch_volume || !ad->data_touch_volume->eo_check)
1911         {
1912                 SETTING_TRACE_ERROR("!ad || !ad->data_touch_volume || !ad->data_touch_volume->eo_check");
1913                 return;
1914         }
1915
1916         setting_profile_close_all_mm_players(ad);
1917
1918         //Get the current real value of slider
1919         double val = elm_slider_value_get(obj);
1920         int value = (int)(val+0.5);
1921         sound_manager_set_volume(SOUND_TYPE_SYSTEM, value);
1922         SETTING_TRACE_DEBUG("system volume is %d, %f", value, val);
1923
1924         setting_profile_create_warning_popup_during_call(ad);
1925         if(ad->no_play_popup)
1926                 return;
1927
1928         if(list_item->chk_status != value)
1929         {
1930                 if(feedback_initialize() == FEEDBACK_ERROR_NONE)
1931                 {
1932                         feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
1933                         feedback_deinitialize();
1934                 }
1935                 list_item->chk_status = value;
1936                 setting_profile_update_slider_icon(list_item, SND_SLIDER_SYSTEM);
1937         }
1938         //SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
1939 }
1940
1941 static void
1942 setting_profile_sound_main_call_vib_sound_slider_value_change_cb(void *data,
1943                                                             Evas_Object *obj,
1944                                                             void *event_info)
1945 {
1946         /* error check */
1947         ret_if(data == NULL);
1948
1949         static int priv_val_int = 0;
1950         double val = elm_slider_value_get(obj);
1951         SETTING_TRACE_DEBUG("val = %f", val);
1952         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
1953         SettingProfileUG *ad = list_item->userdata;
1954         SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
1955
1956         int slider_value;
1957         int err;
1958
1959         slider_value = (int)(val+0.5);  /*  to sync displayed value on slider */
1960         list_item->chk_status = slider_value;
1961         if (slider_value != priv_val_int) {
1962                 setting_profile_close_all_mm_players(ad);
1963                 priv_val_int = slider_value;
1964                 vconf_set_int(VCONFKEY_SETAPPL_CALL_VIBRATION_LEVEL_INT, slider_value);
1965                 if(slider_value != 0)
1966                 {
1967                         SETTING_TRACE_DEBUG("play_value %d", slider_value);
1968                         char *call_vib_pattern = vconf_get_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR);
1969                         if(!call_vib_pattern)
1970                                 call_vib_pattern = (char*)strdup(SETTING_DEFAULT_CALL_PREVIEW_VIB);
1971
1972                         err = haptic_vibrate_file_with_detail(ad->hnd_hpt, call_vib_pattern,
1973                                                                                                         1, slider_value * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
1974                         if(err != 0)
1975                                 SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
1976
1977                         FREE(call_vib_pattern);
1978                 }
1979                 else
1980                 {
1981                         if (ad->hnd_hpt && haptic_stop_all_effects(ad->hnd_hpt) != 0) {
1982                                 SETTING_TRACE("ERROR haptic_stop_all_effects");
1983                         }
1984                 }
1985
1986                 setting_profile_update_slider_icon(list_item, SND_SLIDER_CALL_VIB);
1987         }
1988         SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
1989 }
1990
1991 static void
1992 setting_profile_sound_main_vib_sound_slider_value_change_cb(void *data,
1993                                                             Evas_Object *obj,
1994                                                             void *event_info)
1995 {
1996         /* error check */
1997         ret_if(data == NULL);
1998
1999         static int priv_val_int = 0;
2000         double val = elm_slider_value_get(obj);
2001         SETTING_TRACE_DEBUG("val = %f", val);
2002         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
2003         SettingProfileUG *ad = list_item->userdata;
2004         SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
2005
2006         int slider_value;
2007         int err;
2008
2009         slider_value = (int)(val+0.5);  /*  to sync displayed value on slider */
2010         list_item->chk_status = slider_value;
2011         if (slider_value != priv_val_int) {
2012                 setting_profile_close_all_mm_players(ad);
2013                 priv_val_int = slider_value;
2014                 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, slider_value);
2015                 if(slider_value != 0)
2016                 {
2017                         SETTING_TRACE_DEBUG("play_value %d", slider_value);
2018                         err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_NOTI_PREVIEW_VIB,
2019                                                                                                         1, slider_value * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
2020                         if(err != 0)
2021                                 SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
2022                 }
2023
2024                 setting_profile_update_slider_icon(list_item, SND_SLIDER_NOTI_VIB);
2025         }
2026         SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
2027 }
2028
2029 static void
2030 setting_profile_sound_main_touchVib_sound_slider_value_change_cb(void *data,
2031                                                                  Evas_Object *
2032                                                                  obj, void
2033                                                                  *event_info)
2034 {
2035         /* error check */
2036         ret_if(data == NULL);
2037
2038         static int priv_val_int = 0;
2039         double val = elm_slider_value_get(obj);
2040         SETTING_TRACE_DEBUG("val = %f", val);
2041         Setting_GenGroupItem_Data *list_item =
2042             (Setting_GenGroupItem_Data *) data;
2043         SettingProfileUG *ad = list_item->userdata;
2044         SWIP_EFFECT_DISABLE(ad->ly_main, ad->ctrl_bar);
2045
2046         int slider_value;
2047         int err;
2048
2049         slider_value = (int)(val+0.5);  /*  to sync displayed value on slider */
2050         list_item->chk_status = slider_value;
2051         if (slider_value != priv_val_int) {
2052                 setting_profile_close_all_mm_players(ad);
2053                 priv_val_int = slider_value;
2054                 vconf_set_int (VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, slider_value);
2055                 if(slider_value != 0)
2056                 {
2057                         SETTING_TRACE_DEBUG("play_value %d", slider_value);
2058                         err = haptic_vibrate_file_with_detail(ad->hnd_hpt, SETTING_DEFAULT_HAPTIC_PREVIEW_VIB,
2059                                                                                                         1, slider_value * SETTING_VIB_FEEDBACK_RATE, HAPTIC_PRIORITY_MIN, NULL);
2060                         if(err != 0)
2061                                 SETTING_TRACE_DEBUG("haptic_vibrate_file_with_detail() failed");
2062                 }
2063
2064                 setting_profile_update_slider_icon(list_item, SND_SLIDER_SYSTEM_VIB);
2065         }
2066         SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar);
2067 }