4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
23 #include <mm_sound_private.h>
24 #include <app_manager.h>
25 #include <setting-profile-sound-main.h>
26 #include <setting-profile.h>
27 #include <setting-common-general-func.h>
29 #include <eventsystem.h>
30 #include <bundle_internal.h>
31 #include <notification_setting.h>
32 #include <notification_setting_internal.h>
35 #define SETTING_SOUND_VOL_MAX 15
36 #define SETTING_DEFAULT_RINGTONE_VOL_INT 11
37 #define SETTING_DEFAULT_NOTI_VOL_INT 11
38 #define SETTING_DEFAULT_MEDIA_VOL_INT 9
39 #define SETTING_DEFAULT_SYSTEM_VOL_INT 9
41 static int setting_sound_main_create(void *cb);
42 static int setting_sound_main_destroy(void *cb);
43 static int setting_sound_main_update(void *cb);
44 static int setting_sound_main_cleanup(void *cb);
46 setting_view setting_view_sound_main = {
47 .create = setting_sound_main_create,
48 .destroy = setting_sound_main_destroy,
49 .update = setting_sound_main_update,
50 .cleanup = setting_sound_main_cleanup,
53 #define ADD_GENLIST(genlist, parent) \
55 genlist = elm_genlist_add(parent);\
56 retvm_if(genlist == NULL, NULL, "Cannot set genlist object as contento of layout");\
57 elm_genlist_realization_mode_set(genlist, EINA_TRUE);\
58 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);\
59 elm_object_style_set(genlist, "dialogue");\
60 elm_genlist_clear(genlist);\
61 evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);\
62 elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);\
66 #define ADD_TOGGLE_MENU2(item, genlist, item_style, keystr, value, data) \
68 item = setting_create_Gendial_field_def(genlist, &(item_style), \
69 setting_sound_main_mouse_up_Gendial_list_cb, \
70 data, SWALLOW_Type_1ICON_1RADIO, NULL, \
75 item->userdata = data; \
77 SETTING_TRACE_ERROR("%s item is NULL", keystr); \
81 /* keystr, multiline, toggle */
82 #define ADD_TOGGLE_MENU(item, genlist, item_style, keystr, substr, value, data) \
84 item = setting_create_Gendial_field_def(genlist, &(item_style), \
85 setting_sound_main_mouse_up_Gendial_list_cb, \
86 data, SWALLOW_Type_1ICON_1RADIO, NULL, \
91 item->userdata = data;\
93 SETTING_TRACE_ERROR("%s item is NULL", keystr);\
95 ADD_GL_HELP_NO_SEP(genlist, substr);\
98 #define ADD_SOUND_SLIDER(item_data, genlist, item_style, l_img, r_img, value, keystr, data, sld_cb, sld_max, start_cb, stop_cb) \
100 item_data = setting_create_Gendial_field_def(genlist, &(item_style), NULL,\
102 SWALLOW_Type_LAYOUT_SLIDER,\
109 item_data->win_main = data->win_main_layout;\
110 item_data->evas = data->evas;\
111 item_data->isIndicatorVisible = FALSE;\
112 item_data->slider_min = 0;\
113 item_data->slider_max = sld_max;\
114 item_data->userdata = data;\
115 item_data->start_change_cb = start_cb;\
116 item_data->stop_change_cb = stop_cb;\
117 elm_genlist_item_select_mode_set(item_data->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\
119 SETTING_TRACE_ERROR("%s item is NULL", keystr);\
123 /* ***************************************************
127 ***************************************************/
128 static Eina_Bool __play_ringtone_sound_idle_cb(void *data)
131 retv_if(!data, EINA_FALSE);
133 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
134 SettingProfileUG *ad = list_item->userdata;
136 if (list_item->eo_check) {
138 current = elm_slider_value_get(list_item->eo_check);
139 list_item->chk_status = (int)(current + 0.5);
144 * On the volume popup,
145 * 1) if user controls the slider, don't play any sounds£¬just change volume.
146 * 2) if user controls the HW volume key for ringtone sound, the beep sound is supported
149 * 1) if user controls the slider, change volume & play sound
150 * 2) if user controls the HW volume key, do nothing(DO NOT change volume,DO NoT play sound)
152 if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
156 if (ad->mp_ringtone == NULL) {
157 setting_sound_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
158 char *pa_tone_path = NULL;
159 pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
160 if (pa_tone_path == NULL) {
162 pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
164 pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
166 if (vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
171 if (list_item->chk_status > 0) {
172 setting_sound_play_sound_origin(&(ad->mp_ringtone), ad, NULL,
174 (float)list_item->chk_status,
175 SOUND_TYPE_RINGTONE);
178 player_state_e state;
179 player_get_state(*(ad->mp_ringtone), &state);
180 SETTING_TRACE("ringtone player status : %d", state);
181 if (state == PLAYER_STATE_PAUSED) {
182 player_start(*(ad->mp_ringtone));
183 } else if (state == PLAYER_STATE_PLAYING) {
184 /*bool is_muted = 0; */
185 /*player_is_muted(*(ad->mp_ringtone), &is_muted); */
186 /*SETTING_TRACE("ringtone player is muted : %d", is_muted); */
187 if (/*is_muted &&*/ ad->sound_on)
188 player_set_mute(*(ad->mp_ringtone), 0);
192 ad->play_ringtone_idler = NULL;
197 void __start_change_cb(void *data, Evas_Object *obj, void *event_info)
200 ret_if(data == NULL);
202 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
203 SettingProfileUG *ad = list_item->userdata;
205 setting_sound_create_warning_popup_during_call(ad);
206 if (list_item == ad->data_call_volume) {
207 ad->is_ringtone_slidering = TRUE;
208 setting_sound_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
209 } else if (list_item == ad->data_noti_volume) {
210 setting_sound_close_other_mm_players_but_type(ad, SOUND_TYPE_NOTIFICATION);
211 } else if (list_item == ad->data_media_volume) {
212 setting_sound_close_other_mm_players_but_type(ad, SOUND_TYPE_MEDIA);
213 } else if (list_item == ad->data_touch_volume) {
214 setting_sound_close_all_mm_players(ad);
218 static void __call_slider_change_cb(void *data, Evas_Object *obj, void *event_info)
223 ret_if(data == NULL);
225 double val = elm_slider_value_get(obj);
227 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
228 SettingProfileUG *ad = list_item->userdata;
230 ad->is_ringtone_slidering = TRUE;
232 if (list_item->chk_status != (int)(val + 0.5)) {
233 list_item->chk_status = (int)(val + 0.5);
234 sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
235 SETTING_TRACE_DEBUG("ringtone volume is %d, %f", list_item->chk_status, val);
237 #if FUNCTION_SYSTEM_SETTING
238 if (list_item->chk_status == 0) {
239 /* change to Vibration mode */
240 // call system_setting
241 system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, false);
242 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
243 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
247 /* change to Sound mode */
248 // call system_setting
249 system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, false);
250 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
251 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
255 if (list_item->chk_status == 0) {
256 /* change to Vibration mode */
257 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
258 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
259 setting_set_event_system(SYS_EVENT_SILENT_MODE, EVT_KEY_SILENT_MODE, EVT_VAL_SILENTMODE_OFF);
260 /*insert log for vibrate mode on state */
263 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
264 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
265 setting_set_event_system(SYS_EVENT_SILENT_MODE, EVT_KEY_SILENT_MODE, EVT_VAL_SILENTMODE_OFF);
266 /*insert log for sound mode on state */
271 setting_sound_update_slider_icon(list_item, SND_SLIDER_CALL);
273 /*elm_genlist_item_update(list_item->item); */
274 elm_slider_value_set(obj, list_item->chk_status);
275 SETTING_TRACE_DEBUG("[TIME] change sound mode : %d msec ", appcore_measure_time());
278 setting_sound_create_warning_popup_during_call(ad);
279 if (ad->calling_popup)
282 if (ad->play_ringtone_idler) {
283 ecore_idler_del(ad->play_ringtone_idler);
284 ad->play_ringtone_idler = NULL;
286 ad->play_ringtone_idler = ecore_idler_add(__play_ringtone_sound_idle_cb, list_item);
288 /*SWIP_EFFECT_ENABLE(ad->ly_main, ad->ctrl_bar); */
289 SETTING_TRACE("list_item->chk_status:%d", list_item->chk_status);
292 static void __noti_slider_change_cb(void *data, Evas_Object *obj, void *event_info)
297 ret_if(data == NULL);
299 double val = elm_slider_value_get(obj);
301 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
302 SettingProfileUG *ad = list_item->userdata;
303 sound_type_e sound_type = SOUND_TYPE_NOTIFICATION;
305 if (list_item->chk_status != (int)(val + 0.5)) {
306 list_item->chk_status = (int)(val + 0.5);
307 setting_sound_update_slider_icon(list_item, SND_SLIDER_NOTI);
308 sound_manager_set_volume(sound_type, list_item->chk_status);
309 SETTING_TRACE_DEBUG("notification volume is %d, %f", list_item->chk_status, val);
312 setting_sound_create_warning_popup_during_call(ad);
313 if (ad->calling_popup)
318 * On the volume popup,
319 * 1) if user controls the slider, don't play any sounds£¬just change volume.
320 * 2) if user controls the HW volume key for ringtone sound, the beep sound is supported
323 * 1) if user controls the slider, change volume & play sound
324 * 2) if user controls the HW volume key, do nothing(DO NOT change volume,DO NoT play sound)
326 if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
330 if (ad->mp_noti == NULL) {
331 setting_sound_close_other_mm_players_but_type(ad, sound_type);
332 if (list_item->chk_status > 0) {
333 char *pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
334 if (pa_tone_path == NULL) {
335 pa_tone_path = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
336 if (vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, pa_tone_path) < 0) {
341 setting_sound_play_sound_origin(&(ad->mp_noti), ad, NULL,
342 pa_tone_path, (float)list_item->chk_status,
347 player_state_e state;
348 player_get_state(*(ad->mp_noti), &state);
349 SETTING_TRACE("noti player status : %d", state);
350 if (state == PLAYER_STATE_PAUSED) {
351 player_start(*(ad->mp_noti));
357 static void __media_slider_change_cb(void *data, Evas_Object *obj, void *event_info)
362 ret_if(data == NULL);
363 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
364 SettingProfileUG *ad = list_item->userdata;
365 sound_type_e sound_type = SOUND_TYPE_MEDIA;
367 double val = elm_slider_value_get(obj);
368 int value = (int)(val + 0.5);
369 if (list_item->chk_status != value) {
371 list_item->chk_status = value;
372 setting_sound_update_slider_icon(list_item, SND_SLIDER_MEDIA);
373 int ret = sound_manager_set_volume(sound_type, value);
374 SETTING_TRACE_DEBUG("ret : 0x%.8x", ret);
376 SETTING_TRACE_DEBUG("media volume is %d, %f", list_item->chk_status, val);
379 setting_sound_create_warning_popup_during_call(ad);
380 if (ad->calling_popup)
385 * On the volume popup,
386 * 1) if user controls the slider, don't play any sounds£¬just change volume.
387 * 2) if user controls the HW volume key for ringtone sound, the beep sound is supported
390 * 1) if user controls the slider, change volume & play sound
391 * 2) if user controls the HW volume key, do nothing(DO NOT change volume,DO NoT play sound)
393 if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
397 if (ad->mp_media == NULL) {
398 setting_sound_close_other_mm_players_but_type(ad, sound_type);
399 if (list_item->chk_status > 0) {
400 char *pa_tone_path = NULL;
402 pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
404 pa_tone_path = (char *)strdup(SETTING_DEFAULT_MEDIA_TONE);
407 sound_manager_get_current_sound_type(&type);
408 setting_sound_play_sound_origin(&(ad->mp_media), ad, NULL,
410 (float)list_item->chk_status,
415 player_state_e state;
416 player_get_state(*(ad->mp_media), &state);
417 SETTING_TRACE("ringtone player status : %d", state);
418 if (state == PLAYER_STATE_PAUSED) {
419 player_start(*(ad->mp_media));
424 static void __sys_slider_change_cb(void *data, Evas_Object *obj, void *event_info)
427 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
428 SettingProfileUG *ad = list_item->userdata;
430 setting_sound_close_all_mm_players(ad);
432 /*Get the current real value of slider */
433 double val = elm_slider_value_get(obj);
434 int value = (int)(val + 0.5);
435 sound_manager_set_volume(SOUND_TYPE_SYSTEM, value);
436 SETTING_TRACE_DEBUG("system volume is %d, %f", value, val);
438 setting_sound_create_warning_popup_during_call(ad);
439 if (ad->calling_popup)
442 if (list_item->chk_status != value) {
446 * On the volume popup,
447 * 1) if user controls the slider, don't play any sounds£¬just change volume.
448 * 2) if user controls the HW volume key for ringtone sound, the beep sound is supported
451 * 1) if user controls the slider, change volume & play sound
452 * 2) if user controls the HW volume key, do nothing(DO NOT change volume,DO NoT play sound)
454 if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
455 /*Play Tap Sound,then stop at once */
456 if (feedback_initialize() == FEEDBACK_ERROR_NONE) {
457 /* sound_manager_session_set_state_others(SOUND_STATE_PAUSE); */
458 feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
459 feedback_deinitialize();
462 list_item->chk_status = value;
463 setting_sound_update_slider_icon(list_item, SND_SLIDER_SYSTEM);
468 void __stop_change_cb(void *data, Evas_Object *obj, void *event_info)
471 ret_if(data == NULL);
472 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
473 SETTING_TRACE("chk_status : %d, slider : %f", list_item->chk_status, elm_slider_value_get(obj));
474 if (list_item->chk_status == 0) {
475 elm_slider_value_set(obj, 0.0);
476 } else if (list_item->chk_status == 15) {
477 elm_slider_value_set(obj, 15.0);
482 char *setting_do_not_disturb_is_enable(void *data)
484 int err = NOTIFICATION_ERROR_NONE;
487 notification_system_setting_h system_setting = NULL;
489 err = notification_system_setting_load_system_setting(&system_setting);
490 setting_retvm_if(NULL == system_setting || NOTIFICATION_ERROR_NONE != err,
491 SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
492 "notification_system_setting_load_system_Setting failed");
493 err = notification_system_setting_get_do_not_disturb(system_setting, &do_not_disturb);
494 SETTING_TRACE("do_not_disturb: %d", do_not_disturb);
496 if (1 == do_not_disturb){
497 notification_system_setting_free_system_setting(system_setting);
498 return "IDS_ST_BODY_ON";
500 notification_system_setting_free_system_setting(system_setting);
501 return "IDS_ST_BODY_ALERTTYPE_OFF";
506 __sound_chk_cb(void *data, Evas_Object *obj,
511 ret_if(data == NULL);
512 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
513 SettingProfileUG *ad = list_item->userdata;
516 setting_sound_close_all_mm_players(ad);
517 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
519 setting_update_gl_item_chk_status(list_item, !list_item->chk_status);
520 setting_sound_main_mouse_up_Gendial_list_cb(ad, NULL, list_item->item);
523 #define INIT_PATH "/opt/usr/share/settings/Vibrations/"
524 static void __get_lite_main_list(void *data)
528 SettingProfileUG *ad = (SettingProfileUG *)data;
531 char *sub_desc = NULL;
532 char *left_icon = NULL;
536 char *pa_ringtone = NULL;
538 Evas_Object *genlist = ad->gl_lite_main;
539 elm_genlist_block_count_set(genlist, 3);
540 elm_genlist_homogeneous_set(genlist, 1);
542 if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_value) < 0)
543 sound_value = TRUE; /* default value of sound : on */
545 Elm_Genlist_Item_Class *itc_slider = NULL;
548 //----------------------------------------------------------------------------
549 //----------------------------------------------------------------------------
550 //----------------------------------------------------------------------------
551 itc_slider = &(ad->itc_layout_1icon);
553 if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
554 itc_slider = &(ad->itc_layout);
555 //----------------------------------------------------------------------------
556 //----------------------------------------------------------------------------
557 //----------------------------------------------------------------------------
560 SETTING_TRACE(" ???????????? ad->viewtype : %s ", ad->viewtype);
562 if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
564 int sd_status = VCONFKEY_SYSMAN_MMC_REMOVED;
565 if (vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &sd_status) != 0) {
566 SETTING_TRACE_ERROR("fail to get mmc status");
568 char *sdcard_filepath = vconf_get_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR);
569 if (0 == safeStrNCmp(sdcard_filepath, INIT_PATH, safeStrLen(INIT_PATH))) {
570 vconf_set_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR, "NONE");
571 sdcard_filepath = vconf_get_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR);
573 if (safeStrCmp(sdcard_filepath, "NONE") != 0 && sd_status == VCONFKEY_SYSMAN_MMC_MOUNTED) {
574 /*check sdcard filepath*/
576 pa_ringtone = strdup(sdcard_filepath);
577 FREE(sdcard_filepath);
578 vconf_set_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR, "NONE");
580 pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
582 if (setting_sound_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL) {
584 pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
586 pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
589 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_ringtone);
591 SETTING_TRACE_DEBUG("failed to set vconf");
593 sub_desc = setting_media_basename(pa_ringtone);
594 ad->data_call_alert_tone =
595 setting_create_Gendial_field_def(genlist, &itc_2text_2,
596 setting_sound_main_mouse_up_Gendial_list_cb,
597 ad, SWALLOW_Type_INVALID, NULL,
598 NULL, 0, "IDS_ST_MBODY_RINGTONE",
600 if (ad->data_call_alert_tone) {
601 __BACK_POINTER_SET(ad->data_call_alert_tone);
602 ad->data_call_alert_tone->userdata = ad;
610 /* 2. call volumn. */
611 if (sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value) < 0)
612 mm_value = SETTING_DEFAULT_RINGTONE_VOL_INT;
613 if (sound_value == FALSE)
616 left_icon = setting_sound_get_slider_icon(SND_SLIDER_CALL, mm_value);
617 ADD_SOUND_SLIDER(ad->data_call_volume, genlist,
620 mm_value, "IDS_ST_MBODY_RINGTONE", ad,/*"IDS_ST_HEADER_RINGTONES" is for volume App,in Setting > Sound,it has no title */
621 __call_slider_change_cb,
622 SETTING_SOUND_VOL_MAX,
623 __start_change_cb, __stop_change_cb);
624 __BACK_POINTER_SET(ad->data_call_volume);
626 /* 3. Notification alert */
627 if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
628 pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
629 if (setting_sound_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL) {
630 pa_ringtone = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
631 vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE);
633 SETTING_TRACE_DEBUG("failed to set vconf");
635 sub_desc = setting_media_basename(pa_ringtone);
636 ad->data_msg_alert_tone =
637 setting_create_Gendial_field_def(genlist, &itc_2text_2,
638 setting_sound_main_mouse_up_Gendial_list_cb,
639 ad, SWALLOW_Type_INVALID, NULL,
641 "IDS_ST_BODY_NOTIFICATION"/*SETTING_SOUND_TEXT_MSG_ALERT*/,
643 if (ad->data_msg_alert_tone) {
644 __BACK_POINTER_SET(ad->data_msg_alert_tone);
645 ad->data_msg_alert_tone->userdata = ad;
652 if (sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value) < 0)
653 mm_value = SETTING_DEFAULT_NOTI_VOL_INT;
654 if (sound_value == FALSE)
657 left_icon = setting_sound_get_slider_icon(SND_SLIDER_NOTI, mm_value);
658 ADD_SOUND_SLIDER(ad->data_noti_volume, genlist,
661 mm_value, "IDS_ST_BODY_NOTIFICATION", ad,
662 __noti_slider_change_cb,
663 SETTING_SOUND_VOL_MAX,
664 __start_change_cb, __stop_change_cb);
665 __BACK_POINTER_SET(ad->data_noti_volume);
668 if (sound_manager_get_volume(SOUND_TYPE_MEDIA, &mm_value) < 0)
669 mm_value = SETTING_DEFAULT_MEDIA_VOL_INT;
671 left_icon = setting_sound_get_slider_icon(SND_SLIDER_MEDIA, mm_value);
672 ADD_SOUND_SLIDER(ad->data_media_volume, genlist, ad->itc_layout,
673 left_icon, NULL/*IMG_SLIDER_BTN_VOLUME02*/,
674 mm_value, "IDS_ST_BODY_MEDIA", ad,
675 __media_slider_change_cb,
676 SETTING_SOUND_VOL_MAX,
677 __start_change_cb, __stop_change_cb);
679 __BACK_POINTER_SET(ad->data_media_volume);
681 /* 6.system volume */
682 if (sound_manager_get_volume(SOUND_TYPE_SYSTEM, &mm_value) < 0) {
683 SETTING_TRACE_DEBUG("Fail to get volume");
684 mm_value = SETTING_DEFAULT_SYSTEM_VOL_INT;
686 if (sound_value == FALSE)
689 left_icon = setting_sound_get_slider_icon(SND_SLIDER_SYSTEM, mm_value);
690 ADD_SOUND_SLIDER(ad->data_touch_volume, genlist, ad->itc_layout,
691 left_icon, NULL/*IMG_SLIDER_BTN_SYSTEM_VOLUME*/,
692 mm_value, "IDS_ST_BODY_SYSTEM", ad,
693 __sys_slider_change_cb,
694 SETTING_SOUND_VOL_MAX,
695 __start_change_cb, __stop_change_cb);
697 __BACK_POINTER_SET(ad->data_touch_volume);
699 if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
700 /* 7. Vibrate when ringing */
701 if (vconf_get_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, &vconf_value) < 0) {
702 vconf_value = TRUE; /* default value of vibrate sound : on */
704 ADD_TOGGLE_MENU2(ad->data_sound_when_ring, genlist, itc_1text_1icon, "IDS_ST_BODY_VIBRATE_WHEN_RINGING", vconf_value, ad);
705 __BACK_POINTER_SET(ad->data_sound_when_ring);
706 setting_genlist_item_disabled_set(ad->data_sound_when_ring, !sound_value);
709 setting_create_Gendial_field_def(genlist, &itc_1text,
710 setting_sound_main_mouse_up_Gendial_list_cb,
711 data, SWALLOW_Type_INVALID, NULL,
713 "IDS_ST_HEADER_FEEDBACK", NULL, NULL);
716 setting_create_Gendial_field_titleItem(genlist, &itc_group_item, _("IDS_ST_BODY_NOTIFICATIONS"), NULL);
717 /* 9. Notifications - Do not disturb */
718 char *sub_desc = setting_do_not_disturb_is_enable(data);
719 ad->data_do_not_disturb = setting_create_Gendial_field_def(genlist, &itc_2text_2,
720 setting_sound_main_mouse_up_Gendial_list_cb,
721 data, SWALLOW_Type_INVALID, NULL,
723 "IDS_ST_MBODY_DO_NOT_DISTURB_ABB", sub_desc, NULL);
724 /* 10. Notifications - App notifications */
725 setting_create_Gendial_field_def(genlist, &itc_2text_2,
726 setting_sound_main_mouse_up_Gendial_list_cb,
727 data, SWALLOW_Type_INVALID, NULL,
729 "IDS_ST_MBODY_APP_NOTIFICATIONS",
730 "IDS_ST_BODY_ALLOW_OR_BLOCK_NOTIFICATIONS_FROM_INDIVIDUAL_APPLICATIONS", NULL);
732 ad->gl_lite_main = genlist;
736 setting_genlist_item_disabled_set(ad->data_noti_volume, 1);
737 setting_genlist_item_disabled_set(ad->data_touch_volume, 1);
741 static void __volume_popup_del_cb(void *data, Evas_Object *obj, void *event_info)
744 /*SETTING_TRACE(" REMOVE THE POPUP OBJECT BY THIS FUNCTION "); */
748 void vibration_state_event_handler(const char *event_name, bundle *data, void *user_data)
750 const char *vibration_state_set = NULL;
751 SETTING_TRACE("vibration state set event (%s) received", event_name);
753 vibration_state_set = bundle_get_val(data, EVT_KEY_VIBRATION_STATE);
754 SETTING_TRACE("vibration_state_set(%s)", vibration_state_set);
757 int vibration_state_reg_id;
760 setting_soudn_main_click_softkey_back_cb(void *data, Evas_Object *obj,
765 setting_retvm_if(data == NULL, EINA_FALSE,
766 "[Setting > Display] Data parameter is NULL");
768 SettingProfileUG *ad = (SettingProfileUG *) data;
770 /* Send destroy request */
771 ug_destroy_me(ad->ug);
778 static int setting_sound_main_create(void *cb)
781 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
782 SettingProfileUG *ad = (SettingProfileUG *) cb;
785 /* 1.Grab Hard Key */
786 __setting_sound_ug_key_grab(ad);
787 SETTING_TRACE("viewtype: %s", ad->viewtype);
788 if (!safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
789 ad->ly_main = setting_create_popup_with_list(&ad->gl_lite_main, ad, ad->win_get,
790 "IDS_ST_BODY_VOLUME", __volume_popup_del_cb,
791 0 , false, false, 1, "IDS_ST_SK3_DONE");
792 __get_lite_main_list(ad);
794 ad->ly_main = setting_create_win_layout(ad->win_get);
795 ad->navi_bar = setting_create_navi_bar(ad->ly_main);
797 ADD_GENLIST(ad->gl_lite_main, ad->navi_bar);
799 __get_lite_main_list(ad);
801 Evas_Object *lbtn = setting_create_button(ad->navi_bar, _(NULL),
802 NAVI_BACK_ARROW_BUTTON_STYLE,
803 setting_soudn_main_click_softkey_back_cb, ad);
806 Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->navi_bar, KeyStr_Sounds, lbtn, NULL, ad->gl_lite_main, NULL);
807 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)setting_sound_main_click_softkey_cancel_cb, ad);
808 //elm_object_item_part_content_set(navi_it, "title_left_btn", lbtn);
809 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
811 setting_view_sound_main.is_create = TRUE;
814 if (ES_R_OK != eventsystem_register_event(SYS_EVENT_VIBRATION_STATE,
815 &vibration_state_reg_id,
816 (eventsystem_handler)vibration_state_event_handler, cb)) {
817 SETTING_TRACE_ERROR("error");
820 return SETTING_RETURN_SUCCESS;
823 static int setting_sound_main_destroy(void *cb)
826 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
828 retv_if(!setting_view_sound_main.is_create, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
830 SettingProfileUG *ad = (SettingProfileUG *) cb;
833 __setting_sound_ug_key_ungrab(ad);
835 if (ad->play_ringtone_idler) {
836 ecore_idler_del(ad->play_ringtone_idler);
837 ad->play_ringtone_idler = NULL;
840 if (ad->ly_main != NULL) {
841 evas_object_del(ad->ly_main);
843 setting_view_sound_main.is_create = FALSE;
845 if (ES_R_OK != eventsystem_unregister_event(vibration_state_reg_id)) {
846 SETTING_TRACE_ERROR("error");
848 return SETTING_RETURN_SUCCESS;
851 static int setting_sound_main_update(void *cb)
854 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
856 SettingProfileUG *ad = (SettingProfileUG *) cb;
858 if (ad->ly_main != NULL) {
859 evas_object_show(ad->ly_main);
861 return SETTING_RETURN_SUCCESS;
864 static int setting_sound_main_cleanup(void *cb)
867 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
869 SettingProfileUG *ad = (SettingProfileUG *) cb;
871 if (ad->ly_main != NULL) {
872 evas_object_hide(ad->ly_main);
875 return SETTING_RETURN_SUCCESS;
878 /* ***************************************************
882 ***************************************************/
884 /* ***************************************************
888 ***************************************************/
890 static Eina_Bool setting_sound_main_click_softkey_cancel_cb(void *data, Elm_Object_Item *it)
893 retv_if(data == NULL, EINA_FALSE);
895 SettingProfileUG *ad = (SettingProfileUG *) data;
899 setting_sound_close_all_mm_players(ad);
901 /* Send destroy request */
902 ug_destroy_me(ad->ug);
907 static void setting_sound_main_destroy_myfile_ug_cb(ui_gadget_h ug, void *priv)
910 ret_if(priv == NULL);
911 SettingProfileUG *ad = (SettingProfileUG *) priv;
913 int sound_value = 0, volume = 0;
915 __setting_sound_ug_key_grab(ad);
918 setting_ug_destroy(ug);
919 ad->ug_loading = NULL;
922 if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_value) < 0)
925 if (sound_value == FALSE)
928 (void)sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
930 if (ad->data_call_volume && ad->data_call_volume->eo_check) {
931 ad->data_call_volume->chk_status = volume;
932 elm_slider_value_set(ad->data_call_volume->eo_check, volume);
935 if (sound_value == FALSE)
938 (void)sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &volume);
940 if (ad->data_noti_volume && ad->data_noti_volume->eo_check) {
941 ad->data_noti_volume->chk_status = volume;
942 elm_slider_value_set(ad->data_noti_volume->eo_check, volume);
945 setting_sound_update_slider_icon(ad->data_call_volume, SND_SLIDER_CALL);
946 setting_sound_update_slider_icon(ad->data_noti_volume, SND_SLIDER_NOTI);
950 setting_sound_main_result_myfile_ug_cb(ui_gadget_h ug,
951 app_control_h result, void *priv)
954 ret_if(priv == NULL);
956 SettingProfileUG *ad = (SettingProfileUG *) priv;
957 char *ringtone_file = NULL;
958 char *ringtone_path = NULL;
960 app_control_get_extra_data(result, "result", &ringtone_path);
964 char *recommend_time = NULL;
965 app_control_get_extra_data(result, "position", &recommend_time);
967 SETTING_TRACE("ringtone_path:%s", ringtone_path);
969 if (ringtone_path != NULL) {
970 ringtone_file = setting_media_basename(ringtone_path);
971 SETTING_TRACE("ringtone_file:%s", ringtone_file);
973 if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_MBODY_RINGTONE")) {
974 if (vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, ringtone_path) == 0) {
975 if (ad->data_call_alert_tone) {
976 ad->data_call_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
978 elm_object_item_data_set(ad->data_call_alert_tone->item, ad->data_call_alert_tone);
979 elm_genlist_item_update(ad->data_call_alert_tone->item);
982 if (recommend_time) {
983 char recommend_info[512] = {0,};
984 snprintf(recommend_info, 512, "%s; %smsec", ringtone_path, recommend_time);
985 SETTING_TRACE_DEBUG("%s", recommend_info);
986 vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_WITH_RECOMMENDATION_TIME_STR, recommend_info);
989 safeStrCmp(ad->ringtone_type, "IDS_ST_BODY_NOTIFICATION")) {
990 if (vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ringtone_path) == 0) {
991 if (ad->data_msg_alert_tone) {
992 ad->data_msg_alert_tone->sub_desc = (char *)g_strdup(ringtone_file);
994 elm_object_item_data_set(ad->data_msg_alert_tone->item, ad->data_msg_alert_tone);
995 elm_genlist_item_update(ad->data_msg_alert_tone->item);
1001 FREE(ringtone_path);
1002 FREE(recommend_time);
1003 G_FREE(ringtone_file);
1007 static void setting_sound_main_create_myfile_ug(SettingProfileUG *ad, char *titleID)
1011 if (ad->ug_loading) {
1012 SETTING_TRACE("Myfiles ug is already loaded.");
1016 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1020 cbs->layout_cb = setting_layout_ug_cb;
1021 cbs->result_cb = setting_sound_main_result_myfile_ug_cb;
1022 cbs->destroy_cb = setting_sound_main_destroy_myfile_ug_cb;
1023 cbs->priv = (void *)ad;
1026 if (app_control_create(&svc)) {
1031 const char *pa_cur_ringtone = NULL;
1032 const char *dir_path = NULL;
1033 if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_MBODY_RINGTONE")) {
1034 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
1035 if (pa_cur_ringtone == NULL) {
1037 pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
1039 pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
1041 dir_path = SETTING_PROFILE_SOUND_RINGTONES_PATH;
1042 } else if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_BODY_NOTIFICATION")) {
1043 pa_cur_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
1044 if (pa_cur_ringtone == NULL)
1045 pa_cur_ringtone = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
1046 dir_path = SETTING_PROFILE_SOUND_ALERTS_PATH;
1048 SETTING_TRACE("pa_cur_ringtone:\t%s", pa_cur_ringtone);
1049 SETTING_TRACE("dir_path:\t%s", dir_path);
1051 app_control_add_extra_data(svc, "title", titleID);
1052 app_control_add_extra_data(svc, "domain", SETTING_PACKAGE);
1053 app_control_add_extra_data(svc, "path", dir_path);
1054 app_control_add_extra_data(svc, "select_type", "SINGLE_FILE");
1055 app_control_add_extra_data(svc, "file_type", "SOUND");
1056 app_control_add_extra_data(svc, "drm_type", "DRM_ALL");
1057 app_control_add_extra_data(svc, "silent", "silent show"); /* Show Silent item in the list */
1058 if (safeStrCmp(pa_cur_ringtone, "silent") == 0)
1059 app_control_add_extra_data(svc, "marked_mode", "silent"); /* Set radio on Silent item */
1061 app_control_add_extra_data(svc, "marked_mode", pa_cur_ringtone);
1063 elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
1064 SETTING_TRACE("ad->ug->layout:%p", (void *)ug_get_layout(ad->ug));
1065 ad->ug_loading = setting_ug_create(ad->ug, "setting-ringtone-efl", UG_MODE_FULLVIEW, svc, cbs);
1066 if (NULL == ad->ug_loading) { /* error handling */
1067 SETTING_TRACE_ERROR("NULL == ad->ug_loading");
1070 app_control_destroy(svc);
1073 /** @todo verify it's valid */
1074 if (pa_cur_ringtone) {
1075 free((void *)pa_cur_ringtone);
1076 pa_cur_ringtone = NULL;
1079 /*__setting_sound_ug_key_ungrab(ad); */
1080 /*__setting_sound_ug_menu_key_grab(ad); */
1084 static Eina_Bool __feedback_back_cb(void *data, Elm_Object_Item *it)
1086 SETTING_TRACE_BEGIN;
1088 retv_if(data == NULL, EINA_TRUE);
1089 SettingProfileUG *ad = (SettingProfileUG *) data;
1090 /*setting_view_change(&setting_view_feedback_main, &setting_view_sound_main, ad); */
1091 elm_naviframe_item_pop(ad->navi_bar);
1096 void setting_sound_notifications_layout_ug_cb(ui_gadget_h ug,
1100 SETTING_TRACE_BEGIN;
1106 base = (Evas_Object *) ug_get_layout(ug);
1111 case UG_MODE_FULLVIEW:
1112 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1114 evas_object_show(base);
1122 static void setting_sound_notifications_destroy_ug_cb(ui_gadget_h ug, void *priv)
1124 SETTING_TRACE_BEGIN;
1125 ret_if(priv == NULL);
1126 SettingProfileUG *ad = (SettingProfileUG *) priv;
1128 setting_ug_destroy(ug);
1130 elm_genlist_realized_items_update(ad->gl_lite_main);
1132 /* do not disturb */
1133 if (ad->data_do_not_disturb) {
1134 char *sub_desc = setting_do_not_disturb_is_enable(priv);
1135 ad->data_do_not_disturb->sub_desc = (char *)strdup(sub_desc);
1136 elm_object_item_data_set(ad->data_do_not_disturb->item, ad->data_do_not_disturb);
1137 elm_genlist_item_update(ad->data_do_not_disturb->item);
1142 setting_sound_main_mouse_up_Gendial_list_cb(void *data,
1147 ret_if(data == NULL);
1148 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
1150 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
1151 elm_genlist_item_selected_set(item, 0);
1152 Setting_GenGroupItem_Data *list_item = elm_object_item_data_get(item);
1154 SettingProfileUG *ad = data;
1156 if (SETTING_RETURN_SUCCESS != setting_sound_close_all_mm_players(ad)) {
1157 SETTING_TRACE_ERROR("close player fail.");
1160 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
1161 if (!safeStrCmp("IDS_ST_MBODY_RINGTONE", list_item->keyStr)
1162 || !safeStrCmp("IDS_ST_BODY_NOTIFICATION", list_item->keyStr)) {
1163 ad->ringtone_type = list_item->keyStr;
1164 setting_sound_main_create_myfile_ug(ad, list_item->keyStr);
1165 __setting_sound_ug_key_ungrab(ad);
1166 } else if (!safeStrCmp("IDS_ST_MBODY_DO_NOT_DISTURB_ABB", list_item->keyStr)) {
1167 SettingProfileUG *ad = (SettingProfileUG *) data;
1168 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1169 setting_retm_if(!cbs, "calloc failed");
1170 cbs->layout_cb = setting_sound_notifications_layout_ug_cb;
1171 cbs->result_cb = NULL;
1172 cbs->destroy_cb = setting_sound_notifications_destroy_ug_cb;
1173 cbs->priv = (void *)ad;
1175 elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
1177 SETTING_TRACE("To load ug[%s]", "ug-setting-notification-do-not-disturb-efl");
1178 ug_create(ad->ug, "ug-setting-notification-do-not-disturb-efl", UG_MODE_FULLVIEW, NULL, cbs);
1181 } else if (!safeStrCmp("IDS_ST_MBODY_APP_NOTIFICATIONS", list_item->keyStr)) {
1182 SettingProfileUG *ad = (SettingProfileUG *) data;
1183 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1184 setting_retm_if(!cbs, "calloc failed");
1185 cbs->layout_cb = setting_sound_notifications_layout_ug_cb;
1186 cbs->result_cb = NULL;
1187 cbs->destroy_cb = setting_sound_notifications_destroy_ug_cb;
1188 cbs->priv = (void *)ad;
1190 elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
1192 SETTING_TRACE("To load ug[%s]", "ug-setting-notification-app-notifications-efl");
1193 ug_create(ad->ug, "ug-setting-notification-app-notifications-efl", UG_MODE_FULLVIEW, NULL, cbs);
1198 else if (!safeStrCmp("IDS_ST_BODY_VIBRATE_WHEN_RINGING", list_item->keyStr)) {
1199 /* vibrate when ring*/
1200 int old_status = list_item->chk_status;/*elm_check_state_get(list_item->eo_check); */
1201 if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, !old_status) == 0) {
1203 setting_update_gl_item_chk_status(list_item, !old_status);
1205 } else if (!safeStrCmp("IDS_ST_BODY_SCREEN_LOCK_SOUND", list_item->keyStr)) {
1206 int old_status = list_item->chk_status;/*elm_check_state_get(list_item->eo_check); */
1207 if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, !old_status) == 0) {
1209 setting_update_gl_item_chk_status(list_item, !old_status);
1211 } else if (!safeStrCmp("IDS_ST_MBODY_DIALLING_KEYPAD_TONE", list_item->keyStr)) {
1212 int old_status = list_item->chk_status;/*elm_check_state_get(list_item->eo_check); */
1213 /* To do : set vconfkey for touch sounds */
1214 if (vconf_set_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, !old_status) == 0) {
1216 setting_update_gl_item_chk_status(list_item, !old_status);
1218 } else if (!safeStrCmp("IDS_ST_MBODY_TOUCH_SOUND", list_item->keyStr)) {
1219 int old_status = list_item->chk_status;/*elm_check_state_get(list_item->eo_check); */
1220 /* To do : set vconfkey for touch sounds */
1221 if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, !old_status) == 0) {
1223 setting_update_gl_item_chk_status(list_item, !old_status);
1225 } else if (!safeStrCmp("IDS_ST_HEADER_FEEDBACK", list_item->keyStr)) {
1226 __setting_sound_ug_key_ungrab(ad);
1228 int vconf_value = 0;
1229 Evas_Object *genlist = NULL;
1230 ADD_GENLIST(genlist, ad->navi_bar);
1231 /* 1. Touch sounds */
1232 if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &vconf_value) < 0)
1233 vconf_value = TRUE; /* default value of touch sounds : on */
1234 ADD_TOGGLE_MENU(ad->data_touch_sounds, genlist, itc_1text_1icon, "IDS_ST_MBODY_TOUCH_SOUND", "IDS_ST_BODY_PLAY_A_SOUND_WHEN_BUTTONS_ICONS_AND_MENU_ITEMS_ARE_TAPPED", vconf_value, ad)
1237 if (vconf_get_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, &vconf_value) < 0)
1238 vconf_value = TRUE; /* default value of touch sounds : on */
1239 ADD_TOGGLE_MENU(ad->data_button_sounds, genlist, itc_1text_1icon, "IDS_ST_MBODY_DIALLING_KEYPAD_TONE", "IDS_ST_BODY_PLAY_TONE_WHEN_THE_DIALLING_KEYPAD_IS_TAPPED", vconf_value, ad)
1241 /* 3. Screen lock sound */
1242 if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &vconf_value) < 0)
1243 vconf_value = 0; /* default value of lock/unlock sound : off */
1244 ADD_TOGGLE_MENU(ad->data_lock_sound, genlist, itc_1text_1icon, "IDS_ST_BODY_SCREEN_LOCK_SOUND", "IDS_ST_BODY_PLAY_SOUNDS_WHEN_LOCKING_AND_UNLOCKING_SCREEN", vconf_value, ad)
1246 Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->navi_bar, "IDS_ST_HEADER_FEEDBACK", NULL, NULL, genlist, NULL);
1247 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
1249 elm_naviframe_item_pop_cb_set(navi_it, (Elm_Naviframe_Item_Pop_Cb)__feedback_back_cb, ad);