2 * Copyright (c) 2010 Samsung Electronics, Inc.
5 * This software is a confidential and proprietary information
6 * of Samsung Electronics, Inc. ("Confidential Information"). You
7 * shall not disclose such Confidential Information and shall use
8 * it only in accordance with the terms of the license agreement
9 * you entered into with Samsung Electronics.
12 #include <vconf-keys.h>
14 #include "setting-volume.h"
15 #include "setting_control_haptic.h"
16 #include "setting-common-sound.h"
20 static struct _volume_menu_item volume_menu_its[] = {
21 { "IDS_ST_BUTTON_MULTIMEDIA", _gl_multimedia_cb },
22 { "IDS_ST_HEADER_RINGTONES_ABB", _gl_ringtone_cb },
23 { "IDS_ST_BUTTON_NOTIFICATIONS", _gl_notification_cb },
24 { "IDS_ST_BODY_SYSTEM_M_VOLUME_ABB", _gl_system_cb },
29 static char * volume_number_str[] = {
30 "0", "1", "2", "3", "4", "5", "6", "7",
31 "8", "9", "10", "11", "12", "13", "14", "15"
36 static void _set_volumn(sound_type_e type, int volume_index, char* vconf_key);
37 static void _change_to_vibrate_mode();
38 static void vibrate_vconf_changed_cb(keynode_t * key, void * data);
39 static void sound_vconf_changed_cb(keynode_t * key, void * data);
40 static void _play_sound_all_type(int sound_type, float volume);
41 static void _update_volume_circle(Evas_Object * spiner);
44 static int is_changing_level_by_vconf = 0;
45 static int is_changed = 0;
46 static int is_myself_changing = 0;
47 static int is_myself_ringtone_changing = 0;
48 static int is_play_ringtone_sound = 0;
50 static int is_sound_changed = 0;
51 static int is_vibrate_changed = 0;
52 static int is_play_media_sound = 0;
56 void _initialize_volume()
60 is_wav_playing_vol = SOUND_STATE_STOP;
63 is_changing_level_by_vconf = 0;
64 is_myself_changing = 0;
65 is_myself_ringtone_changing = 0;
68 is_vibrate_changed = 0;
69 is_play_media_sound = 0;
71 curr_sound_type = SOUND_TYPE_RINGTONE;
73 if( is_created_player() )
75 _close_player(NULL, SOUND_TYPE_RINGTONE);
79 void _clear_volume_cb(void *data , Evas *e, Evas_Object *obj, void *event_info)
81 _clear_volume_resources();
86 static void stop_wav()
88 if( is_wav_playing_vol == SOUND_STATE_PLAY ) {
89 DBG("Setting - sound id : %d", sound_id_vol);
91 wav_player_stop(sound_id_vol);
92 is_wav_playing_vol = SOUND_STATE_STOP;
97 void _stop_all_volume_sound()
99 DBG("Setting - stop all volume sound.");
101 if( is_created_player() )
103 _close_player(NULL, curr_sound_type);
109 void _clear_volume_resources()
111 DBG("Setting - _clear_volume_resources()");
113 if( is_created_player() )
115 _close_player(NULL, curr_sound_type);
121 g_volume_spinner = NULL;
122 is_myself_changing = 0;
123 is_myself_ringtone_changing = 0;
124 is_sound_changed = is_vibrate_changed = 0;
127 static void _update_volume_popup_for_changing_sound_mode()
129 DBG("_update_volume_popup_for_changing_sound_mode is called!!");
131 int temp_volume_index = 0;
133 is_sound_changed = is_vibrate_changed = 0;
135 if( g_volume_spinner )
137 is_changing_level_by_vconf = 1;
139 int sound_mode = get_sound_mode();
141 if( sound_mode == SOUND_MODE_VIBRATE )
143 DBG("Setting - vibrate!!!");
145 if( curr_sound_type == SOUND_TYPE_RINGTONE )
149 elm_spinner_value_set(g_volume_spinner, 0);
150 _update_volume_circle(g_volume_spinner);
152 _stop_all_volume_sound();
154 edje_object_signal_emit(elm_layout_edje_get(g_volume_spinner), "elm,spinner,min", "elm");
155 edje_object_part_drag_value_set(elm_layout_edje_get(g_volume_spinner), "elm.dragable.slider", 0, 0);
156 edje_object_signal_emit(elm_layout_edje_get(g_volume_spinner), "elm,spinner,vibrate", "elm");
158 if( curr_sound_type == SOUND_TYPE_NOTIFICATION ||
159 curr_sound_type == SOUND_TYPE_SYSTEM )
161 DBG("current_sound_type!!");
163 elm_object_disabled_set(g_volume_spinner, EINA_TRUE);
166 else if( sound_mode == SOUND_MODE_SOUND )
168 DBG("Setting - Sound!!!");
170 sound_manager_get_volume(curr_sound_type, &volume_index);
172 DBG("volume_index !!!!!! -------------- %d", volume_index);
174 if( volume_index != 0 )
176 elm_spinner_value_set(g_volume_spinner, volume_index);
178 _update_volume_circle(g_volume_spinner);
180 elm_object_disabled_set(g_volume_spinner, EINA_FALSE);
185 DBG("Setting - Mute!!!");
187 if( curr_sound_type == SOUND_TYPE_NOTIFICATION ||
188 curr_sound_type == SOUND_TYPE_SYSTEM )
190 elm_object_disabled_set(g_volume_spinner, EINA_FALSE);
192 edje_object_signal_emit(elm_layout_edje_get(g_volume_spinner), "elm,spinner,min", "elm");
193 edje_object_part_drag_value_set(elm_layout_edje_get(g_volume_spinner), "elm.dragable.slider", 0, 0);
195 elm_object_disabled_set(g_volume_spinner, EINA_TRUE);
197 else if ( curr_sound_type == SOUND_TYPE_RINGTONE )
199 _stop_all_volume_sound();
201 if( curr_sound_type == SOUND_TYPE_RINGTONE )
205 elm_spinner_value_set(g_volume_spinner, 0);
206 _update_volume_circle(g_volume_spinner);
208 edje_object_signal_emit(elm_layout_edje_get(g_volume_spinner), "elm,spinner,min", "elm");
209 edje_object_part_drag_value_set(elm_layout_edje_get(g_volume_spinner), "elm.dragable.slider", 0, 0);
215 static void sound_vconf_changed_cb(keynode_t * key, void * data)
217 DBG("Setting - sound_vconf_changed_cb() is called!!");
219 if( curr_sound_type == SOUND_TYPE_MEDIA )
224 if( is_myself_changing )
226 DBG("Setting - is_myself_changing is called!!");
227 is_myself_changing = 0;
231 is_sound_changed = 1;
233 if( is_sound_changed && is_vibrate_changed )
235 _update_volume_popup_for_changing_sound_mode();
239 static void vibrate_vconf_changed_cb(keynode_t * key, void * data)
241 DBG("Setting - vibrate_vconf_changed_cb() is called!!");
243 if( curr_sound_type == SOUND_TYPE_MEDIA )
248 if( is_myself_changing )
250 DBG("Setting - is_myself_changing is called!!");
251 is_myself_changing = 0;
255 is_vibrate_changed = 1;
257 if( is_sound_changed && is_vibrate_changed )
259 _update_volume_popup_for_changing_sound_mode();
263 static void pm_state_vconf_changed_cb_for_volume(keynode_t * key, void * data)
265 DBG("Setting - pm_state_vconf_changed_cb_for_volume() is called!");
268 vconf_get_int(VCONFKEY_PM_STATE, &pm_state);
270 if (pm_state == VCONFKEY_PM_STATE_LCDOFF)
272 DBG("Setting - LCD Off!! stop sound!");
273 _stop_all_volume_sound();
277 static void _rigngtone_volume_changed_cb(sound_type_e type, unsigned int volume, void *user_data)
279 DBG("Setting - _rigngtone_volume_changed_cb() is called!");
281 if( type != SOUND_TYPE_RINGTONE )
283 DBG("Setting - sound_type is not media!!");
287 if( is_myself_ringtone_changing )
289 is_myself_ringtone_changing = 0;
293 if( g_volume_spinner )
295 volume_index = volume;
297 DBG("Setting - Ringtone volume: %d", volume_index);
299 is_play_ringtone_sound = 1;
301 elm_spinner_value_set(g_volume_spinner, volume_index);
305 static void _media_volume_changed_cb(sound_type_e type, unsigned int volume, void *user_data)
307 DBG("Setting - _media_volume_changed_cb() is called!");
309 if( type == SOUND_TYPE_RINGTONE )
311 DBG("Setting - sound_type is ringtone!!");
315 if( is_myself_ringtone_changing )
317 is_myself_ringtone_changing = 0;
321 if( volume_index == volume )
323 DBG("Setting - Volume is same!!");
327 if( g_volume_spinner )
329 volume_index = volume;
331 DBG("Setting - Media volume: %d", volume_index);
333 is_play_media_sound = 1;
335 elm_spinner_value_set(g_volume_spinner, volume_index);
339 static void _gl_multimedia_cb(void *data, Evas_Object *obj, void *event_info)
341 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
343 _show_multimedia_popup(data, obj, event_info);
346 static void _gl_ringtone_cb(void *data, Evas_Object *obj, void *event_info)
348 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
350 _show_ringtone_popup(data, obj, event_info);
353 static void _gl_notification_cb(void *data, Evas_Object *obj, void *event_info)
355 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
357 _show_notification_popup(data, obj, event_info);
360 static void _gl_system_cb(void *data, Evas_Object *obj, void *event_info)
362 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
364 _show_system_popup(data, obj, event_info);
367 char * _gl_volume_title_get(void *data, Evas_Object *obj, const char *part)
370 Item_Data *id = data;
371 int index = id->index;
372 if( !strcmp(part, "elm.text") )
374 snprintf(buf, sizeof(buf)-1, "%s", _(volume_menu_its[index % VOLUMN_ITEM_COUNT].name));
380 static void _volumn_gl_del(void *data, Evas_Object *obj)
382 Item_Data *id = data;
387 Evas_Object* _create_volume_list(void* data)
392 DBG("%s", "_create_volume_list - appdata is null");
395 Evas_Object *genlist = NULL;
396 Elm_Object_Item *item = NULL;
397 struct _volume_menu_item *menu_its = NULL;
402 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
403 itc->item_style = "1text";
404 itc->func.text_get = _gl_volume_title_get;
405 itc->func.del = _volumn_gl_del;
407 genlist = elm_genlist_add(ad->nf);
408 elm_genlist_block_count_set(genlist, 14);
409 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
411 menu_its = volume_menu_its;
413 for (idx = 0; idx < VOLUMN_ITEM_COUNT; idx++)
415 Item_Data *id = calloc(sizeof(Item_Data), 1);
417 item = elm_genlist_item_append(
418 genlist, // genlist object
422 ELM_GENLIST_ITEM_NONE,
423 menu_its[ idx ].func, // call back
427 elm_genlist_item_class_free(itc);
432 static void change_sound_mode(int mode)
436 case SOUND_MODE_SOUND:
437 DBG("Setting - Change sound mode to Sound!");
439 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
440 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
442 case SOUND_MODE_VIBRATE:
443 DBG("Setting - Change sound mode to Sound!");
445 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
446 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
448 case SOUND_MODE_MUTE:
449 DBG("Setting - Change sound mode to Sound!");
451 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
452 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
457 static void _set_cancel_cb(void *data, Evas_Object *obj, void *event_info)
466 elm_naviframe_item_pop(ad->nf);
470 DBG("Setting - original volume : %d", original_volume);
472 char vconf_key[512] = {0,};
474 switch(curr_sound_type)
476 case SOUND_TYPE_MEDIA:
477 strcpy(vconf_key, VCONFKEY_SETAPPL_MEDIA_SOUND_VOLUME_INT);
479 case SOUND_TYPE_RINGTONE:
480 strcpy(vconf_key, VCONFKEY_SETAPPL_CALL_RINGTONE_SOUND_VOLUME_INT);
482 case SOUND_TYPE_SYSTEM:
483 strcpy(vconf_key, VCONFKEY_SETAPPL_TOUCH_FEEDBACK_SOUND_VOLUME_INT);
485 case SOUND_TYPE_NOTIFICATION:
486 strcpy(vconf_key, VCONFKEY_SETAPPL_NOTI_SOUND_VOLUME_INT);
490 // restore original vulume value
491 _set_volumn( curr_sound_type, original_volume, vconf_key );
493 if( original_sound_mode != get_sound_mode() )
495 // restore sound mode
496 change_sound_mode(original_sound_mode);
501 if( is_created_player() )
503 _close_player(ad, curr_sound_type);
508 elm_naviframe_item_pop(ad->nf);
511 static Eina_Bool _back_volume_naviframe_cb(void *data, Elm_Object_Item *it)
515 if( is_created_player() )
517 _close_player(data, curr_sound_type);
520 g_volume_spinner = NULL;
522 is_changed = 0; // initialize flag!
526 unregister_vconf_changing(VCONFKEY_PM_STATE, pm_state_vconf_changed_cb_for_volume);
528 if( curr_sound_type == SOUND_TYPE_RINGTONE )
530 sound_manager_unset_volume_changed_cb();
534 sound_manager_unset_volume_changed_cb();
537 /* Unregister sound mode vconf callback */
538 unregister_vconf_changing(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, vibrate_vconf_changed_cb);
539 unregister_vconf_changing(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL ,sound_vconf_changed_cb);
544 static void _set_volumn(sound_type_e type, int volume_index, char* vconf_key)
546 DBG("Setting - set_volume() is called!");
550 if( (type == SOUND_TYPE_RINGTONE) || (type == SOUND_TYPE_NOTIFICATION) )
552 err = sound_manager_set_volume(type, volume_index);
556 err = sound_manager_set_volume(type, volume_index);
559 // save system vulume value
560 if( err == SOUND_MANAGER_ERROR_NONE )
562 vconf_set_int(vconf_key, volume_index);
564 if( curr_sound_type == SOUND_TYPE_RINGTONE )
566 DBG("Ringtone volume is changed....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
568 if( volume_index == 0 && get_sound_mode() == SOUND_MODE_SOUND )
570 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
571 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
573 else if( volume_index > 0 && get_sound_mode() != SOUND_MODE_SOUND )
575 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
576 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
582 DBG("Setting - ringtone value is not saved... %d", volume_index);
586 static void _set_multimedia_clicked_cb(void *data, Evas_Object *obj, void *event_info)
595 elm_naviframe_item_pop(ad->nf);
599 // save multimedia vulume value
600 _set_volumn( SOUND_TYPE_MEDIA, volume_index, VCONFKEY_SETAPPL_MEDIA_SOUND_VOLUME_INT );
604 if( is_created_player() )
606 _close_player(ad, curr_sound_type);
611 elm_naviframe_item_pop(ad->nf);
614 static void _play_sound_all_type(int sound_type, float volume)
616 if( is_myself_ringtone_changing )
618 DBG(" is_myself_ringtone_changing !!!!!!!!!!!");
624 const char * sound_path = NULL;
625 int temp_volume_index = 0;
627 case SOUND_TYPE_RINGTONE :
628 temp_volume_index = volume_index;
630 vconf_set_int(VCONFKEY_SETAPPL_CALL_RINGTONE_SOUND_VOLUME_INT, temp_volume_index);
631 vconf_set_int("db/setting/sound/call/rmd_ringtone_volume", temp_volume_index); // backup ringtone volume
633 sound_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
635 sprintf(buf, "%s", sound_path);
638 sprintf(buf, "%s", VCONFKEY_SETAPPL_CALL_RINGTONE_DEFAULT_PATH_STR);
641 case SOUND_TYPE_MEDIA:
642 _set_volumn(sound_type, volume_index, VCONFKEY_SETAPPL_MEDIA_SOUND_VOLUME_INT);
644 sprintf(buf, "%s", SETTING_DEFAULT_MEDIA_TONE);
646 case SOUND_TYPE_NOTIFICATION:
647 vconf_set_int(VCONFKEY_SETAPPL_NOTI_SOUND_VOLUME_INT, volume_index);
649 sound_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
651 sprintf(buf, "%s", sound_path);
654 sprintf(buf, "%s", SETTING_DEFAULT_MSG_TONE);
657 case SOUND_TYPE_SYSTEM:
658 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_SOUND_VOLUME_INT, volume_index);
660 sprintf(buf, "%s", SETTING_DEFAULT_SYS_TONE);
666 if( sound_type == SOUND_TYPE_RINGTONE )
668 DBG("Setting - ringtone safety volume!!");
669 DBG("Setting - real volume : %d", temp_volume_index);
671 sound_manager_set_volume(sound_type, temp_volume_index);
673 else if( sound_type == SOUND_TYPE_NOTIFICATION )
675 DBG("Setting - notification safety volume!!");
676 sound_manager_set_volume(sound_type, temp_volume_index);
680 DBG("Setting - normal volume!!");
681 err = sound_manager_set_volume(sound_type, volume_index);
682 if( err != SOUND_MANAGER_ERROR_NONE )
684 ERR("Setting - sound_manager_set_volume() is failed! : %d", err);
688 if( sound_type == SOUND_TYPE_RINGTONE )
690 if( !is_created_player() || is_player_paused() )
692 play_sound(buf, volume, SOUND_TYPE_RINGTONE);
695 is_myself_ringtone_changing = 1;
697 else if( sound_type == SOUND_TYPE_MEDIA )
700 int err = vconf_get_int("memory/private/org.tizen.w-music-player/player_state", &music_state);
702 DBG("Setting - music state: %d, err: %d", music_state, err);
704 if( music_state == VCONFKEY_MUSIC_PLAY )
706 DBG("Setting - media is playing...");
710 if( !is_created_player() || is_player_paused() )
712 play_sound(buf, volume, SOUND_TYPE_MEDIA);
717 else if( sound_type == SOUND_TYPE_SYSTEM )
721 is_wav_playing_vol = SOUND_STATE_PLAY;
722 wav_player_start(buf, sound_type, NULL, NULL, &sound_id_vol);
725 else if( sound_type == SOUND_TYPE_NOTIFICATION )
727 play_sound(buf, 0.0, SOUND_TYPE_NOTIFICATION);
734 static void _change_to_vibrate_mode( )
736 DBG("Setting - _change_to_vibrate_mode() is called!");
738 if(curr_sound_type == SOUND_TYPE_MEDIA)
743 if( get_sound_mode() != SOUND_MODE_VIBRATE )
745 DBG("Setting - Change sound mode to vibrate!");
747 is_myself_changing = 1;
749 _stop_all_volume_sound();
751 _start_vibration(3, SETTING_VIB_STRONG_RATE, SETTING_DEFAULT_SYSTEM_HAPTIC_PREVIEW_VIB);
753 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
754 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
758 static void _change_to_sound_mode( )
760 DBG("Setting - _change_to_sound_mode() is called!");
762 if(curr_sound_type == SOUND_TYPE_MEDIA)
767 if( get_sound_mode() != SOUND_MODE_SOUND )
769 DBG("Setting - Change sound mode to sound!");
771 is_myself_changing = 1;
773 vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
774 vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
778 static int sync_volume(int vconf_vol, int real_vol)
780 if( vconf_vol != real_vol )
785 static void _update_volume_circle(Evas_Object * spiner)
791 double min, max, posx;
792 int idx = (int) elm_spinner_value_get(spiner);
794 edje_object_part_geometry_get(elm_layout_edje_get(spiner), "center.image2", NULL, NULL, &w, NULL);
795 elm_spinner_min_max_get(spiner, &min, &max);
798 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,full", "elm");
800 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,default", "elm");
803 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,min", "elm");
804 if( curr_sound_type != SOUND_TYPE_MEDIA && get_sound_mode() == SOUND_MODE_VIBRATE )
806 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,vibrate", "elm");
810 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,normal", "elm");
812 posx = (double)(w/max) * idx;
814 edje_object_part_drag_value_set(elm_layout_edje_get(spiner), "elm.dragable.slider", posx, 0);
817 static void _on_volume_spinner_change_cb(void *data, Evas_Object * obj, void *event_info)
819 DBG("Setting - _on_volume_spinner_change_cb() is called!");
821 if( is_changing_level_by_vconf )
823 DBG("Setting - is_changing_level_by_vconf!!!!");
825 is_changing_level_by_vconf = 0;
829 is_changed = 1; // changed flag!!
834 int idx = (int) elm_spinner_value_get(obj);
838 DBG("Setting - volume_index : %d", volume_index);
840 if( get_sound_mode() != SOUND_MODE_MUTE )
842 if( !is_play_ringtone_sound )
844 _play_sound_all_type(curr_sound_type, 0.0);
848 is_play_ringtone_sound = 0;
852 edje_object_part_geometry_get(elm_layout_edje_get(obj), "center.image2", NULL, NULL, &w, NULL);
853 elm_spinner_min_max_get(obj, &min, &max);
855 DBG("Setting - min: %i, max: %i, idx: %d", (int)min, (int)max, idx);
859 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,full", "elm");
863 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,default", "elm");
867 if( get_sound_mode() != SOUND_MODE_VIBRATE )
869 _change_to_vibrate_mode();
871 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,min", "elm");
872 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,vibrate", "elm");
876 if( get_sound_mode() == SOUND_MODE_MUTE )
878 _change_to_vibrate_mode();
879 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,min", "elm");
880 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,vibrate", "elm");
882 elm_spinner_value_set(obj, 0);
886 _change_to_sound_mode();
887 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,normal", "elm");
892 if( get_sound_mode() == SOUND_MODE_MUTE )
898 posx = (double)(w/max) * idx;
901 edje_object_part_drag_value_set(elm_layout_edje_get(obj), "elm.dragable.slider", posx, 0);
904 static void _on_media_volume_spinner_change_cb(void *data, Evas_Object * obj, void *event_info)
906 DBG("Setting - _on_media_volume_spinner_change_cb() is called!");
908 if( curr_sound_type != SOUND_TYPE_MEDIA )
910 if( is_changing_level_by_vconf )
912 DBG("Setting - is_changing_level_by_vconf!!!!");
914 is_changing_level_by_vconf = 0;
922 int idx = (int) elm_spinner_value_get(obj);
924 is_changed = 1; // changed flag!!
928 DBG("Setting - volume_index : %d", volume_index);
930 if( curr_sound_type == SOUND_TYPE_MEDIA )
932 if( !is_play_media_sound )
934 _play_sound_all_type(curr_sound_type, 0.0);
935 is_play_media_sound = 0;
939 is_play_media_sound = 0;
944 _play_sound_all_type(curr_sound_type, 0.0);
947 edje_object_part_geometry_get(elm_layout_edje_get(obj), "center.image2", NULL, NULL, &w, NULL);
948 elm_spinner_min_max_get(obj, &min, &max);
950 DBG("Setting - min: %i, max: %i, idx: %d", (int)min, (int)max, idx);
954 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,full", "elm");
958 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,default", "elm");
962 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,min", "elm");
966 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,normal", "elm");
970 posx = (double)(w/max) * idx;
972 edje_object_part_drag_value_set(elm_layout_edje_get(obj), "elm.dragable.slider", posx, 0);
975 void _show_multimedia_popup(void *data, Evas_Object *obj, void *event_info)
984 is_play_media_sound = 0;
986 original_sound_mode = get_sound_mode();
988 curr_sound_type = SOUND_TYPE_MEDIA;
990 vconf_get_int(VCONFKEY_SETAPPL_MEDIA_SOUND_VOLUME_INT, &volume_index);
992 int real_volume_index = 0;
993 sound_manager_get_volume(SOUND_TYPE_MEDIA, &real_volume_index);
995 DBG("Setting - vconf vol: %d, real vol: %d", volume_index, real_volume_index);
998 volume_index = sync_volume(volume_index, real_volume_index);
999 original_volume = volume_index;
1001 ad->MENU_TYPE = SETTING_VOLUME_2_DEPTH;
1004 ly = elm_layout_add(ad->nf);
1005 elm_layout_file_set(ly, EDJE_PATH, "setting/2finger_popup/default2");
1006 evas_object_size_hint_weight_set (ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1007 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
1010 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
1011 DBG(" ----> width : %d, height : %d ", w, h);
1012 if ( w==360 && h == 480)
1014 DBG("make long height !!!!!!!!!!!!!!!!!");
1015 //elm_object_signal_emit(layout, "set,popup,long", "elm.icon.1");
1016 elm_object_signal_emit(ly, "set,popup,long", "*");
1020 Evas_Object * spinner = elm_spinner_add(ly);
1022 g_volume_spinner = spinner;
1024 //elm_object_style_set(spinner, "volumestyle");
1025 elm_spinner_editable_set(spinner, EINA_FALSE);
1026 elm_spinner_min_max_set(spinner, 0, 15);
1027 elm_spinner_value_set(spinner, volume_index);
1028 _update_volume_circle(spinner);
1029 evas_object_smart_callback_add(spinner, "changed", _on_media_volume_spinner_change_cb, ly);
1030 elm_object_part_content_set(ly, "elm.icon.1", spinner);
1032 //ea_theme_object_color_set(spinner, "B101");
1033 //ea_theme_object_color_set(spinner, "B011");
1034 //ea_theme_object_color_set(spinner, "AO033");
1035 //evas_object_color_set(spinner, 255, 0, 0, 255);
1036 // evas_object_color_set(spinner, 31, 23, 17, 255 );
1037 //ea_theme_object_color_set(spinner, "AO017");
1038 //ea_theme_object_color_set(spinner, "B101");
1039 //ea_theme_object_color_set(spinner, "AO011");
1040 //ea_theme_object_color_replace(spinner, "AO011", "B101");
1042 btn = elm_button_add(ly);
1043 elm_object_style_set(btn, "popup");
1044 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1045 elm_object_translatable_text_set(btn, "IDS_ST_BUTTON_CANCEL_ABB2");
1046 elm_object_part_content_set(ly, "btn1", btn);
1047 evas_object_smart_callback_add(btn, "clicked", _set_cancel_cb, ad);
1049 btn = elm_button_add(ly);
1050 elm_object_style_set(btn, "popup");
1051 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1052 elm_object_translatable_text_set(btn, "IDS_WNOTI_BUTTON_OK_ABB2");
1053 elm_object_part_content_set(ly, "btn2", btn);
1054 evas_object_smart_callback_add(btn, "clicked", _set_multimedia_clicked_cb, ad);
1056 Elm_Object_Item * nf_it = elm_naviframe_item_push( ad->nf,
1057 "IDS_ST_BUTTON_MULTIMEDIA",
1060 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
1061 elm_naviframe_item_pop_cb_set(nf_it, _back_volume_naviframe_cb, ad);
1063 register_vconf_changing(VCONFKEY_PM_STATE, pm_state_vconf_changed_cb_for_volume, NULL);
1064 //register_vconf_changing(VCONFKEY_SETAPPL_MEDIA_SOUND_VOLUME_INT ,_media_vconf_changing_cb, NULL);
1066 sound_manager_set_volume_changed_cb(_media_volume_changed_cb, NULL);
1068 /* Unregister sound mode vconf callback */
1069 register_vconf_changing(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, vibrate_vconf_changed_cb, NULL);
1070 register_vconf_changing(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL ,sound_vconf_changed_cb, NULL);
1073 static void _set_ringtone_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1075 appdata * ad = data;
1082 elm_naviframe_item_pop(ad->nf);
1086 // save ringtone vulume value
1087 _set_volumn( SOUND_TYPE_RINGTONE, volume_index, VCONFKEY_SETAPPL_CALL_RINGTONE_SOUND_VOLUME_INT );
1089 if( is_created_player() )
1091 _close_player(ad, curr_sound_type);
1096 elm_naviframe_item_pop(ad->nf);
1099 void _show_ringtone_popup(void *data, Evas_Object *obj, void *event_info)
1109 original_sound_mode = get_sound_mode();
1111 curr_sound_type = SOUND_TYPE_RINGTONE;
1113 vconf_get_int(VCONFKEY_SETAPPL_CALL_RINGTONE_SOUND_VOLUME_INT, &volume_index);
1115 DBG("Setting - Ringtone volume is %d", volume_index);
1117 sound_mode = get_sound_mode();
1119 int real_volume_index = 0;
1120 sound_manager_get_volume(SOUND_TYPE_RINGTONE, &real_volume_index);
1122 int virtual_index = real_volume_index;
1124 DBG("Setting - vconf vol: %d, real vol: %d", volume_index, virtual_index);
1126 if( sound_mode != SOUND_MODE_SOUND )
1132 volume_index = sync_volume(volume_index, virtual_index);
1133 original_volume = real_volume_index;
1135 ad->MENU_TYPE = SETTING_VOLUME_2_DEPTH;
1137 ly = elm_layout_add(ad->nf);
1138 elm_layout_file_set(ly, EDJE_PATH, "setting/2finger_popup/default2");
1139 evas_object_size_hint_weight_set (ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1140 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
1143 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
1144 DBG(" ----> width : %d, height : %d ", w, h);
1145 if ( w==360 && h == 480)
1147 DBG("make long height !!!!!!!!!!!!!!!!!");
1148 //elm_object_signal_emit(layout, "set,popup,long", "elm.icon.1");
1149 elm_object_signal_emit(ly, "set,popup,long", "*");
1153 Evas_Object * spinner = elm_spinner_add(ly);
1155 g_volume_spinner = spinner;
1157 DBG("Setting- Volume: %d", volume_index);
1159 //elm_object_style_set(spinner, "volumestyle");
1160 elm_spinner_editable_set(spinner, EINA_FALSE);
1161 elm_spinner_min_max_set(spinner, 0, 15);
1163 if( sound_mode != SOUND_MODE_SOUND )
1165 elm_spinner_value_set(spinner, volume_index);
1166 edje_object_signal_emit(elm_layout_edje_get(spinner), "elm,spinner,min", "elm");
1167 edje_object_part_drag_value_set(elm_layout_edje_get(spinner), "elm.dragable.slider", 0, 0);
1169 if( get_sound_mode() == SOUND_MODE_VIBRATE )
1171 edje_object_signal_emit(elm_layout_edje_get(spinner), "elm,spinner,vibrate", "elm");
1176 elm_spinner_value_set(spinner, volume_index);
1177 _update_volume_circle(spinner);
1179 evas_object_smart_callback_add(spinner, "changed", _on_volume_spinner_change_cb, ly);
1180 elm_object_part_content_set(ly, "elm.icon.1", spinner);
1182 btn = elm_button_add(ly);
1183 elm_object_style_set(btn, "popup");
1184 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1185 elm_object_translatable_text_set(btn, "IDS_ST_BUTTON_CANCEL_ABB2");
1186 elm_object_part_content_set(ly, "btn1", btn);
1187 evas_object_smart_callback_add(btn, "clicked", _set_cancel_cb, ad);
1189 btn = elm_button_add(ly);
1190 elm_object_style_set(btn, "popup");
1191 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1192 elm_object_translatable_text_set(btn, "IDS_WNOTI_BUTTON_OK_ABB2");
1193 elm_object_part_content_set(ly, "btn2", btn);
1194 evas_object_smart_callback_add(btn, "clicked", _set_ringtone_clicked_cb, ad);
1196 Elm_Object_Item * nf_it = elm_naviframe_item_push( ad->nf,
1197 "IDS_ST_HEADER_RINGTONES_ABB",
1201 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
1202 elm_naviframe_item_pop_cb_set(nf_it, _back_volume_naviframe_cb, ad);
1204 register_vconf_changing(VCONFKEY_PM_STATE, pm_state_vconf_changed_cb_for_volume, NULL);
1206 sound_manager_set_volume_changed_cb(_rigngtone_volume_changed_cb, NULL);
1208 /* Unregister sound mode vconf callback */
1209 register_vconf_changing(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, vibrate_vconf_changed_cb, NULL);
1210 register_vconf_changing(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL ,sound_vconf_changed_cb, NULL);
1213 static void _set_notification_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1215 appdata * ad = data;
1222 elm_naviframe_item_pop(ad->nf);
1226 _set_volumn( SOUND_TYPE_NOTIFICATION, volume_index, VCONFKEY_SETAPPL_NOTI_SOUND_VOLUME_INT);
1228 if( is_created_player() )
1230 _close_player(ad, curr_sound_type);
1235 elm_naviframe_item_pop(ad->nf);
1238 void _show_notification_popup(void *data, Evas_Object *obj, void *event_info)
1247 original_sound_mode = get_sound_mode();
1249 curr_sound_type = SOUND_TYPE_NOTIFICATION;
1251 vconf_get_int(VCONFKEY_SETAPPL_NOTI_SOUND_VOLUME_INT, &volume_index);
1253 int real_volume_index = 0;
1254 sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &real_volume_index);
1256 DBG("Setting - vconf vol: %d, real vol: %d", volume_index, real_volume_index);
1259 volume_index = sync_volume(volume_index, real_volume_index);
1260 original_volume = volume_index;
1262 ad->MENU_TYPE = SETTING_VOLUME_2_DEPTH;
1264 ly = elm_layout_add(ad->nf);
1265 elm_layout_file_set(ly, EDJE_PATH, "setting/2finger_popup/default2");
1266 evas_object_size_hint_weight_set (ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1267 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
1270 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
1271 DBG(" ----> width : %d, height : %d ", w, h);
1272 if ( w==360 && h == 480)
1274 DBG("make long height !!!!!!!!!!!!!!!!!");
1275 //elm_object_signal_emit(layout, "set,popup,long", "elm.icon.1");
1276 elm_object_signal_emit(ly, "set,popup,long", "*");
1279 Evas_Object * spinner = elm_spinner_add(ly);
1281 g_volume_spinner = spinner;
1283 //elm_object_style_set(spinner, "volumestyle");
1284 elm_spinner_editable_set(spinner, EINA_FALSE);
1285 elm_spinner_min_max_set(spinner, 0, 15);
1287 if( get_sound_mode() != SOUND_MODE_SOUND )
1289 edje_object_signal_emit(elm_layout_edje_get(spinner), "elm,spinner,min", "elm");
1290 edje_object_part_drag_value_set(elm_layout_edje_get(spinner), "elm.dragable.slider", 0, 0);
1292 if( get_sound_mode() == SOUND_MODE_VIBRATE )
1294 edje_object_signal_emit(elm_layout_edje_get(spinner), "elm,spinner,vibrate", "elm");
1297 elm_object_disabled_set(spinner, EINA_TRUE);
1301 elm_spinner_value_set(spinner, volume_index);
1302 _update_volume_circle(spinner);
1304 evas_object_smart_callback_add(spinner, "changed", _on_media_volume_spinner_change_cb, ly);
1305 elm_object_part_content_set(ly, "elm.icon.1", spinner);
1307 btn = elm_button_add(ly);
1308 elm_object_style_set(btn, "popup");
1309 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1310 elm_object_translatable_text_set(btn, "IDS_ST_BUTTON_CANCEL_ABB2");
1311 elm_object_part_content_set(ly, "btn1", btn);
1312 evas_object_smart_callback_add(btn, "clicked", _set_cancel_cb, ad);
1314 btn = elm_button_add(ly);
1315 elm_object_style_set(btn, "popup");
1316 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1317 elm_object_translatable_text_set(btn, "IDS_WNOTI_BUTTON_OK_ABB2");
1318 elm_object_part_content_set(ly, "btn2", btn);
1319 evas_object_smart_callback_add(btn, "clicked", _set_notification_clicked_cb, ad);
1321 Elm_Object_Item * nf_it = elm_naviframe_item_push( ad->nf,
1322 "IDS_ST_BUTTON_NOTIFICATIONS",
1325 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
1326 elm_naviframe_item_pop_cb_set(nf_it, _back_volume_naviframe_cb, ad);
1327 register_vconf_changing(VCONFKEY_PM_STATE, pm_state_vconf_changed_cb_for_volume, NULL);
1329 sound_manager_set_volume_changed_cb(_media_volume_changed_cb, NULL);
1331 /* Unregister sound mode vconf callback */
1332 register_vconf_changing(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, vibrate_vconf_changed_cb, NULL);
1333 register_vconf_changing(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL ,sound_vconf_changed_cb, NULL);
1336 static void _set_system_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1338 appdata * ad = data;
1345 elm_naviframe_item_pop(ad->nf);
1349 // save system vulume value
1350 _set_volumn(SOUND_TYPE_SYSTEM, volume_index, VCONFKEY_SETAPPL_TOUCH_FEEDBACK_SOUND_VOLUME_INT);
1352 if( is_created_player() )
1354 _close_player(ad, curr_sound_type);
1359 elm_naviframe_item_pop(ad->nf);
1363 void _show_system_popup(void *data, Evas_Object *obj, void *event_info)
1372 original_sound_mode = get_sound_mode();
1374 curr_sound_type = SOUND_TYPE_SYSTEM;
1376 vconf_get_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_SOUND_VOLUME_INT, &volume_index);
1378 int real_volume_index = 0;
1379 sound_manager_get_volume(SOUND_TYPE_SYSTEM, &real_volume_index);
1381 DBG("Setting - vconf vol: %d, real vol: %d", volume_index, real_volume_index);
1384 volume_index = sync_volume(volume_index, real_volume_index);
1385 original_volume = volume_index;
1387 ad->MENU_TYPE = SETTING_VOLUME_2_DEPTH;
1389 ly = elm_layout_add(ad->nf);
1390 elm_layout_file_set(ly, EDJE_PATH, "setting/2finger_popup/default2");
1391 evas_object_size_hint_weight_set (ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1392 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
1395 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
1396 DBG(" ----> width : %d, height : %d ", w, h);
1397 if ( w==360 && h == 480)
1399 DBG("make long height !!!!!!!!!!!!!!!!!");
1400 //elm_object_signal_emit(layout, "set,popup,long", "elm.icon.1");
1401 elm_object_signal_emit(ly, "set,popup,long", "*");
1404 Evas_Object * spinner = elm_spinner_add(ly);
1406 g_volume_spinner = spinner;
1408 //elm_object_style_set(spinner, "volumestyle");
1409 elm_spinner_editable_set(spinner, EINA_FALSE);
1410 elm_spinner_min_max_set(spinner, 0, 15);
1412 if( get_sound_mode() != SOUND_MODE_SOUND )
1414 edje_object_signal_emit(elm_layout_edje_get(spinner), "elm,spinner,min", "elm");
1415 edje_object_part_drag_value_set(elm_layout_edje_get(spinner), "elm.dragable.slider", 0, 0);
1417 if( get_sound_mode() == SOUND_MODE_VIBRATE )
1419 edje_object_signal_emit(elm_layout_edje_get(spinner), "elm,spinner,vibrate", "elm");
1422 elm_object_disabled_set(spinner, EINA_TRUE);
1426 elm_spinner_value_set(spinner, volume_index);
1427 _update_volume_circle(spinner);
1429 evas_object_smart_callback_add(spinner, "changed", _on_media_volume_spinner_change_cb, ly);
1430 elm_object_part_content_set(ly, "elm.icon.1", spinner);
1432 btn = elm_button_add(ly);
1433 elm_object_style_set(btn, "popup");
1434 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1435 elm_object_translatable_text_set(btn, "IDS_ST_BUTTON_CANCEL_ABB2");
1436 elm_object_part_content_set(ly, "btn1", btn);
1437 evas_object_smart_callback_add(btn, "clicked", _set_cancel_cb, ad);
1439 btn = elm_button_add(ly);
1440 elm_object_style_set(btn, "popup");
1441 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1442 elm_object_translatable_text_set(btn, "IDS_WNOTI_BUTTON_OK_ABB2");
1443 elm_object_part_content_set(ly, "btn2", btn);
1444 evas_object_smart_callback_add(btn, "clicked", _set_system_clicked_cb, ad);
1446 Elm_Object_Item * nf_it = elm_naviframe_item_push( ad->nf,
1447 "IDS_ST_BODY_SYSTEM_M_VOLUME_ABB",
1450 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
1451 elm_naviframe_item_pop_cb_set(nf_it, _back_volume_naviframe_cb, ad);
1453 register_vconf_changing(VCONFKEY_PM_STATE, pm_state_vconf_changed_cb_for_volume, NULL);
1455 sound_manager_set_volume_changed_cb(_media_volume_changed_cb, NULL);
1457 /* Unregister sound mode vconf callback */
1458 register_vconf_changing(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, vibrate_vconf_changed_cb, NULL);
1459 register_vconf_changing(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL ,sound_vconf_changed_cb, NULL);