Tizen 2.1 base
authorJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:38:38 +0000 (01:38 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:38:38 +0000 (01:38 +0900)
394 files changed:
CMakeLists.txt [new file with mode: 0755]
LICENSE.Flora [new file with mode: 0755]
NOTICE [new file with mode: 0755]
include/mp-drm-ctrl.h [new file with mode: 0644]
include/mp-external-ug.h [new file with mode: 0755]
include/mp-util-media-service.h [new file with mode: 0644]
include/mp-util.h [new file with mode: 0755]
include/mp-video-animation-ctrl.h [new file with mode: 0755]
include/mp-video-app-ctrl.h [new file with mode: 0644]
include/mp-video-ctrl-mgr.h [new file with mode: 0644]
include/mp-video-display-view.h [new file with mode: 0644]
include/mp-video-info-ctrl.h [new file with mode: 0755]
include/mp-video-info-view.h [new file with mode: 0755]
include/mp-video-log.h [new file with mode: 0644]
include/mp-video-player-mgr.h [new file with mode: 0644]
include/mp-video-progressbar.h [new file with mode: 0755]
include/mp-video-service-ctrl.h [new file with mode: 0644]
include/mp-video-sound-path-ctrl.h [new file with mode: 0755]
include/mp-video-streaming-ctrl.h [new file with mode: 0755]
include/mp-video-streaming-view.h [new file with mode: 0644]
include/mp-video-string-define.h [new file with mode: 0644]
include/mp-video-subtitle-ctrl.h [new file with mode: 0755]
include/mp-video-type-define.h [new file with mode: 0644]
include/mp-video-value-define.h [new file with mode: 0755]
include/mp-video-view-mgr.h [new file with mode: 0644]
include/mp-video-volume-ctrl.h [new file with mode: 0644]
include/video-player.h [new file with mode: 0644]
org.tizen.video-player.manifest [new file with mode: 0755]
org.tizen.video-player.xml [new file with mode: 0755]
packaging/org.tizen.video-player.spec [new file with mode: 0755]
res/edc/add_tag.edc [new file with mode: 0755]
res/edc/animation.edc [new file with mode: 0755]
res/edc/control.edc [new file with mode: 0755]
res/edc/custom/vp-naviframe-custom.edc [new file with mode: 0755]
res/edc/detail.edc [new file with mode: 0755]
res/edc/hidden_button_panel.edc [new file with mode: 0755]
res/edc/image_res.edc [new file with mode: 0755]
res/edc/main.edc [new file with mode: 0755]
res/edc/multi_win.edc [new file with mode: 0755]
res/edc/option_button.edc [new file with mode: 0644]
res/edc/panel.edc [new file with mode: 0755]
res/edc/popup_progressbar.edc [new file with mode: 0755]
res/edc/progress.edc [new file with mode: 0755]
res/edc/progress_trim.edc [new file with mode: 0755]
res/edc/setting.edc [new file with mode: 0755]
res/edc/subtitle.edc [new file with mode: 0755]
res/edc/subtitle_sync.edc [new file with mode: 0755]
res/edc/vp-button-white.edc [new file with mode: 0755]
res/edc/vp-button.edc [new file with mode: 0755]
res/edc/vp-chapter-view.edc [new file with mode: 0755]
res/edc/vp-check.edc [new file with mode: 0755]
res/edc/vp-controlbar.edc [new file with mode: 0755]
res/edc/vp-ctxpopup.edc [new file with mode: 0755]
res/edc/vp-custom-winset-style.edc [new file with mode: 0755]
res/edc/vp-layout.edc [new file with mode: 0755]
res/edc/vp-naviframe.edc [new file with mode: 0755]
res/edc/vp-naviframe_white.edc [new file with mode: 0755]
res/edc/vp-nocontents.edc [new file with mode: 0755]
res/edc/vp-progressbar-list.edc [new file with mode: 0755]
res/edc/vp-speedbox-popup.edc [new file with mode: 0644]
res/edc/vp-toolbar.edc [new file with mode: 0755]
res/edc/vp-volume-popup.edc [new file with mode: 0644]
res/edc/vp_font.edc [new file with mode: 0755]
res/images/00_Option_header_bt.png [new file with mode: 0755]
res/images/00_Option_header_bt_dim.png [new file with mode: 0755]
res/images/00_Option_header_bt_press.png [new file with mode: 0755]
res/images/00_button_01_normal.png [new file with mode: 0755]
res/images/00_button_01_normal_dim.png [new file with mode: 0755]
res/images/00_button_01_normal_press.png [new file with mode: 0755]
res/images/00_check_bg_dim.png [new file with mode: 0755]
res/images/00_grid_select_check.png [new file with mode: 0755]
res/images/00_sweep_list_bg.png [new file with mode: 0755]
res/images/00_winset_btn_prev.png [new file with mode: 0755]
res/images/00_winset_btn_prev_press.png [new file with mode: 0755]
res/images/00_winset_control_top_arrow.png [new file with mode: 0755]
res/images/00_winset_list_progress_bg.png [new file with mode: 0755]
res/images/00_winset_thumbs_bg.png [new file with mode: 0755]
res/images/00_winset_thumbs_focus_bg.png [new file with mode: 0755]
res/images/00_winset_thumbs_loading_bg.png [new file with mode: 0755]
res/images/01_controlbar_icon_delete.png [new file with mode: 0755]
res/images/01_controlbar_icon_set_as.png [new file with mode: 0755]
res/images/01_controlbar_icon_share.png [new file with mode: 0755]
res/images/01_header_icon_add.png [new file with mode: 0755]
res/images/01_header_icon_cancel.png [new file with mode: 0755]
res/images/01_header_icon_others.png [new file with mode: 0755]
res/images/12_music_player_sound_path.png [new file with mode: 0755]
res/images/DM_Gallery_Increase.png [new file with mode: 0755]
res/images/T01-2_hold_icon_lock.png [new file with mode: 0755]
res/images/T01-2_icon_toolbar_cancel.png [new file with mode: 0755]
res/images/T01_Image_Look.png [new file with mode: 0755]
res/images/T01_Nocontents_multimedia.png [new file with mode: 0755]
res/images/T01_Option_header_bt.png [new file with mode: 0755]
res/images/T01_Option_header_bt_press.png [new file with mode: 0755]
res/images/T01_Trim_handle_beginning.png [new file with mode: 0755]
res/images/T01_Trim_handle_ending.png [new file with mode: 0755]
res/images/T01_back.png [new file with mode: 0755]
res/images/T01_btn_prev.png [new file with mode: 0755]
res/images/T01_check.png [new file with mode: 0755]
res/images/T01_checkbox.png [new file with mode: 0755]
res/images/T01_control_icon_detail.png [new file with mode: 0755]
res/images/T01_control_icon_fullscreen.png [new file with mode: 0755]
res/images/T01_control_icon_reduce.png [new file with mode: 0755]
res/images/T01_control_top_arrow.png [new file with mode: 0755]
res/images/T01_control_top_bg.png [new file with mode: 0755]
res/images/T01_controlbar_icon_cancel.png [new file with mode: 0755]
res/images/T01_controlbar_icon_done.png [new file with mode: 0755]
res/images/T01_controller_btn.png [new file with mode: 0755]
res/images/T01_controller_btn_press.png [new file with mode: 0755]
res/images/T01_grid_select_check.png [new file with mode: 0755]
res/images/T01_icon_expand.png [new file with mode: 0755]
res/images/T01_icon_reduce.png [new file with mode: 0755]
res/images/T01_icon_soundPath.png [new file with mode: 0755]
res/images/T01_icon_soundPath_h.png [new file with mode: 0755]
res/images/T01_icon_soundPath_press.png [new file with mode: 0755]
res/images/T01_player_progress_bar.png [new file with mode: 0755]
res/images/T01_player_progress_bg.png [new file with mode: 0755]
res/images/T01_player_progress_point.png [new file with mode: 0755]
res/images/T01_sound_path.png [new file with mode: 0755]
res/images/T01_title_bg.png [new file with mode: 0755]
res/images/T01_title_bg_h.png [new file with mode: 0755]
res/images/T01_title_btn.png [new file with mode: 0755]
res/images/T01_title_btn_press.png [new file with mode: 0755]
res/images/T01_toolbar_bg.png [new file with mode: 0755]
res/images/T01_toolbar_press.png [new file with mode: 0755]
res/images/T01_video_list_progress_bar.png [new file with mode: 0755]
res/images/adjustment/T01-2_controller_progress_handle.png [new file with mode: 0755]
res/images/adjustment/T01-2_controller_progress_handle_press.png [new file with mode: 0755]
res/images/adjustment/T01-2_fine_adjustment_bg.png [new file with mode: 0755]
res/images/adjustment/T01-2_fine_adjustment_bg_ef.png [new file with mode: 0755]
res/images/adjustment/T01-2_fine_adjustment_progress_bar.png [new file with mode: 0755]
res/images/adjustment/T01-2_fine_adjustment_progress_bg.png [new file with mode: 0755]
res/images/adjustment/T01-2_fine_adjustment_progress_handle.png [new file with mode: 0755]
res/images/bookmark/T01-2_bookmark_thumbnail.png [new file with mode: 0755]
res/images/bookmark/T01-2_btn_bookmark.png [new file with mode: 0755]
res/images/bookmark/T01-2_btn_bookmark_press.png [new file with mode: 0755]
res/images/bookmark/T01-2_btn_remove_bookmark.png [new file with mode: 0755]
res/images/bookmark/T01-2_btn_remove_bookmark_press.png [new file with mode: 0755]
res/images/bookmark/T01-2_function_tray.png [new file with mode: 0755]
res/images/bookmark/T01-2_icon_thumbnail_bg.png [new file with mode: 0755]
res/images/com.samsung.video-player.png [new file with mode: 0644]
res/images/com.samsung.video-player.png_old [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_01.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_02.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_03.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_ff.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_pause.png [new file with mode: 0644]
res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png [new file with mode: 0644]
res/images/desktop/controlbar/DM_Key screen_icon_play.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_play_press.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_rew.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png [new file with mode: 0755]
res/images/desktop/controlbar/DM_Key screen_icon_volume.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_controller_progress_bar.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_controller_progress_bg.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_controller_progress_handle.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_controller_progress_handle_press.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_fine_adjustment_bg.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png [new file with mode: 0755]
res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png [new file with mode: 0755]
res/images/gallery_loading_ani_01.png [new file with mode: 0755]
res/images/gallery_loading_ani_02.png [new file with mode: 0755]
res/images/gallery_loading_ani_03.png [new file with mode: 0755]
res/images/gallery_loading_ani_04.png [new file with mode: 0755]
res/images/gallery_loading_ani_05.png [new file with mode: 0755]
res/images/gallery_loading_ani_06.png [new file with mode: 0755]
res/images/gallery_loading_ani_07.png [new file with mode: 0755]
res/images/gallery_loading_ani_08.png [new file with mode: 0755]
res/images/gallery_loading_ani_09.png [new file with mode: 0755]
res/images/gallery_loading_ani_10.png [new file with mode: 0755]
res/images/gallery_loading_ani_11.png [new file with mode: 0755]
res/images/gallery_loading_ani_12.png [new file with mode: 0755]
res/images/gallery_loading_ani_13.png [new file with mode: 0755]
res/images/gallery_loading_ani_14.png [new file with mode: 0755]
res/images/gallery_loading_ani_15.png [new file with mode: 0755]
res/images/gallery_loading_ani_16.png [new file with mode: 0755]
res/images/gallery_loading_ani_17.png [new file with mode: 0755]
res/images/gallery_loading_ani_18.png [new file with mode: 0755]
res/images/gallery_loading_ani_19.png [new file with mode: 0755]
res/images/gallery_loading_ani_20.png [new file with mode: 0755]
res/images/gallery_loading_ani_21.png [new file with mode: 0755]
res/images/gallery_loading_ani_22.png [new file with mode: 0755]
res/images/gallery_loading_ani_23.png [new file with mode: 0755]
res/images/gallery_loading_ani_24.png [new file with mode: 0755]
res/images/gallery_loading_ani_25.png [new file with mode: 0755]
res/images/gallery_loading_ani_26.png [new file with mode: 0755]
res/images/gallery_loading_ani_27.png [new file with mode: 0755]
res/images/gallery_loading_ani_28.png [new file with mode: 0755]
res/images/gallery_loading_ani_29.png [new file with mode: 0755]
res/images/gallery_loading_ani_30.png [new file with mode: 0755]
res/images/gallery_video_add_btn.png [new file with mode: 0755]
res/images/gallery_video_add_btn_press.png [new file with mode: 0755]
res/images/gallery_video_control_ff.png [new file with mode: 0755]
res/images/gallery_video_control_ff_2.png [new file with mode: 0755]
res/images/gallery_video_control_ff_3.png [new file with mode: 0755]
res/images/gallery_video_control_ff_4.png [new file with mode: 0755]
res/images/gallery_video_control_ff_5.png [new file with mode: 0755]
res/images/gallery_video_control_frame_back.png [new file with mode: 0755]
res/images/gallery_video_control_frame_forword.png [new file with mode: 0755]
res/images/gallery_video_control_next.png [new file with mode: 0755]
res/images/gallery_video_control_pause.png [new file with mode: 0755]
res/images/gallery_video_control_play.png [new file with mode: 0755]
res/images/gallery_video_control_prev.png [new file with mode: 0755]
res/images/gallery_video_control_rew.png [new file with mode: 0755]
res/images/gallery_video_control_rew_2.png [new file with mode: 0755]
res/images/gallery_video_control_rew_3.png [new file with mode: 0755]
res/images/gallery_video_control_rew_4.png [new file with mode: 0755]
res/images/gallery_video_control_rew_5.png [new file with mode: 0755]
res/images/gallery_video_delete_btn.png [new file with mode: 0755]
res/images/gallery_video_delete_btn_press.png [new file with mode: 0755]
res/images/gallery_video_fastforward_1x.png [new file with mode: 0755]
res/images/gallery_video_fastforward_2x.png [new file with mode: 0755]
res/images/gallery_video_fastforward_3x.png [new file with mode: 0755]
res/images/gallery_video_fastforward_4x.png [new file with mode: 0755]
res/images/gallery_video_icon_btn.png [new file with mode: 0755]
res/images/gallery_video_icon_btn_press.png [new file with mode: 0755]
res/images/gallery_video_icon_mute.png [new file with mode: 0755]
res/images/gallery_video_icon_volume.png [new file with mode: 0755]
res/images/gallery_video_player_bg.png [new file with mode: 0755]
res/images/gallery_video_popup_mute.png [new file with mode: 0755]
res/images/gallery_video_rewind_1x.png [new file with mode: 0755]
res/images/gallery_video_rewind_2x.png [new file with mode: 0755]
res/images/gallery_video_rewind_3x.png [new file with mode: 0755]
res/images/gallery_video_rewind_4x.png [new file with mode: 0755]
res/images/icon/06_myfiles_list_folder.png [new file with mode: 0644]
res/images/icon/T01-2_icon_function_bg.png [new file with mode: 0755]
res/images/icon/T01-2_icon_popup_sound_allive.png [new file with mode: 0755]
res/images/icon/T01-2_icon_popup_sound_audio_track.png [new file with mode: 0755]
res/images/icon/T01-2_icon_popup_sound_repeat_mode.png [new file with mode: 0755]
res/images/icon/T01-2_icon_popup_sound_settings.png [new file with mode: 0755]
res/images/icon/T01-2_icon_popup_subtitle.png [new file with mode: 0755]
res/images/icon/T01-2_icon_popup_trim.png [new file with mode: 0755]
res/images/icon/T01-2_icon_title_allshare.png [new file with mode: 0755]
res/images/icon/T01-2_icon_title_soundpath.png [new file with mode: 0755]
res/images/icon/T01_controlbar_icon_add_to_home.png [new file with mode: 0755]
res/images/icon/_06_myfiles_list_folder.png [new file with mode: 0644]
res/images/mw/T01-2_icon_close.png [new file with mode: 0755]
res/images/mw/T01-2_icon_full_size.png [new file with mode: 0755]
res/images/mw/T01-2_icon_hide_panel.png [new file with mode: 0755]
res/images/mw/T01-2_icon_open_panel.png [new file with mode: 0755]
res/images/mw/T01-2_multiscreen_bg.png [new file with mode: 0755]
res/images/mw/T01-2_multiscreen_bg_press.png [new file with mode: 0755]
res/images/mw/T01-2_multiscreen_player_bg.png [new file with mode: 0755]
res/images/mw/T01-2_player_icon_FF.png [new file with mode: 0755]
res/images/mw/T01-2_player_icon_FF_press.png [new file with mode: 0755]
res/images/mw/T01-2_player_icon_Pause.png [new file with mode: 0755]
res/images/mw/T01-2_player_icon_Pause_press.png [new file with mode: 0755]
res/images/mw/T01-2_player_icon_Play.png [new file with mode: 0755]
res/images/mw/T01-2_player_icon_Play_press.png [new file with mode: 0755]
res/images/mw/T01-2_player_icon_REW.png [new file with mode: 0755]
res/images/mw/T01-2_player_icon_REW_press.png [new file with mode: 0755]
res/images/mw/T01-2_resize_controller.png [new file with mode: 0755]
res/images/mw/T01-2_resize_controller_press.png [new file with mode: 0755]
res/images/navibar_item_separator_shadow.png [new file with mode: 0755]
res/images/naviframe_optionheader.png [new file with mode: 0755]
res/images/naviframe_optionheader_arrow.png [new file with mode: 0755]
res/images/option/T01-2_icon_controller_connection_info.png [new file with mode: 0755]
res/images/option/T01-2_icon_controller_more.png [new file with mode: 0755]
res/images/option/T01-2_icon_controller_multiwin.png [new file with mode: 0755]
res/images/option/T01-2_icon_controller_repeat_off.png [new file with mode: 0755]
res/images/option/T01-2_icon_controller_repeat_on.png [new file with mode: 0755]
res/images/option/T01-2_icon_controller_sa.png [new file with mode: 0755]
res/images/option/T01-2_icon_controller_trim.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_bg.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_bookmark.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_screenmode.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_screenmode02.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_screenmode03.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_select_bg.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_share.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_subtitle.png [new file with mode: 0755]
res/images/option/T01-2_icon_function_trim.png [new file with mode: 0755]
res/images/org.tizen.video-player.png [new file with mode: 0755]
res/images/panel/T01-2_btn_toolbar_back.png [new file with mode: 0755]
res/images/panel/T01-2_btn_toolbar_back_press.png [new file with mode: 0755]
res/images/panel/T01-2_btn_toolbar_volum.png [new file with mode: 0755]
res/images/panel/T01-2_btn_toolbar_volum_press.png [new file with mode: 0755]
res/images/panel/T01-2_btn_toolbar_volume.png [new file with mode: 0755]
res/images/panel/T01-2_controller_progress_bar.png [new file with mode: 0755]
res/images/panel/T01-2_controller_progress_bg.png [new file with mode: 0755]
res/images/panel/T01-2_icon_controller_repeat.png [new file with mode: 0755]
res/images/panel/T01-2_icon_controller_repeat_1.png [new file with mode: 0755]
res/images/panel/T01-2_icon_controller_repeat_all.png [new file with mode: 0755]
res/images/panel/T01-2_icon_controller_sa.png [new file with mode: 0755]
res/images/panel/T01-2_icon_toolbar_cancel.png [new file with mode: 0755]
res/images/panel/T01-2_icon_toolbar_done.png [new file with mode: 0755]
res/images/panel/T02_volume_icon_Mute.png [new file with mode: 0755]
res/images/subtitle/T01-2_sync_btn_bg.png [new file with mode: 0755]
res/images/subtitle/T01-2_sync_faster.png [new file with mode: 0755]
res/images/subtitle/T01-2_sync_list_press.png [new file with mode: 0755]
res/images/subtitle/T01-2_sync_slowly.png [new file with mode: 0755]
res/images/toolbar/T01-2_btn_toolbar_back.png [new file with mode: 0755]
res/images/toolbar/T01-2_btn_toolbar_volum.png [new file with mode: 0755]
res/images/toolbar/T01-2_btn_toolbar_volume.png [new file with mode: 0755]
res/images/toolbar/T01-2_controlbar_icon_folder.png [new file with mode: 0644]
res/images/toolbar/T01-2_controlbar_icon_near_device.png [new file with mode: 0644]
res/images/toolbar/T01-2_controlbar_icon_recorded.png [new file with mode: 0644]
res/images/toolbar/T01-2_controlbar_icon_video.png [new file with mode: 0644]
res/images/toolbar/T01-2_icon_toolbar_cancel.png [new file with mode: 0755]
res/images/toolbar/T01-2_icon_toolbar_delete.png [new file with mode: 0755]
res/images/toolbar/T01-2_icon_toolbar_done.png [new file with mode: 0755]
res/images/toolbar/T01-2_icon_toolbar_setting.png [new file with mode: 0644]
res/images/toolbar/T01-2_icon_toolbar_sort_by.png [new file with mode: 0644]
res/images/toolbar/T02_controlbar_icon_search.png [new file with mode: 0755]
res/images/toolbar/T02_volume_icon_Mute.png [new file with mode: 0755]
res/images/trim/T01-2_controller_track_ball.png [new file with mode: 0755]
res/images/trim/T01-2_controller_trimming_handle_beginning.png [new file with mode: 0755]
res/images/trim/T01-2_controller_trimming_handle_beginning_press.png [new file with mode: 0755]
res/images/trim/T01-2_controller_trimming_handle_ending.png [new file with mode: 0755]
res/images/trim/T01-2_controller_trimming_handle_ending_press.png [new file with mode: 0755]
res/images/trim/T01-2_icon_toolbar_forward.png [new file with mode: 0755]
res/images/trim/T01-2_icon_toolbar_reverse.png [new file with mode: 0755]
res/images/trim/gallery_video_fastforward_1x.png [new file with mode: 0755]
res/images/trim/gallery_video_fastforward_2x.png [new file with mode: 0755]
res/images/trim/gallery_video_fastforward_3x.png [new file with mode: 0755]
res/images/trim/gallery_video_fastforward_4x.png [new file with mode: 0755]
res/images/trim/gallery_video_rewind_1x.png [new file with mode: 0755]
res/images/trim/gallery_video_rewind_2x.png [new file with mode: 0755]
res/images/trim/gallery_video_rewind_3x.png [new file with mode: 0755]
res/images/trim/gallery_video_rewind_4x.png [new file with mode: 0755]
res/images/video_sound_path_dim.png [new file with mode: 0755]
res/images/volume/T01-2_player_progress_bar.png [new file with mode: 0755]
res/images/volume/T01-2_player_progress_bg.png [new file with mode: 0755]
res/images/volume/T01-2_player_volume_handle.png [new file with mode: 0755]
res/images/volume/T01-2_player_volume_handle_press.png [new file with mode: 0755]
res/images/volume/T01-2_volume_icon_01.png [new file with mode: 0755]
res/images/volume/T01-2_volume_icon_02.png [new file with mode: 0755]
res/images/white/common/00_popup_bubble_bg.png [new file with mode: 0755]
res/images/white/common/00_popup_tail_bottom.png [new file with mode: 0755]
res/images/white/common/00_popup_tail_left.png [new file with mode: 0755]
res/images/white/common/00_popup_tail_right.png [new file with mode: 0755]
res/images/white/common/00_popup_tail_top.png [new file with mode: 0755]
res/images/white/common/00_winset_control_toolbar_bg.png [new file with mode: 0755]
res/images/white/common/00_winset_control_top_arrow.png [new file with mode: 0755]
res/images/white/common/00_winset_control_top_bg.png [new file with mode: 0755]
res/images/white/common/00_winset_title_line.png [new file with mode: 0755]
res/images/white/common/01_scroller.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_arrow.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_bg.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_btn_bg.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_btn_bg2.9.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_btn_normal.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_btn_press_bottom.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_btn_press_middle.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_btn_press_top.png [new file with mode: 0755]
res/images/white/common/T01-2_popup_divider.png [new file with mode: 0755]
res/images/white/common/T01-2_title_btn_bg.png [new file with mode: 0755]
res/images/white/common/T01-2_title_btn_bg_press_01.png [new file with mode: 0755]
res/images/white/common/T01-2_title_btn_bg_press_02.png [new file with mode: 0755]
res/images/white/control/T01-2_icon_toolbar_next.png [new file with mode: 0755]
res/images/white/control/T01-2_icon_toolbar_pause.png [new file with mode: 0755]
res/images/white/control/T01-2_icon_toolbar_play.png [new file with mode: 0755]
res/images/white/control/T01-2_icon_toolbar_previous.png [new file with mode: 0755]
res/images/white/control/T01-2_icon_toolbar_stop.png [new file with mode: 0755]
res/images/white/panel/T01-2_btn_toolbar_back.png [new file with mode: 0755]
res/images/white/panel/T01-2_btn_toolbar_volume.png [new file with mode: 0755]
res/images/white/panel/T02_volume_icon_Mute.png [new file with mode: 0755]
res/po/CMakeLists.txt [new file with mode: 0755]
res/po/POTFILES.in [new file with mode: 0755]
res/po/de_DE.po [new file with mode: 0755]
res/po/el_GR.po [new file with mode: 0755]
res/po/en.po [new file with mode: 0755]
res/po/es_ES.po [new file with mode: 0755]
res/po/fr_FR.po [new file with mode: 0755]
res/po/it_IT.po [new file with mode: 0755]
res/po/ja_JP.po [new file with mode: 0755]
res/po/ko_KR.po [new file with mode: 0755]
res/po/nl_NL.po [new file with mode: 0755]
res/po/pt_PT.po [new file with mode: 0755]
res/po/ru_RU.po [new file with mode: 0755]
res/po/tr_TR.po [new file with mode: 0755]
res/po/zh_CN.po [new file with mode: 0755]
res/po/zh_HK.po [new file with mode: 0755]
res/po/zh_TW.po [new file with mode: 0755]
src/mp-drm-ctrl.c [new file with mode: 0644]
src/mp-external-ug.c [new file with mode: 0755]
src/mp-util-media-service.c [new file with mode: 0755]
src/mp-util.c [new file with mode: 0755]
src/mp-video-animation-ctrl.c [new file with mode: 0755]
src/mp-video-app-ctrl.c [new file with mode: 0755]
src/mp-video-ctrl-mgr.c [new file with mode: 0644]
src/mp-video-display-view.c [new file with mode: 0755]
src/mp-video-player-mgr.c [new file with mode: 0644]
src/mp-video-progressbar.c [new file with mode: 0644]
src/mp-video-service-ctrl.c [new file with mode: 0755]
src/mp-video-sound-path-ctrl.c [new file with mode: 0755]
src/mp-video-streaming-ctrl.c [new file with mode: 0644]
src/mp-video-streaming-view.c [new file with mode: 0644]
src/mp-video-subtitle-ctrl.c [new file with mode: 0755]
src/mp-video-view-mgr.c [new file with mode: 0644]
src/mp-video-volume-ctrl.c [new file with mode: 0644]
src/video-player.c [new file with mode: 0755]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..3e43a9d
--- /dev/null
@@ -0,0 +1,218 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(video-player C CXX)
+
+SET(PKG_NAME org.tizen.video-player)
+
+EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION)
+
+SET(SRCS
+src/video-player.c
+src/mp-util.c
+src/mp-video-app-ctrl.c
+src/mp-video-view-mgr.c
+src/mp-video-display-view.c
+src/mp-external-ug.c
+src/mp-video-progressbar.c
+src/mp-util-media-service.c
+src/mp-video-streaming-view.c
+src/mp-video-ctrl-mgr.c
+src/mp-video-player-mgr.c
+src/mp-video-animation-ctrl.c
+src/mp-video-streaming-ctrl.c
+src/mp-video-service-ctrl.c
+src/mp-video-volume-ctrl.c
+src/mp-video-sound-path-ctrl.c
+)
+
+INCLUDE_DIRECTORIES(
+       ${CMAKE_SOURCE_DIR}/include
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+       elementary
+       drm-client
+       utilX
+       dlog
+       vconf
+       syspopup-caller
+       ecore-imf
+       ecore-x
+       ecore-input
+       ecore-evas
+       eina
+       evas
+       ecore
+       ecore-file
+       edje
+       icu-i18n
+       icu-io
+       icu-le
+       icu-lx
+       icu-uc
+       efreet-mime
+       capi-appfw-application
+       capi-media-player
+       capi-media-sound-manager
+       capi-media-image-util
+       pmapi
+       capi-media-metadata-extractor
+       capi-content-media-content
+       capi-content-mime-type
+       ui-gadget-1
+)
+
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMACHINE_$ENV{MACHINE} -fPIC")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fpie")
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -fpie")
+
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"")
+ADD_DEFINITIONS("-D_LARGEFILE64_SOURCE")
+ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=\"\"64")
+
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(THUMBDIR "/opt/usr/media/.video_thumb")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(ICONDIR "${RESDIR}/icons/default/small")
+SET(EDJDIR "${RESDIR}/edje")
+SET(SLP_LD_PATH_FLAGS -L${CMAKE_CURRENT_SOURCE_DIR}/src/ext)
+
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DTHUMBDIR=\"${THUMBDIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64")
+ADD_DEFINITIONS("-DUSE_SWITCH")
+
+
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+SET(CMAKE_LDFLAGS "-Wl,-zdefs" )
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${gles_pkg_LDFLAGS} -ldl)
+
+ADD_CUSTOM_TARGET(main.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/main.edc
+${CMAKE_BINARY_DIR}/res/edc/main.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/main.edc)
+
+ADD_CUSTOM_TARGET(vp_font.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp_font.edc
+${CMAKE_BINARY_DIR}/res/edc/vp_font.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp_font.edc)
+
+ADD_CUSTOM_TARGET(image_res.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/image_res.edc
+${CMAKE_BINARY_DIR}/res/edc/image_res.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/image_res.edc)
+
+ADD_CUSTOM_TARGET(panel.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/panel.edc
+${CMAKE_BINARY_DIR}/res/edc/panel.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/panel.edc)
+
+ADD_CUSTOM_TARGET(progress.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/progress.edc
+${CMAKE_BINARY_DIR}/res/edc/progress.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/progress.edc)
+
+ADD_CUSTOM_TARGET(control.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/control.edc
+${CMAKE_BINARY_DIR}/res/edc/control.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/control.edc)
+
+ADD_CUSTOM_TARGET(animation.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/animation.edc
+${CMAKE_BINARY_DIR}/res/edc/animation.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/animation.edc)
+
+ADD_CUSTOM_TARGET(subtitle.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/subtitle.edc
+${CMAKE_BINARY_DIR}/res/edc/subtitle.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/subtitle.edc)
+
+ADD_CUSTOM_TARGET(vp-custom-winset-style.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-custom-winset-style.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-custom-winset-style.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-custom-winset-style.edc)
+
+ADD_CUSTOM_TARGET(option_button.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/option_button.edc
+${CMAKE_BINARY_DIR}/res/edc/option_button.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/option_button.edc)
+
+ADD_CUSTOM_TARGET(popup_progressbar.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/popup_progressbar.edc
+${CMAKE_BINARY_DIR}/res/edc/popup_progressbar.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/popup_progressbar.edc)
+
+ADD_CUSTOM_TARGET(vp-speedbox-popup.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-speedbox-popup.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-speedbox-popup.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-speedbox-popup.edc)
+
+ADD_CUSTOM_TARGET(vp-volume-popup.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-volume-popup.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-volume-popup.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-volume-popup.edc)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} main.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp_font.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} image_res.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} panel.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} progress.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} control.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} animation.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} subtitle.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-custom-winset-style.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} option_button.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} popup_progressbar.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-speedbox-popup.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-volume-popup.edj)
+
+######################################
+# install desktop file & icon, edje  #
+######################################
+
+INSTALL(DIRECTORY DESTINATION ${THUMBDIR})
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/main.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp_font.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/image_res.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/panel.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/progress.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/control.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/animation.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/subtitle.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-custom-winset-style.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/option_button.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/popup_progressbar.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-speedbox-popup.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-volume-popup.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.video-player.xml DESTINATION /usr/share/packages)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/org.tizen.video-player.png DESTINATION /usr/share/icons/default/small/)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/icon/ DESTINATION ${RESDIR}/images/icon)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/toolbar/ DESTINATION ${RESDIR}/images/toolbar)
+
+INSTALL(FILES LICENSE.Flora DESTINATION /usr/share/license RENAME ${PKG_NAME})
+
+ADD_SUBDIRECTORY(res/po)
diff --git a/LICENSE.Flora b/LICENSE.Flora
new file mode 100755 (executable)
index 0000000..4425b3b
--- /dev/null
@@ -0,0 +1,205 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and
+all other entities that control, are controlled by, or are
+under common control with that entity. For the purposes of
+this definition, "control" means (i) the power, direct or indirect,
+to cause the direction or management of such entity,
+whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
+or more of the outstanding shares, or (iii) beneficial ownership of
+such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice
+that is included in or attached to the work (an example is provided
+in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent,
+as a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from,
+or merely link (or bind by name) to the interfaces of, the Work and
+Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor
+for inclusion in the Work by the copyright owner or by an individual or
+Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of
+electronic, verbal, or written communication sent to the Licensor or
+its representatives, including but not limited to communication on
+electronic mailing lists, source code control systems, and issue
+tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding
+communication that is conspicuously marked or otherwise designated
+in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies
+with the standards set forth in the Compatibility Definition Document
+and passes the Compatibility Test Suite as defined from time to time
+by the Tizen Technical Steering Group and certified by the Tizen
+Association or its designated agent.
+
+2. Grant of Copyright License.  Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.  Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work
+solely as incorporated into a Tizen Certified Platform, where such
+license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work solely
+as incorporated into a Tizen Certified Platform to which such
+Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent infringement,
+then any patent licenses granted to You under this License for that
+Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.  You may reproduce and distribute copies of the
+Work or Derivative Works thereof pursuant to the copyright license
+above, in any medium, with or without modifications, and in Source or
+Object form, provided that You meet the following conditions:
+
+  1. You must give any other recipients of the Work or Derivative Works
+     a copy of this License; and
+  2. You must cause any modified files to carry prominent notices stating
+     that You changed the files; and
+  3. You must retain, in the Source form of any Derivative Works that
+     You distribute, all copyright, patent, trademark, and attribution
+     notices from the Source form of the Work, excluding those notices
+     that do not pertain to any part of the Derivative Works; and
+  4. If the Work includes a "NOTICE" text file as part of its distribution,
+     then any Derivative Works that You distribute must include a readable
+     copy of the attribution notices contained within such NOTICE file,
+     excluding those notices that do not pertain to any part of
+     the Derivative Works, in at least one of the following places:
+     within a NOTICE text file distributed as part of the Derivative Works;
+     within the Source form or documentation, if provided along with the
+     Derivative Works; or, within a display generated by the Derivative Works,
+     if and wherever such third-party notices normally appear.
+     The contents of the NOTICE file are for informational purposes only
+     and do not modify the License.
+
+You may add Your own attribution notices within Derivative Works
+that You distribute, alongside or as an addendum to the NOTICE text
+from the Work, provided that such additional attribution notices
+cannot be construed as modifying the License. You may add Your own
+copyright statement to Your modifications and may provide additional or
+different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works
+as a whole, provided Your use, reproduction, and distribution of
+the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks.  This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!) The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Flora License, Version 1.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://floralicense.org/license/
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/NOTICE b/NOTICE
new file mode 100755 (executable)
index 0000000..fca93f4
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,3 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+Except as noted, this software is licensed under Flora License, Version 1.\r
+Please, see the LICENSE.Flora file for Flora License, Version 1 terms and conditions.
\ No newline at end of file
diff --git a/include/mp-drm-ctrl.h b/include/mp-drm-ctrl.h
new file mode 100644 (file)
index 0000000..ea22cf6
--- /dev/null
@@ -0,0 +1,72 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _MP_DRM_CTRL_H_\r
+#define _MP_DRM_CTRL_H_\r
+\r
+#define        DRM_STR_LEN_MAX         2048\r
+\r
+typedef enum\r
+{\r
+       MP_VIDEO_DRM_ERROR_NONE = 0,\r
+       MP_VIDEO_DRM_ERROR_INTERNAL,\r
+       MP_VIDEO_DRM_ERROR_TIME_BASED,\r
+       MP_VIDEO_DRM_ERROR_INTERVAL,\r
+       MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE,\r
+       MP_VIDEO_DRM_ERROR_ACCUMULATED,\r
+       MP_VIDEO_DRM_ERROR_COUNT,\r
+       MP_VIDEO_DRM_ERROR_COUNT_SMALL,\r
+       MP_VIDEO_DRM_ERROR_TIME_COUNT_BASED,\r
+       MP_VIDEO_DRM_ERROR_TIME_INDIVIDULAL,\r
+       MP_VIDEO_DRM_ERROR_TIME_SYSTEM,\r
+       MP_VIDEO_DRM_ERROR_MAX,\r
+}MpVideoDrmErrorType;\r
+\r
+\r
+\r
+typedef struct\r
+{\r
+       int     nErrorCode;\r
+       int     nData;\r
+}MpVideoDrmInfo;\r
+\r
+\r
+typedef enum\r
+{\r
+       VIDEO_DRM_CONSUMPTION_STATE_DISABLE             = 0,\r
+       VIDEO_DRM_CONSUMPTION_STATE_ENABLE,\r
+}MpVideoDrmConsumptionStateType;\r
+\r
+\r
+void   MpVideoDrmInit(void);\r
+bool   MpVideoDrmGetForwardLookState(void);\r
+void   MpVideoDrmSetConsumptionState(int nState);\r
+int    MpVideoDrmGetConsumption(void);\r
+void   MpVideoDrmStartConsumption(char *szPath);\r
+void   MpVideoDrmPauseConsumption(void);\r
+void   MpVideoDrmResumeConsumption(void);\r
+void   MpVideoDrmStopConsumption(void);\r
+bool   MpVideoDrmIsDrmFile(char* szPath);              //bool MpVideoDrmFileRight(char* szPath);\r
+bool   MpVideoDrmHasValidRo(char* szPath);\r
+bool   MpVideoDrmCheckForward(char* szPath);\r
+MpVideoDrmInfo *MpVideoDrmCheckLeftRo(char* szVideoTitle, char* szPath);\r
+bool   MpVideoDrmCheckExpiration(char* szPath);\r
+\r
+/* DivX DRM functions */\r
+void   MpVideoDrmGetFileExtension(char *szPath, char *szContentType, int nContentTypeStrSize);\r
+\r
+#endif //_MP_DRM_CTRL_H_\r
diff --git a/include/mp-external-ug.h b/include/mp-external-ug.h
new file mode 100755 (executable)
index 0000000..de71541
--- /dev/null
@@ -0,0 +1,47 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _MP_EXTERNAL_UG_\r
+#define  _MP_EXTERNAL_UG_\r
+\r
+\r
+#include <ui-gadget.h>\r
+\r
+\r
+typedef enum\r
+{\r
+       MP_EXTERNAL_UG_NONE                             = -1,\r
+       MP_EXTERNAL_UG_MESSAGE                  = 0,\r
+       MP_EXTERNAL_UG_EMAIL,\r
+       MP_EXTERNAL_UG_MYFILE_DETAIL,\r
+       MP_EXTERNAL_UG_YOUTUBE,\r
+       MP_EXTERNAL_UG_BLUETOOTH,\r
+       MP_EXTERNAL_UG_FTM,\r
+       MP_EXTERNAL_UG_FACEBOOK,\r
+       MP_EXTERNAL_UG_MAX,\r
+}MpExternalUGType;\r
+\r
+\r
+bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void* pUserData);\r
+void MpExternalUgUnload(void);\r
+void MpExternalUgDestroyAll(void);\r
+int    MpExternalUgGetCurUgState(void);\r
+void MpExternalUgSetUgState(MpExternalUGType nExternalUGType);\r
+bool MpExternalUgShow(void *pUserData, void *pParent);\r
+void MpExternalUgHide();\r
+\r
+#endif // _MP_EXTERNAL_UG_\r
diff --git a/include/mp-util-media-service.h b/include/mp-util-media-service.h
new file mode 100644 (file)
index 0000000..7aaff60
--- /dev/null
@@ -0,0 +1,123 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+\r
+#ifndef _MP_UTIL_DATABASE_\r
+#define _MP_UTIL_DATABASE_\r
+\r
+#include "video-player.h"\r
+#include <glib.h>\r
+\r
+typedef enum\r
+{\r
+       MP_MEDIA_VIDEO_FILE_TYPE                        = 0,\r
+       MP_MEDIA_CAMERA_FILE_TYPE,\r
+       MP_MEDIA_ALL_FILE_TYPE,\r
+       MP_MEDIA_FILE_TYPE_MAX,\r
+}MpMediaSvcVideoFileType;\r
+\r
+typedef enum\r
+{\r
+       MP_MEDIA_SORT_BY_NONE                           = 0,\r
+       MP_MEDIA_SORT_BY_NAME_ASC,\r
+       MP_MEDIA_SORT_BY_NAME_DESC,\r
+       MP_MEDIA_SORT_BY_DATE_MOST_RECENT,\r
+       MP_MEDIA_SORT_BY_OLDEST,\r
+       MP_MEDIA_SORT_BY_MAX,\r
+}MpMediaSvcSortType;\r
+\r
+typedef enum\r
+{\r
+       MP_MEDIA_LIST_TYPE_FOLDER                       = 0,\r
+       MP_MEDIA_LIST_TYPE_ALL_FOLDER_GALLERY,\r
+       MP_MEDIA_LIST_TYPE_TAG_GALLERY,\r
+       MP_MEDIA_LIST_TYPE_FAVORITE,\r
+       MP_MEDIA_LIST_TYPE_ALLSHARE,\r
+       MP_MEDIA_LIST_TYPE_MAX,\r
+}MpMediaSvcListType;\r
+\r
+\r
+void MpUtilMediaSvcInitSession(void);\r
+void MpUtilMediaSvcFinishSession(void);\r
+\r
+////////////////////////////////////////////////////////\r
+// Manage video item list\r
+\r
+// For gallery list\r
+bool MpUtilMediaSvcExtractVideoListFromFolder(char* szFolderPath, int nSortType);    // For myfiles.\r
+bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType);            // For 'All' folder of gallery.\r
+bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType);                         // For only video type files of video list view.\r
+bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType);                      // For only recorded type files of video list view.\r
+bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName);                       // For tag folder of gallery.\r
+bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType);                      // For favorite naming of gallery.\r
+bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword);               // For only video type files of video search view*/\r
+\r
+\r
+void MpUtilMediaSvcDestoryVideoList(void);\r
+bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath);\r
+bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex);\r
+bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex);\r
+\r
+\r
+bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID);\r
+char* MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri);\r
+unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath);\r
+unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath);\r
+int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath);\r
+void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime);\r
+\r
+bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char* szCurrMediaUri, char* szPreMediaUri, char* szNextMediaUri,bool bLoop);\r
+\r
+// For video list\r
+char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex);\r
+char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex);\r
+char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex);\r
+int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex);\r
+int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex);\r
+int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex);\r
+int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex);\r
+int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex);\r
+time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex);\r
+char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex);\r
+double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex);\r
+double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex);\r
+\r
+int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void);\r
+int MpUtilMediaSvcGetNumberOfVideoItemByType(void);\r
+int MpUtilMediaSvcGetTotalVideoTypeFiles(void);\r
+void MpUtilMediaSvcPrintListInfo(void);\r
+int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath);\r
+\r
+// For folder list\r
+bool MpUtilMediaSvcExtractVideoFolderList(int nSortType);\r
+bool MpUtilMediaSvcDestoryVideoFolderList(void);\r
+int MpUtilMediaSvcGetVideoFolderListSize(void);\r
+char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex);\r
+char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex);\r
+\r
+////////////////////////////////////////////////////////\r
+// Manage bookmark\r
+\r
+bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list);\r
+void MpUtilMediaSvcBookmarkListClear(GList *list);\r
+int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path);\r
+int MpUtilMediaSvcBookmarkDelete(char *vid, int position);\r
+int MpUtilMediaSvcBookmarkDeleteAll(char *vid);\r
+char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle);\r
+int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle);\r
+\r
+#endif // _MP_UTIL_DATABASE_
\ No newline at end of file
diff --git a/include/mp-util.h b/include/mp-util.h
new file mode 100755 (executable)
index 0000000..81f0cd6
--- /dev/null
@@ -0,0 +1,94 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _MP_UTIL_\r
+#define _MP_UTIL_\r
+\r
+\r
+#include "video-player.h"\r
+\r
+\r
+typedef enum\r
+{\r
+       NORMAL_POPUP_RETURN_TYPE_UNKNOW         = 0,\r
+       NORMAL_POPUP_RETURN_TYPE_YES,\r
+       NORMAL_POPUP_RETURN_TYPE_NO,\r
+       NORMAL_POPUP_RETURN_TYPE_ERR,\r
+}NormalPopUpRetType;\r
+\r
+\r
+void   MpUtilResetForRelaunching(void);\r
+void   MpUtilSetAlphaOfMainWindow(bool bSetAlpha);\r
+void*  MpUtilCreateMainWindow(const char *pStrName);\r
+\r
+int  MpUtilSetKeyGrab(const char* szKeyName, int nGrabMode);\r
+int  MpUtilSetKeyUngrab(const char* szKeyName);\r
+bool MpUtilCheckRTSPType(char *szUriPath);\r
+int  MpUtilCheckUriType(char *szUriPath);\r
+bool MpUtilCheckLocalFileExist(char *uri);\r
+bool MpUtilCheckBatteryStatus(void);\r
+int  MpUtilBatteryStatusNoti(VideoAppData* pAppData);\r
+int  MpUtilBatteryStatusNotiIgnore(void);\r
+int  MpUtilMMCstatusNoti(VideoAppData* pAppData);\r
+int  MpUtilMMCstatusNotiIgnore(void);\r
+int  MpUtilCheckDlnaSortType(void* pSvcHandle, char* szBundleKey);\r
+int  MpUtilCheckDlnaMediaID(void* pSvcHandle, char* szBundleKey);\r
+int  MpUtilGetRotationStateFromAppcore(void);\r
+int  MpUtilGetRotationState(void);\r
+void MpUtilSetRotationState(int nCurRotation);\r
+bool MpUtilGetTitleFromFilepath(char* szFilepath, char* szTitle, int nLengthTitle);\r
+void MpUtilInitSession(void);\r
+void MpUtilFinishSession(void);\r
+void MpUtilDeletePopupHandle(void);\r
+bool MpUtilNotifyPopUp(VideoAppData* pAppData, char* szContents, void* PopupButtonCallbackFunc);\r
+bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,void *PopupButtonCallbackFunc);\r
+bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc);\r
+bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData);\r
+bool MpUtilProgressPopUp(VideoAppData* pAppData, char* szLabel);\r
+void MpUtilStatusBarNotiPopupShow(const char *szStr);\r
+void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func);\r
+void* MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func);\r
+void* MpUtilLoadEdjFile(Evas* pEvas, char* szEdjName, char* szGroupName);\r
+bool MpUtilIsCallOff(void);\r
+bool MpUtilIsCameraOff(void);\r
+bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData);\r
+bool MpUtilIsConnectEarjack(void);\r
+bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData);\r
+bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl);\r
+bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize);\r
+bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl);\r
+bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize);\r
+unsigned int MpUtilGetMainWindowXID(void);\r
+void MpUtilRotateWindow(int nRotateMode, void* pWindowHandle);\r
+void MpUtilGetUserAgent(VideoAppData* pAppData);\r
+double MpUtilGetSysTime(void);\r
+void MpUtilLcdNormalPowerLockForResume(void);\r
+void MpUtilLcdNormalPowerUnlockForPause(void);\r
+void MpUtilLcdOffForPowerButton(void);\r
+bool MpUtilTurnOverSensorInit(void *pUserData);\r
+bool MpUtilTurnOverSensorDestroy(void);\r
+void MpUtilMultimediaKeyGrab(void);\r
+void MpUtilMultimediaKeyUngrab(void);\r
+void MpUtilMultimediaVolumeKeyGrab(void);\r
+void MpUtilMultimediaVolumeKeyUngrab(void);\r
+\r
+char* MpUtilGetFileSize(unsigned int size);\r
+void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour);\r
+bool MpUtilAddToHome(const char *file_path);\r
+void MpUtilLayoutVisibleOff(void *pWindowHandle);\r
+\r
+#endif // _MP_UTIL_\r
diff --git a/include/mp-video-animation-ctrl.h b/include/mp-video-animation-ctrl.h
new file mode 100755 (executable)
index 0000000..3fc3c88
--- /dev/null
@@ -0,0 +1,33 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_LOADING_ANIMATION_CTRL_\r
+#define  _VIDEO_LOADING_ANIMATION_CTRL_\r
+\r
+\r
+void*  MpVideoAnimationCtrlInit(void* pUserData);\r
+void   MpVideoAnimationCtrlDestroy(void);\r
+void   MpVideoAnimationCtrlSetPercent(int nPercent);\r
+void   MpVideoAnimationCtrlPlay(void);\r
+void   MpVideoAnimationCtrlStop(void);\r
+void   MpVideoAnimationCtrlShow(void);\r
+void   MpVideoAnimationCtrlHide(void);\r
+bool   MpVideoAnimationCtrlGetActiveState(void);\r
+\r
+\r
+#endif /* _VIDEO_LOADING_ANIMATION_CTRL_ */\r
+\r
diff --git a/include/mp-video-app-ctrl.h b/include/mp-video-app-ctrl.h
new file mode 100644 (file)
index 0000000..19155ec
--- /dev/null
@@ -0,0 +1,35 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_APP_CTRL_\r
+#define _VIDEO_APP_CTRL_\r
+\r
+\r
+#include "video-player.h"\r
+\r
+\r
+bool MpVideoAppCtrlInit(VideoAppData* pAppData);\r
+bool MpVideoAppCtrlResetForRelaunching(VideoAppData* pAppData);\r
+bool MpVideoAppCtrlIsTopView(void* pUserData);\r
+bool MpVideoAppCtrlIsExistPlayerHandle(void);\r
+void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState);\r
+void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData);\r
+bool MpVideoAppCtrlGetFloatingStatus(void);\r
+bool MpVideoAppCtrlIsCheckCallStatus(void);\r
+void MpVideoAppCtrlInitCheckCallStatus(void);\r
+\r
+#endif /* _VIDEO_APP_CTRL_ */\r
diff --git a/include/mp-video-ctrl-mgr.h b/include/mp-video-ctrl-mgr.h
new file mode 100644 (file)
index 0000000..bc9cc29
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _MP_VIDEO_CTRL_MGR_H_
+#define _MP_VIDEO_CTRL_MGR_H_
+
+
+bool   MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pOverlayXid, void *pEvasSinkID, char* szSubtitleUri, void *pUserData);
+bool   MpVideoCtrlMgrMediaRealize(void);
+bool   MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData);
+void   MpVideoCtrlMgrMediaDestroy(void* pUserData);
+bool   MpVideoCtrlMgrMediaPlay(void* pUserData);
+void   MpVideoCtrlMgrMediaStop(void* pUserData);
+void   MpVideoCtrlMgrMediaPause(void* pUserData);
+void   MpVideoCtrlMgrMediaResume(void* pUserData);
+void   MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *PlayerSubtitleCb, void *pUserData);
+void   MpVideoCtrlMgrSetOverlayXid(void* pXid);
+void   MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData);
+void   MpVideoCtrlMgrSetSubtitlePosition(int nSetPosition);
+int            MpVideoCtrlMgrGetPosition(void);
+int            MpVideoCtrlMgrGetDuration(void);
+void   MpVideoCtrlMgrResetPlaySpeed(void* pUserData);
+void   MpVideoCtrlMgrSetPlaySpeedUp(void* pUserData);
+void   MpVideoCtrlMgrSetPlaySpeedDown(void* pUserData);
+int            MpVideoCtrlMgrGetVideoWidthResolution(void);
+int            MpVideoCtrlMgrGetVideoHeightResolution(void);
+void   MpVideoCtrlMgrSetRatioVideoScreen(void* pUserData, int nRatioScreenSize);
+void   MpVideoCtrlMgrRotateVideoScreen(int nVideoRotateValue);
+void   MpVideoCtrlMgrSetMute(bool bMuteEnable);
+bool   MpVideoCtrlMgrGetMuteState(void);
+int    MpVideoCtrlMgrGetBufferingPosition(void);
+bool   MpVideoCtrlMgrIsExistPlayerHandle(void);
+bool   MpVideoCtrlMgrIsOnlyAudio(void);
+bool   MpVideoCtrlMgrSetScaling(bool bScale);
+int            MpVideoCtrlMgrGetErrorType(int nErrorVal);
+void   MpVideoCtrlMgrSetMute(bool bState);
+int MpVideoCtrlMgrGetClosedCaptionCount(void);
+
+
+#endif
diff --git a/include/mp-video-display-view.h b/include/mp-video-display-view.h
new file mode 100644 (file)
index 0000000..52f075e
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#ifndef _VIDEO_DISPLAY_VIEW_
+#define  _VIDEO_DISPLAY_VIEW_
+
+
+typedef enum
+{
+       MP_DISPLAY_VIEW_STATE_ACTIVATE          = 0,
+       MP_DISPLAY_VIEW_STATE_UNACTIVATE,
+       MP_DISPLAY_VIEW_STATE_MAX,
+}VideoDisplayViewState;
+
+typedef void (*ChangeDisplayViewCbFunc)(int nChangePlayerView, void* pUserData);
+
+void   MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb);
+void   MpVideoDisplayViewPop(void *pNaviFrame, void* pUserData);
+void   MpVideoDisplayViewDestroy(void *pUserData);
+
+void   MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData);
+void   MpVideoDisplayViewUpdatePauseKey(void);
+void   MpVideoDisplayViewUpdateResumeKey(void);
+void   MpVideoDisplayViewShowControlPanel(void *pUserData);
+void   MpVideoDisplayViewHideControlPanel(void *pUserData);
+void   MpVideoDisplayViewActivate(void);
+void   MpVideoDisplayViewUnactivate(void);
+void   MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData);
+bool   MpVideoDisplayViewIsTopView(void);
+void   MpVideoDisplayViewShowNocontentImage(void *pUserData);
+void   MpVideoDisplayViewHideNocontentImage(void);
+void   MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData);
+void   MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData);
+void   MpVideoDisplayViewResetProgressBar(void *pUserData);
+bool   MpVideoDisplayViewIsPauseByUser(void);
+void   MpVideoDisplayViewSetPauseByUser(bool bPauseByUser);
+void   MpVideoDisplayViewUpdateProgressBar(void *pUserData);
+
+#endif
diff --git a/include/mp-video-info-ctrl.h b/include/mp-video-info-ctrl.h
new file mode 100755 (executable)
index 0000000..2cb63d5
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _VIDEO_INFO_CTRL_
+#define  _VIDEO_INFO_CTRL_
+
+bool   MpVideoInfoCtrlGetGPS(char *szUriPath, double *nLongtitude, double *nLatitude);
+bool   MpVideoInfoCtrlGetResolution(char *szWidthResolution, char *szHeightResolution, void *pUserData);
+bool   MpVideoInfoCtrlGetFileInfo(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize);
+#endif
diff --git a/include/mp-video-info-view.h b/include/mp-video-info-view.h
new file mode 100755 (executable)
index 0000000..7a433e8
--- /dev/null
@@ -0,0 +1,27 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_INFO_VIEW_\r
+#define  _VIDEO_INFO_VIEW_\r
+\r
+\r
+void   MpVideoInfoViewPush(void* pNaviFrame, void* pUserData);\r
+void   MpVideoInfoViewPop(void* pNaviFrame, void* pUserData);\r
+void   MpVideoInfoViewDestroy(void);\r
+\r
+\r
+#endif\r
diff --git a/include/mp-video-log.h b/include/mp-video-log.h
new file mode 100644 (file)
index 0000000..b253481
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _VIDEO_LOG_H_
+#define _VIDEO_LOG_H_
+
+#include <dlog.h>
+#include <unistd.h>
+#include <linux/unistd.h>
+
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+
+#define LOG_TAG "video-player"
+
+//#define video_info(fmt,arg...)                               LOGD( "[%s : %d] " fmt "\n", __FUNCTION__,__LINE__, ##arg)
+//#define video_info(fmt,arg...)                               LOGI( "[%s : %d] " fmt , __FUNCTION__,__LINE__, ##arg)
+//#define video_info(fmt,arg...)                               LOGI(fmt , ##arg)
+//#define video_info(fmt,arg...)                               printf(fmt , ##arg)
+//#define video_info(fmt,arg...)                               LOGD( "[%s %s : %d] " fmt "\n",__FILE__,  __FUNCTION__,__LINE__, ##arg)
+
+//#define video_info(fmt,arg...)                                       LOGI( "[VP][%s][%d]" fmt "\n", __FUNCTION__,__LINE__, ##arg)
+//#define video_debug(fmt,arg...)                                      LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+//#define video_warning(fmt,arg...)                            LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+//#define video_error(fmt,arg...)                              LOGD( "[%s %s : %d] " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##arg)
+
+#define VideoLogInfoWithTid(fmt,arg...)                        LOGI( "[VP][TID:%d][%s][%d]" fmt "\n", syscall(__NR_gettid), __FUNCTION__, __LINE__, ##arg)
+#define VideoLogInfo(fmt,arg...)                               LOGI( "[VP][%s][%d]" fmt "\n", __FUNCTION__,__LINE__, ##arg)
+#define VideoLogDebug(fmt,arg...)                              LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+#define VideoLogWarning(fmt,arg...)                    LOGD( "[%s %s: %d]\033[0;33m [WARN]  " fmt "\033[0m\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
+#define VideoLogError( fmt,arg...)                     LOGD( "[%s %s: %d]\033[0;31m [ERR] " fmt "\033[0m\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
+
+
+//#define video_info(fmt,arg...)                                       printf( "[%s %s : %d] " fmt "\n",__FILE__,  __FUNCTION__,__LINE__, ##arg)
+//#define video_debug(fmt,arg...)                                      printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+//#define video_warning(fmt,arg...)                            printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+//#define video_error( fmt,arg...)                             printf( "[%s %s : %d] " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##arg)
+
+
+#endif /*_MPVIDEO_LOG_H_*/
diff --git a/include/mp-video-player-mgr.h b/include/mp-video-player-mgr.h
new file mode 100644 (file)
index 0000000..427a000
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _MP_VIDEO_PLAYER_MGR_H_
+#define _MP_VIDEO_PLAYER_MGR_H_
+
+
+#include <player.h>
+#include <sound_manager.h>
+#include <image_util.h>
+#include <mm_util_imgp.h>
+
+
+typedef enum
+{
+       DISPLAY_METHOD_LETTER_BOX               = 0,
+       DISPLAY_METHOD_ORIGIN_SIZE,
+       DISPLAY_METHOD_FULL_SCREEN,
+       DISPLAY_METHOD_CROPPED_FULL,
+       DISPLAY_METHOD_CUSTOM_ROI,
+}MpPlayerMgrDisplayMethod;
+
+
+typedef enum
+{
+       VIDEO_SCREEN_UNKNOWN                    = 0,
+       VIDEO_SCREEN_PORTRAIT,
+       VIDEO_SCREEN_LANDSCAPE,
+       VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN,
+       VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN,
+}MpVideoRotation;
+
+
+typedef enum
+{
+       SOUND_EFFECT_NORMAL                             = 0,
+       SOUND_EFFECT_VOICE,
+       SOUND_EFFECT_MOVIE,
+       SOUND_EFFECT_51CH,
+       SOUND_EFFECT_MAX,
+}MpSoundEffectType;
+
+
+typedef enum
+{
+       FILE_STREAM_TYPE_NOTHING                = 0,
+       FILE_STREAM_TYPE_VIDEO_AUDIO,
+       FILE_STREAM_TYPE_AUDIO,
+       FILE_STREAM_TYPE_VIDEO,
+       FILE_STREAM_TYPE_MAX,
+}MpFileStreamType;
+
+bool   MpPlayerMgrIsActive(void);
+bool   MpPlayerMgrRegistePlayerCallback(void *PlayerCompletedCbFunc, void *PlayerInterruptedCbFunc, void *PlayerErrorCbFunc, void *PlayerBufferingCbFunc, void *PlayerSubtitleCbFunc, void *pUserData);
+
+bool   MpPlayerMgrCreate       (const char* szPath);
+bool   MpPlayerMgrDestroy      (void);
+
+bool   MpPlayerMgrRealize      (void);
+bool   MpPlayerMgrRealizeAsync(void *pPrepareCb, void *pUserData);
+
+bool   MpPlayerMgrUnrealize(void);
+
+bool   MpPlayerMgrPlay         (void);
+bool   MpPlayerMgrStop         (void);
+bool   MpPlayerMgrResume       (void);
+bool   MpPlayerMgrPause        (void);
+
+int    MpPlayerMgrGetPosition(void);
+void   MpPlayerMgrSetPosition(unsigned int nPos, void *pSeekCb, void *pUserData);
+void   MpPlayerMgrSetSubtitlePosition(unsigned int nPos);
+
+void   MpPlayerMgrSetMute(bool bMuteEnable);
+bool   MpPlayerMgrGetMute(void);
+
+bool   MpPlayerMgrSetSurroundFilters(int nSurround);
+
+
+int    MpPlayerMgrGetDuration(void);
+bool   MpPlayerMgrSetOverlayXid(void* pOverlayXid);
+bool   MpPlayerMgrSetEvasSinkID(void *pEvasSinkID);
+
+bool   MpPlayerMgrSetSoundPriority(void);
+int    MpPlayerMgrSetPlaySpeed(float nSpeedValue);
+int    MpPlayerMgrGetVideoWidthResolution(void);
+int    MpPlayerMgrGetVideoHeightResolution(void);
+bool   MpPlayerMgrSetSubtitle(char* szSubtitlePath);
+
+int    MpPlayerMgrSetDisplayArea(int nX, int nY, int nWidth, int nHeight);
+bool   MpPlayerMgrSetRotate(MpVideoRotation nRotation);
+bool   MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode);
+
+bool   MpPlayerMgrSetUseragentForStreaming(const char* szUserAgent);
+bool   MpPlayerMgrSetProxyAddressForStreaming(const char* szProxyAddress);
+bool   MpPlayerMgrSetCookieForStreaming(const char* szCookie);
+
+bool   MpPlayerMgrStartCapture();
+bool   MpPlayerMgrCaptureVideo(void *pCallbackFunc, void *pUserData);
+
+int    MpPlayerMgrGetBufferingPosition(void);
+bool   MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData);
+int    MpPlayerMgrGetFileStreamType(void);
+bool   MpPlayerMgrSetScaling(bool bScale);
+void MpPlayerMgrSetVolume(float volume);
+float MpPlayerMgrGetVolume(void);
+
+player_state_e MpPlayerMgrGetPlayerState(void);
+
+int MpPlayerMgrGetClosedCaptionCount(void);
+
+#endif
diff --git a/include/mp-video-progressbar.h b/include/mp-video-progressbar.h
new file mode 100755 (executable)
index 0000000..d861dba
--- /dev/null
@@ -0,0 +1,32 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_PROGRESS_BAR_CTRL_\r
+#define _VIDEO_PROGRESS_BAR_CTRL_\r
+\r
+\r
+void*  MpVideoProgressbarGetEdjHandle(void);\r
+void*  MpVideoProgressbarInit(void* pUserData);\r
+void   MpVideoProgressbarDestroy(void);\r
+void   MpVideoProgressbarCreateTimer(void* pUserData);\r
+void   MpVideoProgressbarDeleteTimer(void);\r
+void   MpVideoProgressbarUpdateDurationTime(char* szDurationTime);\r
+void   MpVideoProgressbarBeginOfStream(void *pUserData);\r
+void   MpVideoProgressbarReset(void* pUserData);\r
+void   MpVideoProgressbarSetSkipEvent(bool bSkip);\r
+\r
+#endif /* _VIDEO_PROGRESS_BAR_CTRL_ */\r
diff --git a/include/mp-video-service-ctrl.h b/include/mp-video-service-ctrl.h
new file mode 100644 (file)
index 0000000..470111e
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _VIDEO_SERVICE_CTRL_
+#define  _VIDEO_SERVICE_CTRL_
+
+
+typedef enum
+{
+       MP_ERROR_PLAYER_TYPE                                    = 0,
+       MP_NONE_VIEW_TYPE,
+       MP_VIDEO_PLAYER,
+       MP_VIDEO_PLAYER_SIMPLE,
+       MP_VIDEO_PLAYER_EMAIL,
+       MP_VIDEO_PLAYER_MMS,
+       MP_VIDEO_PLAYER_GALLERY,
+       MP_STREAMING_PLAYER,
+       MP_MAX_PLAYER_TYPE,
+}MpPlayerViewType;
+
+
+void MpVideoServiceCtrlReset(void);
+int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char** szMediaUri);
+
+
+int MpVideoServiceCtrlGetLatestTime(void);
+int MpVideoServiceCtrlGetPlayerTypeWithoutLog(void);
+int MpVideoServiceCtrlGetPlayerType(void);
+void MpVideoServiceCtrlSetPlayerType(int nSetPlayerType);
+int MpVideoServiceCtrlGetPrevPlayerType(void);
+void MpVideoServiceCtrlSetPrevPlayerType(int nSetPlayerType);
+char* MpVideoServiceCtrlGetCookieForStreaming(void);
+
+#endif //_VIDEO_SERVICE_CTRL_
diff --git a/include/mp-video-sound-path-ctrl.h b/include/mp-video-sound-path-ctrl.h
new file mode 100755 (executable)
index 0000000..4ae216e
--- /dev/null
@@ -0,0 +1,27 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _MP_VIDEO_SOUND_PATH_\r
+#define _MP_VIDEO_SOUND_PATH_\r
+\r
+\r
+bool   MpVideoSoundpathShow(void* pUserData);\r
+void   MpVideoSoundpathHide(void);\r
+\r
+bool   MpVideoSoundpathIsConnectOtherSoundpath(void);\r
+\r
+#endif // _MP_VIDEO_SOUND_PATH_
\ No newline at end of file
diff --git a/include/mp-video-streaming-ctrl.h b/include/mp-video-streaming-ctrl.h
new file mode 100755 (executable)
index 0000000..be59475
--- /dev/null
@@ -0,0 +1,39 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _STREAMING_PLAYER_H_\r
+#define _STREAMING_PLAYER_H_\r
+\r
+\r
+#ifdef USE_DNET\r
+int            MpVideoStreamingCtrlConnection(void* pUserData);\r
+int            MpVideoStreamingCtrlDisconnection(void* pUserData);\r
+int            MpVideoStreamingCtrlIsConnected(void);\r
+#else\r
+bool   MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress);\r
+bool   MpVideoStreamingCtrlGetProxy(char* szRetProxy);\r
+bool   MpVideoStreamingCtrlIsNetworkOn(void);\r
+int            MpVideoStreamingCtrlGetNetworkStatus(void);\r
+int            MpVideoStreamingCtrlGetWifiState();\r
+int            MpVideoStreamingCtrlGetCellularState();\r
+bool   MpVideoStreamingCtrlInit(void *pUserData);\r
+void   MpVideoStreamingCtrlDestroy(void *pUserData);\r
+\r
+#endif\r
+\r
+\r
+#endif /* _STREAMING_PLAYER_H_ */\r
diff --git a/include/mp-video-streaming-view.h b/include/mp-video-streaming-view.h
new file mode 100644 (file)
index 0000000..3f93ece
--- /dev/null
@@ -0,0 +1,52 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_STREAMING_VIEW_\r
+#define  _VIDEO_STREAMING_VIEW_\r
+\r
+\r
+typedef enum\r
+{\r
+       MP_STREAMING_VIEW_STATE_ACTIVATE                = 0,\r
+       MP_STREAMING_VIEW_STATE_UNACTIVATE,\r
+       MP_STREAMING_VIEW_STATE_MAX,\r
+}VideoStreamingViewState;\r
+\r
+typedef void (*ChangeStreamingViewCbFunc)(int nChangePlayerView, void* pUserData);\r
+\r
+void MpVideoStreamingViewPush(void* pNaviFrame, int nPlayerType, void* pUserData, ChangeStreamingViewCbFunc pChangeViewCb);\r
+void MpVideoStreamingViewPop(void* pNaviFrame, void* pUserData);\r
+void MpVideoStreamingViewDestroy(void* pUserData);\r
+\r
+void MpVideoStreamingViewInitAfterBeginOfStream(void* pUserData);\r
+void MpVideoStreamingViewUpdatePauseKey(void);\r
+void MpVideoStreamingViewUpdateResumeKey(void);\r
+void MpVideoStreamingViewShowControlPanel(void* pUserData);\r
+void MpVideoStreamingViewHideControlPanel(void* pUserData);\r
+void MpVideoStreamingViewActivate(void);\r
+void MpVideoStreamingViewUnactivate(void);\r
+void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide);\r
+void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate);\r
+bool MpVideoStreamingViewGetBufferingState(void);\r
+bool MpVideoStreamingViewIsTopView(void);\r
+void MpVideoStreamingViewShowNocontentImage(void *pUserData);\r
+void MpVideoStreamingViewHideNocontentImage(void);\r
+void   MpVideoStreamingViewPortrate(void);\r
+void   MpVideoStreamingViewLandscape(void);\r
+void MpVideoStreamingViewUpdateProgressBar(void *pUserData);\r
+\r
+#endif\r
diff --git a/include/mp-video-string-define.h b/include/mp-video-string-define.h
new file mode 100644 (file)
index 0000000..1c5febf
--- /dev/null
@@ -0,0 +1,166 @@
+/*\r
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_STRING_DEFINE_\r
+#define  _VIDEO_STRING_DEFINE_\r
+\r
+#include <app.h>\r
+\r
+#define MP_SYS_STRING                                                  "sys_string"\r
+#define        MP_STREAMING_PLAYER_STR                                 "Streaming player"\r
+#define MP_VPL_SOUND_ALIVE                                                     "Sound Alive"\r
+#define MP_VPL_ADD_TO_HOME                                                     _("IDS_AT_BUTTON_ADD_TO_HOME")\r
+#define MP_VIDEO_SOUND_PATH                                                    "Sound Path"\r
+\r
+\r
+\r
+\r
+/* SMTP Repeat mode string */\r
+#define MP_VPL_REPEAT_OFF                                                      "Stop after current "\r
+#define MP_VPL_REPEAT_ALL_OFF                                          "Stop after playing all "\r
+#define MP_VPL_REPEAT_ONE                                                      "Repeat the current "\r
+#define MP_VPL_REPEAT_ALL                                                      "Repeat all "\r
+\r
+\r
+#define MP_SHARE_MESSAGE                                                       (dgettext(MP_SYS_STRING, "IDS_COM_BODY_MESSAGE"))\r
+#define MP_SHARE_EMAIL                                                         (dgettext(MP_SYS_STRING, "IDS_COM_BODY_EMAIL"))\r
+#define MP_SHARE_BLUETOOTH                                                     (dgettext(MP_SYS_STRING, "IDS_COM_BODY_BLUETOOTH"))\r
+#define MP_SHARE_FTM                                                           (dgettext(MP_SYS_STRING, "IDS_COM_BODY_WI_FI"))\r
+#define MP_SHARE_FACEBOOK                                                      (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FACEBOOK"))\r
+#define MP_SHARE_YOUTUBE                                                       (dgettext(MP_SYS_STRING, "IDS_COM_BODY_YOU_TUBE"))\r
+#define MP_SHARE_ALLSHARE                                                      (dgettext(MP_SYS_STRING, "IDS_COM_BODY_ALLSHARE"))\r
+\r
+\r
+// SMTP video player string\r
+#define MP_VPL_UNABLE_TO_PLAY_VIDEO                                    "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"\r
+#define MP_VPL_HEADER_SHARE_VIDEO_ABB                          "IDS_VPL_HEADER_SHARE_VIDEO_ABB"\r
+#define MP_VPL_OPT_SET_AS                                                      "IDS_VPL_OPT_SET_AS"\r
+#define MP_VPL_POP_INVALID_STREAMING_DATA                      "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"\r
+#define MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT                    "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"\r
+#define MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT                    "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"\r
+#define MP_VPL_POP_UNSUPPORTED_FILE_TYPE                       "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"\r
+#define MP_VPL_SOUND_ALIVE_NORMAL                                      "IDS_VPL_OPT_NORMAL"\r
+#define MP_VPL_SOUND_ALIVE_VOICE                                       "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"\r
+#define MP_VPL_SOUND_ALIVE_MOVIE                                       "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"\r
+#define MP_VPL_SOUND_ALIVE_51CH                                                "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"\r
+#define MP_VPL_51CH_ONLY_EARPHONE                                      "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"\r
+#define MP_VPL_GPS_LATITUDE                                                    "IDS_VPL_BODY_LATITUDE"\r
+#define MP_VPL_GPS_LONGITUTD                                           "IDS_VPL_BODY_LONGITUDE"\r
+#define MP_VPL_TRIM                                                                    "IDS_VPL_SK3_TRIM"\r
+#define MP_VPL_SUBTITLES                                                       "IDS_VPL_OPT_SUBTITLES"\r
+#define MP_VPL_AUDIO_TRACK                                                     _("IDS_VPL_OPT_AUDIO_TRACK")\r
+#define MP_VPL_VIDEO_AUTO_OFF                                          _("IDS_VPL_HEADER_VIDEO_AUTO_OFF_ABB")\r
+#define MP_VPL_BODY_NORMAL                                                     _("IDS_VPL_BODY_NORMAL")\r
+#define MP_VPL_BODY_WARM                                                       _("IDS_VPL_BODY_WARM")\r
+#define MP_VPL_BODY_COLD                                                       _("IDS_VPL_BODY_COLD_M_COLOURTONE")\r
+#define MP_VPL_BODY_COLOR_TONE                                         _("IDS_VPL_BODY_COLOUR_TONE")\r
+#define MP_VPL_OUTDOOR_VISIBILITY                                      _("IDS_VPL_OPT_OUTDOOR_VISIBILITY")\r
+#define MP_VPL_BODY_AFTER_PD_HOURS                                     _("IDS_VPL_BODY_AFTER_PD_HOURS")\r
+#define MP_VPL_BODY_AFTER_PD_MINUTES                           _("IDS_VPL_BODY_AFTER_PD_MINUTES")\r
+#define MP_VPL_OPT_AFTER_1_HOUR_30_MIN                         _("IDS_VPL_OPT_AFTER_1_HOUR_30_MIN")\r
+#define MP_VPL_BODY_AFTER_1_HOUR                                       _("IDS_VPL_BODY_AFTER_1_HOUR")\r
+\r
+\r
+/* SMTP Subtitle option string */\r
+#define MP_VPL_SUBTITLE_SIZE_LARGE                                     _("IDS_VPL_BODY_LARGE")\r
+#define MP_VPL_SUBTITLE_SIZE_MEDIUM                                    _("IDS_VPL_BODY_MEDIUM")\r
+#define MP_VPL_SUBTITLE_SIZE_SMALL                                     _("IDS_VPL_BODY_SMALL")\r
+#define MP_VPL_SUBTITLE_SHOW                                           _("IDS_VPL_BODY_SUBTITLES_ON")\r
+#define MP_VPL_SUBTITLE_HIDE                                           _("IDS_VPL_BODY_SUBTITLES_OFF")\r
+#define MP_VPL_SUBTITLE_SIZE                                           (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE"))\r
+#define MP_VPL_SUBTITLE_LANGUAGE                                       (dgettext(MP_SYS_STRING, "IDS_COM_SK_LANGUAGE"))\r
+#define MP_VPL_SUBTITLE_SYNC                                           (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SYNCHRONIZE"))\r
+\r
+\r
+// SMTP others module string\r
+#define MP_BT_POP_FILEBROWSINGFAIL                                             "IDS_BT_POP_FILEBROWSINGFAIL"\r
+#define MP_BLUETOOTH_HEADSET_DISCONNECTED                              "IDS_DVBH_POP_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"\r
+#define MP_WGT_POP_ALLOW_TO_DELETE_FILE_Q                              "IDS_WGT_POP_ALLOW_TO_DELETE_FILE_Q"\r
+#define MP_EBOOK_BODY_LOADING_ING                                              "IDS_EBOOK_BODY_LOADING_ING"\r
+#define MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL   "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"\r
+\r
+//  SORT\r
+#define MP_VPL_SORT_BY_TITLE                                                   _("IDS_VPL_OPT_SORT_BY")\r
+#define MP_VPL_OPT_NAME_HA_TO_Z                                                        _("IDS_VPL_OPT_NAME_HA_TO_Z")\r
+#define MP_VPL_OPT_NAME_HZ_TO_A                                                        _("IDS_VPL_OPT_NAME_HZ_TO_A")\r
+#define MP_VPL_OPT_DATE_HMOST_RECENT                                   _("IDS_VPL_OPT_DATE_HMOST_RECENT")\r
+#define MP_VPL_OPT_DATE_HOLDEST                                                        _("IDS_VPL_OPT_DATE_HOLDEST")\r
+\r
+\r
+// Default system string\r
+#define MP_COM_POP_ERROR                                                       (dgettext(MP_SYS_STRING, "IDS_COM_POP_ERROR"))\r
+#define        MP_COM_BODY_LOW_BATTERY                                         (dgettext(MP_SYS_STRING, "IDS_COM_BODY_LOW_BATTERY"))\r
+#define MP_COM_BODY_DELETE                                                     (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DELETE"))\r
+#define MP_COM_BODY_DELETE_Q                                           (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETE_Q"))\r
+#define MP_COM_BODY_SELECT_ALL                                         (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SELECT_ALL"))\r
+#define MP_COM_POP_SELECTED                                                    (dgettext(MP_SYS_STRING, "IDS_COM_POP_SELECTED"))\r
+#define MP_COM_POP_DELETED                          (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETED"))\r
+#define MP_COM_SK_BACK                                                         (dgettext(MP_SYS_STRING, "IDS_COM_SK_BACK"))\r
+\r
+#define MP_COM_SK_YES                                                          (dgettext(MP_SYS_STRING, "IDS_COM_SK_YES"))\r
+#define MP_COM_SK_NO                                                           (dgettext(MP_SYS_STRING, "IDS_COM_SK_NO"))\r
+#define MP_COM_BUTTON_CANCEL                                           (dgettext(MP_SYS_STRING, "IDS_IDLE_BUTTON_CANCEL"))\r
+#define MP_COM_BUTTON_SHARE                                                    (dgettext(MP_SYS_STRING, "IDS_COM_BUTTON_SHARE"))\r
+#define MP_COM_BODY_SIZE                                                       (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE"))\r
+#define MP_COM_BODY_DETAILS_TITLE                                      (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS_TITLE"))\r
+#define MP_COM_BODY_FORMAT                                                     (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FORMAT"))\r
+#define MP_COM_POP_DATE                                                                (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DATE" ))\r
+#define MP_COM_BODY_SOUNDS                                                     (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS"))\r
+#define MP_IDLE_BODY_RESOLUTION                                                (dgettext(MP_SYS_STRING, "IDS_IDLE_BODY_RESOLUTION"))\r
+#define MP_COM_BODY_DETAILS                                                    (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS"))\r
+#define MP_VIDEO_POPUP_SHARE                                           (dgettext(MP_SYS_STRING, "IDS_COM_SK4_SHARE"))\r
+#define MP_COM_SEARCH                                                          (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SEARCH"))\r
+#define MP_COM_CLOSE                                                           (dgettext(MP_SYS_STRING, "IDS_COM_BODY_CLOSE"))\r
+\r
+#define MP_COM_SOUND_ALIVE                                                     (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS"))\r
+#define MP_COM_SETTINGS                                                                (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SETTINGS"))\r
+#define MP_COM_POP_FILE_NOT_FOUND                                      (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_FOUND"))\r
+#define MP_COM_POP_INVALID_URL                                         (dgettext(MP_SYS_STRING, "IDS_COM_POP_INVALID_URL"))\r
+#define MP_COM_POP_CONNECTION_FAILED                           (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_FAILED"))\r
+#define MP_COM_POP_FILE_NOT_EXIST                                      (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_EXIST"))\r
+#define MP_COM_POP_NO_VIDEOS                                           (dgettext(MP_SYS_STRING, "IDS_COM_BODY_NO_VIDEOS"))\r
+#define MP_COM_VIDEOS                                                          (dgettext(MP_SYS_STRING, "IDS_COM_BODY_VIDEOS"))\r
+#define MP_COM_FOLDER                                                          (dgettext(MP_SYS_STRING, "IDS_COM_POP_FOLDER"))\r
+#define MP_COM_CANCEL                                                          (dgettext(MP_SYS_STRING, "IDS_COM_SK_CANCEL"))\r
+#define MP_COM_DELETE                                                          (dgettext(MP_SYS_STRING, "IDS_COM_OPT_DELETE"))\r
+#define MP_COM_CONNECTION_FAIL                                         (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_ERROR"))\r
+#define MP_COM_REPEAT_MODE                                                     (dgettext(MP_SYS_STRING, "IDS_COM_BODY_REPEAT"))\r
+#define MP_COM_OPT_ADDED                                                       (dgettext(MP_SYS_STRING, "IDS_COM_OPT_ADDED"))\r
+#define MP_COM_BODY_GENERAL                                                    (dgettext(MP_SYS_STRING, "IDS_COM_BODY_GENERAL"))\r
+#define MP_COM_BODY_DISPLAY                                                    (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DISPLAY"))\r
+#define MP_COM_BODY_OFF                                                                (dgettext(MP_SYS_STRING, "IDS_COM_BODY_OFF"))\r
+#define MP_COM_RECORDED                                                                _("IDS_VPL_BODY_RECORDED")\r
+\r
+#define MP_VIDEO_CHAPTER_VIEW                                          _("IDS_VPL_HEADER_CHAPTER_PREVIEW_ABB")\r
+\r
+#define MP_VPL_SORT_BY                                                         "Sort by"\r
+#define MP_VPL_BOOKMARK_LIST_FULL                                      _("IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS")\r
+\r
+/* DRM POPUP */\r
+#define MP_VPL_DRM_INTERVAL_BASED_DAYS         _("You can use %s for %d days. Would you like to open it now?")\r
+#define MP_VPL_DRM_TIME_BASED_GET                      _("%s is about to be locked. Do you want to get more licenses?")\r
+#define MP_VPL_DRM_COUNT_BASED_OPEN_ONE                _("You have one more use of %s. Do you want to open it now?")\r
+#define MP_VPL_DRM_COUNT_BASED_OPEN_MANY       _("You have %d more uses of %s. Do you want to open it now?")\r
+#define MP_VPL_DRM_COUNT_BASED_ONE_MORE_GET    _("You have one more use of %s. Do you want to get more licenses?")\r
+#define MP_VPL_DRM_COUNT_BASED_NO_MORE_GET     _("You have no more use of %s. Do you want to get more licenses?")\r
+#define MP_VPL_DRM_UNLOCK                                      _("%s is currently locked. Do you want to unlock it now?")\r
+\r
+/*DV*/\r
+#define DV_BTN_LABEL_SEARCH                    (dgettext("sys_string", "IDS_COM_SK_SEARCH"))\r
+#define DV_BTN_LABEL_CANCEL                    (dgettext("sys_string", "IDS_COM_SK_CANCEL"))\r
+\r
+#endif //_VIDEO_STRING_DEFINE_\r
diff --git a/include/mp-video-subtitle-ctrl.h b/include/mp-video-subtitle-ctrl.h
new file mode 100755 (executable)
index 0000000..ac749a4
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#ifndef _MP_VIDEO_SUBTITLE_CTRL_
+#define _MP_VIDEO_SUBTITLE_CTRL_
+
+bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath);
+void *MpVideoSubtitleCtrlInit(void *pUserData, void *pParent);
+void MpVideoSubtitleCtrlDestroy(void);
+void MpVideoSubtitleCtrlUpdate(char *szTxt);
+
+bool MpVideoSubtitleCtrlIsExistSubtitle(void);
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUriPath);
+void MpVideoSubtitleCtrlSetLayoutShow(bool bShow);
+void MpVideoSubtitleCtrlSetSizeMode(int nSizeMode);
+int  MpVideoSubtitleCtrlGetSizeMode();
+void MpVideoSubtitleCtrlSetShowStatus(bool bShow);
+bool MpVideoSubtitleCtrlGetShowStatus();
+
+void MpVideoSubtitleCtrlSetRotate(int nRotateStatus);
+void MpVideoSubtitleCtrlSetLockScreen(bool bShow);
+
+#endif                         // _MP_VIDEO_SUBTITLE_CTRL_
+
diff --git a/include/mp-video-type-define.h b/include/mp-video-type-define.h
new file mode 100644 (file)
index 0000000..fe0ba94
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _VIDEO_TYPE_DEFINE_
+#define  _VIDEO_TYPE_DEFINE_
+
+
+typedef enum
+{
+       VIDEO_ROTATE_UNKNOWN                            = 0,
+       VIDEO_ROTATE_PORTRAIT_NORMAL,
+       VIDEO_ROTATE_PORTRAIT_REVERSE,
+       VIDEO_ROTATE_LANDSCAPE_NORMAL,
+       VIDEO_ROTATE_LANDSCAPE_REVERSE,
+}MpVideoRotateType;
+
+typedef enum
+{
+       MP_HTTP_STREAMING                                       = 0,
+       MP_RTSP_STREAMING,
+}MpProtocolType;
+
+typedef enum
+{
+       MP_DISPLAY_METHOD_LETTER_BOX            = 0,
+}MpDisplayMethod;
+
+typedef enum
+{
+       MP_SOUND_PATH_SPEAKER                           = 0,
+       MP_SOUND_PATH_EARJACK,
+       MP_SOUND_PATH_BLUETOOTH,
+       MP_SOUND_PATH_MAX,
+}MpSoundPathType;
+
+typedef enum
+{
+       MP_PLAYER_ERROR_NONE                    = 0,    // Successful
+       MP_PLAYER_ERROR_OUT_OF_MEMORY,                  // Out of memory
+       MP_PLAYER_ERROR_INVALID_PARAMETER,              // Invalid parameter
+       MP_PLAYER_ERROR_NO_SUCH_FILE,                   // No such file or directory 
+       MP_PLAYER_ERROR_INVALID_OPERATION,              // Invalid operation
+       MP_PLAYER_ERROR_SEEK_FAILED,                    // Seek operation failure
+       MP_PLAYER_ERROR_INVALID_STATE,                  // Invalid state
+       MP_PLAYER_ERROR_NOT_SUPPORTED_FILE,             // Not supported file format
+       MP_PLAYER_ERROR_INVALID_URI,                    // Invalid URI
+       MP_PLAYER_ERROR_SOUND_POLICY,                   // Sound policy error
+       MP_PLAYER_ERROR_CONNECTION_FAILED,              // Streaming connection failed 
+       MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED,   // Video capture failure 
+       MP_PLAYER_ERROR_UNKNOWN_ERROR,                  // unknown error.
+}MpPlayerErrorType;
+
+typedef enum
+{
+       MP_PLAYER_INTERRUPTED_COMPLETED  = 0,           // Interrupt completed
+       MP_PLAYER_INTERRUPTED_BY_OTHER_APP,                     // Interrupted by another application
+       MP_PLAYER_INTERRUPTED_BY_CALL,                          // Interrupted by incoming call
+       MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG,        // Interrupted by unplugging headphone
+       MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT,     // Interrupted by resource conflict
+       MP_PLAYER_INTERRUPTED_BY_ALARM,                         // Interrupted by alarm
+}MpPlayerInterrupteType;
+
+
+typedef enum
+{
+       MP_PLAYER_STATE_WAIT_FOR_RESUME         = -3,
+       MP_PLAYER_STATE_WAIT_FOR_PLAY           = -2,
+       MP_PLAYER_STATE_WAIT_FOR_RESPONSE       = -1,
+       MP_PLAYER_STATE_CLEAR                           = 0,
+       MP_PLAYER_STATE_PLAY,
+       MP_PLAYER_STATE_PAUSE,
+       MP_PLAYER_STATE_RESUME,
+       MP_PLAYER_STATE_STOP,
+       MP_PLAYER_STATE_PAUSE_BEFORE_PLAY,
+       MP_PLAYER_STATE_MAX
+}MpPlayerState;
+
+
+typedef enum
+{
+       MP_PLAYING_SPEED_NORMAL         = 1,
+       MP_PLAYING_SPEED_2X                     = 2,
+       MP_PLAYING_SPEED_3X                     = 3,
+       MP_PLAYING_SPEED_4X                     = 4,
+       MP_PLAYING_SPEED_5X                     = 5,
+       MP_PLAYING_SPEED_MAX            = MP_PLAYING_SPEED_5X,
+}MpVideoPlayingSpeedType;
+
+
+typedef enum
+{
+       MP_SUBTITLE_TYPE_SUB                            = 0,
+       MP_SUBTITLE_TYPE_SRT,
+       MP_SUBTITLE_TYPE_SMI,
+       MP_SUBTITLE_TYPE_MAX,
+}MpSubTitleType;
+
+
+typedef enum
+{
+       MP_NETWORK_CLOSE                                        = 0,
+       MP_NETWORK_ON,
+       MP_NETWORK_MAX,
+}MpNetworkConfig;
+
+
+typedef enum
+{
+       MP_NETWORK_TYPE_OFF                                     = 0,
+       MP_NETWORK_TYPE_CELLULAR,
+       MP_NETWORK_TYPE_WIFI,
+       MP_NETWORK_TYPE_MAX,
+}MpNetworkType;
+
+
+typedef enum
+{
+       MP_NETWORK_WIFI_OFF                                     = 0,
+       MP_NETWORK_WIFI_NOT_CONNECTED,
+       MP_NETWORK_WIFI_CONNECTED,
+       MP_NETWORK_WIFI_MAX,
+}MpNetworkWifiState;
+
+
+typedef enum
+{
+       MP_NETWORK_CELLULAR_ON                          = 0,
+       MP_NETWORK_CELLULAR_3G_OPTION_OFF,
+       MP_NETWORK_CELLULAR_ROAMING_OFF,
+       MP_NETWORK_CELLULAR_FLIGHT_MODE,
+       MP_NETWORK_CELLULAR_NO_SERVICE,
+       MP_NETWORK_CELLULAR_MAX,
+}MpNetworkCellularState;
+
+typedef enum
+{
+       MP_FILE_STREAM_TYPE_NOTHING                     = 0,
+       MP_FILE_STREAM_TYPE_VIDEO_AUDIO,
+       MP_FILE_STREAM_TYPE_AUDIO,
+       MP_FILE_STREAM_TYPE_VIDEO,
+       MP_FILE_STREAM_TYPE_MAX,
+}MpVideoFileStreamType;
+
+typedef enum
+{
+       MP_OPTION_TYPE_LOCAL = 0,
+       MP_OPTION_TYPE_MYFILE,
+       MP_OPTION_TYPE_EMAIL,
+       MP_OPTION_TYPE_WEB,
+       MP_OPTION_TYPE_MESSAGE,
+       MP_OPTION_TYPE_ALLSHARE,
+       MP_OPTION_TYPE_MAX,
+}MpOptionMenuType;
+
+#endif //_VIDEO_TYPE_DEFINE_
diff --git a/include/mp-video-value-define.h b/include/mp-video-value-define.h
new file mode 100755 (executable)
index 0000000..f25b10b
--- /dev/null
@@ -0,0 +1,505 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _VIDEO_VALUE_DEFINE_
+#define  _VIDEO_VALUE_DEFINE_
+
+#include <utilX.h>
+
+
+//PLAY_TIME_FORMAT
+#define PLAY_TIME_FORMAT "02u:%02u:%02u"
+
+
+//PLAY_TIME_ARGS
+#define PLAY_TIME_ARGS(t) \
+        (t) / (60 * 60), \
+        ((t) / 60) % 60, \
+        (t) % 60
+
+#define PLAY_TIME_LENGTH 9
+
+
+#define _EDJ(x) elm_layout_edje_get(x)
+
+
+#ifdef PREFIX
+#undef PREFIX
+#endif
+
+#ifdef LOCALEDIR
+#undef LOCALEDIR
+#endif
+
+#define PREFIX                                         "/usr/apps/org.tizen.video-player"
+#define EDJ_PATH                                       "/usr/apps/org.tizen.video-player/res/edje"
+#define LOCALEDIR                                      "/usr/apps/org.tizen.video-player/res/locale"
+
+
+#define VIDEO_CHAPTER_VIEW_DATA_DIR            "/opt/usr/media/.video_thumb"
+
+
+#define VIDEO_HEAD_ICON_ALLSHARE                       PREFIX"/res/images/icon/T01-2_icon_title_allshare.png"
+#define VIDEO_HEAD_ICON_SOUNDPATH                      PREFIX"/res/images/icon/T01-2_icon_title_soundpath.png"
+#define VIDEO_LIST_VIEW_ICON_FOLDER                    PREFIX"/res/images/icon/06_myfiles_list_folder.png"
+
+#define VIDEO_PLAYER_MORE_ICON_TRIM            PREFIX"/res/images/icon/T01-2_icon_popup_trim.png"
+#define VIDEO_PLAYER_MORE_ICON_SOUND_ALIVE     PREFIX"/res/images/icon/T01-2_icon_popup_sound_allive.png"
+#define VIDEO_PLAYER_MORE_ICON_SUBTITLE                PREFIX"/res/images/icon/T01-2_icon_popup_subtitle.png"
+#define VIDEO_PLAYER_MORE_ICON_REPEAT          PREFIX"/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png"
+#define VIDEO_PLAYER_MORE_ICON_AUDIO_TRACK     PREFIX"/res/images/icon/T01-2_icon_popup_sound_audio_track.png"
+#define VIDEO_PLAYER_MORE_ICON_SETTING         PREFIX"/res/images/icon/T01-2_icon_popup_sound_settings.png"
+#define VIDEO_PLAYER_MORE_ICON_ADD_TO_HOME     PREFIX"/res/images/icon/T01_controlbar_icon_add_to_home.png"
+
+
+#define VIDEO_PLAYER_TOOLBAR_ICON_VIDEOS       PREFIX"/res/images/toolbar/T01-2_controlbar_icon_video.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_RECORDED     PREFIX"/res/images/toolbar/T01-2_controlbar_icon_recorded.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_FOLDER       PREFIX"/res/images/toolbar/T01-2_controlbar_icon_folder.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_ASF          PREFIX"/res/images/toolbar/T01-2_controlbar_icon_near_device.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_BACK         PREFIX"/res/images/toolbar/T01-2_btn_toolbar_back.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_VOLUME       PREFIX"/res/images/toolbar/T01-2_btn_toolbar_volum.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_CANCEL       PREFIX"/res/images/toolbar/T01-2_icon_toolbar_cancel.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_DELETE       PREFIX"/res/images/toolbar/T01-2_icon_toolbar_delete.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_DONE         PREFIX"/res/images/toolbar/T01-2_icon_toolbar_done.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_SETTING      PREFIX"/res/images/toolbar/T01-2_icon_toolbar_setting.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_SORT         PREFIX"/res/images/toolbar/T01-2_icon_toolbar_sort_by.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_SEARCH       PREFIX"/res/images/toolbar/T02_controlbar_icon_search.png"
+
+
+#define VIDEO_PLAYER_MAIN_EDJ                          EDJ_PATH"/main.edj"
+#define VIDEO_PLAYER_BOOKMARK_EDJ                      EDJ_PATH"/bookmark.edj"
+#define VIDEO_PLAYER_BOOKMARK_ITEM_EDJ                 EDJ_PATH"/bookmark_item.edj"
+#define VIDEO_PLAYER_CONTROL_EDJ                       EDJ_PATH"/control.edj"
+#define VIDEO_PLAYER_PANEL_EDJ                         EDJ_PATH"/panel.edj"
+#define VIDEO_PLAYER_PROGRESS_EDJ                      EDJ_PATH"/progress.edj"
+#define VIDEO_PLAYER_TRIM_EDJ                          EDJ_PATH"/trim.edj"
+#define VIDEO_PLAYER_TRIM_ITEM_EDJ                     EDJ_PATH"/trim_item.edj"
+#define VIDEO_PLAYER_PROGRESS_TRIM_EDJ                 EDJ_PATH"/progress_trim.edj"
+#define VIDEO_PLAYER_ADD_TAG                           EDJ_PATH"/add_tag.edj"
+#define VIDEO_PLAYER_ANIMATION_EDJ                     EDJ_PATH"/animation.edj"
+#define VIDEO_PLAYER_DETAIL_EDJ                                EDJ_PATH"/detail.edj"
+#define VIDEO_PLAYER_SUBTITLE_EDJ                      EDJ_PATH"/subtitle.edj"
+#define VIDEO_PLAYER_SUBTITLE_SYNC_EDJ                 EDJ_PATH"/subtitle_sync.edj"
+#define VIDEO_PLAYER_LISTVIEW_EDJ                      EDJ_PATH"/listview.edj"
+#define VIDEO_PLAYER_MULTI_WIN_EDJ                     EDJ_PATH"/multi_win.edj"
+#define VIDEO_PLAYER_SETTING_EDJ                       EDJ_PATH"/setting.edj"
+#define VIDEO_PLAYER_LANDSCAPE_THUMB_EDJ       EDJ_PATH"/landscape_thumbnail.edj"
+#define VIDEO_PLAYER_CHAPTER_VIEW_EDJ          EDJ_PATH"/vp-chapter-view.edj"
+#define VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ         EDJ_PATH"/vp-speedbox-popup.edj"
+#define VIDEO_PLAYER_VOLUME_POPUP_EDJ          EDJ_PATH"/vp-volume-popup.edj"
+
+
+
+#define VIDEO_CUSTOM_THEME                             EDJ_PATH"/vp-custom-winset-style.edj"
+#define VIDEO_PLAYER_OPTION_BUTTON_EDJ                 EDJ_PATH"/option_button.edj"
+#define VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ             EDJ_PATH"/popup_progressbar.edj"
+
+#define VIDEO_PLAYER_SEARCH_VIEW_LAYOUT_EDJ            EDJ_PATH"/search-view-layout.edj"
+
+
+#define MAIN_EDJ_GROUP                                 "main"
+#define CONTROL_EDJ_GROUP                              "control"
+#define PROGRESS_EDJ_GROUP                             "progress"
+#define BOOKMARK_EDJ_GROUP                             "bookmark"
+#define BOOKMARK_ITEM_EDJ_GROUP                                "bookmark.item"
+#define BOOKMARK_REMOVE_EDJ_GROUP                      "bookmark.end"
+#define TRIM_EDJ_GROUP                                 "trim.control"
+#define TRIM_ITEM_EDJ_GROUP                            "trim.item"
+#define CHAPTER_VIEW_EDJ_GROUP                         "chapter"
+#define SPEEDBOX_EDJ_GROUP                             "speedbox"
+#define VOLUME_EDJ_GROUP                               "volume"
+
+#define PANEL_EDJ_GROUP                                        "panel"
+#define        FAVORITE_EDJ_GROUP                              "favorite"
+#define ANIMATION_EDJ_GROUP                            "animation"
+#define DETAIL_EDJ_GROUP                               "detail"
+#define SUBTITLE_EDJ_GROUP                             "subtitle"
+#define SUBTITLE_SYNC_EDJ_GROUP                                "subtitle.sync"
+#define PANEL_BUTTON_EDJ_GROUP                         "panel.button"
+#define OPTION_EDJ_GROUP                               "option"
+#define LISTVIEW_EDJ_GROUP                             "listview"
+#define MULTIWIN_EDJ_GROUP                             "mw"
+#define SETTING_EDJ_GROUP                              "setting"
+#define LANDSCAPE_THUMB_EDJ_GROUP              "landscape.thumb"
+
+#define SEARCH_VIEW_LAYOUT_GROUP                       "video-player.search-view.layout"
+
+#define SWALLOW_MAIN_CONTROL                           "main.panel"
+#define SWALLOW_MAIN_BOOKMARK                          "main.bookmark"
+#define SWALLOW_MAIN_ANIMATION                         "main.animation"
+#define SWALLOW_MAIN_PANEL_BUTTON                      "main.panel.button"
+#define SWALLOW_MAIN_OPTION_BUTTON                     "main.option.button"
+#define SWALLOW_SETTING_LISTVIEW                       "setting.list"
+
+
+#define SWALLOW_BOOKMARK_GRID                          "bookmark.swallow"
+
+#define SWALLOW_PANEL_CONTROL                          "panel.control"
+#define SWALLOW_PANEL_PROGRESS_BAR                     "panel.progress"
+
+#define SWALLOW_DETAIL_LIST                            "detail.list"
+
+#define SWALLOW_TRIM_THUMBNAIL                         "trim.control.thumb"
+
+#define PART_BUTTON_ICON                               "icon"
+
+
+#define MAIN_SPEED_TEXT                                        "main.speedbox.txt"
+#define SUBTITLE_TEXT                                  "subtitle.txt"
+
+
+#define SIGNAL_CONTROL_PART_PLAY_BUTTON                        "control.play.button"
+#define SIGNAL_CONTROL_PART_BACK_BUTTON                        "control.back.button"
+#define SIGNAL_CONTROL_PART_VOL_BUTTON                 "control.volume.button"
+#define SIGNAL_CONTROL_PART_MUTE_BUTTON                        "control.volume.mute.button"
+
+#define SIGNAL_CONTROL_PART_SOUNDPATH_BUTTON           "control.soundpath.button"
+#define SIGNAL_CONTROL_PART_SCREENSIZE_BUTTON          "control.screensize.button"
+#define SIGNAL_CONTROL_PART_FF_BUTTON                  "control.normal.ff.button"
+#define SIGNAL_CONTROL_PART_REW_BUTTON                 "control.normal.rew.button"
+#define SIGNAL_CONTROL_PART_TRIM_FF_BUTTON             "control.trim.ff.button"
+#define SIGNAL_CONTROL_PART_TRIM_REW_BUTTON            "control.trim.rew.button"
+
+#define PART_CONTROL_TRIM_DONE_BUTTON                  "control.trim.done.button"
+#define PART_CONTROL_TRIM_CANCEL_BUTTON                        "control.trim.cancel.button"
+#define PART_CONTROL_SPEED_BOX_REW                     "control.normal.rew.speed.swallow"
+#define PART_CONTROL_SPEED_BOX_FF                      "control.normal.ff.speed.swallow"
+
+#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH           "hidden.button.panel.soundpath"
+#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE            "hidden.button.panel.allshare"
+
+#define PART_PANEL_BUTTON_SA                           "panel.button.sa"
+#define PART_PANEL_BUTTON_REPEAT                       "panel.button.repeat"
+
+#define PART_BOOKMARK_ADD                              "bookmark.add"
+#define PART_BOOKMARK_DEL                              "bookmark.end.btn"
+
+#define SIGNAL_VOLUME_PORTRAIT_MODE                    "signal.volume.potrait.mode"
+#define SIGNAL_VOLUME_LANDSCAPE_MODE                   "signal.volume.landscape.mode"
+
+#define SIGNAL_SPEEDBOX_SET_MODE_1                     "signal.speedbox.set.mode.1"
+#define SIGNAL_SPEEDBOX_SET_MODE_2                     "signal.speedbox.set.mode.2"
+#define SIGNAL_SPEEDBOX_SET_MODE_3                     "signal.speedbox.set.mode.3"
+
+#define SIGNAL_SPEEDBOX_SHOW                           "signal.speedbox.visible.on"
+#define SIGNAL_SPEEDBOX_HIDE                           "signal.speedbox.visible.off"
+
+#define SIGNAL_CONTROL_MODE_NORMAL                     "signal.control.mode.normal"
+#define SIGNAL_CONTROL_MODE_BOOKMARK                   "signal.control.mode.bookmark"
+#define SIGNAL_CONTROL_MODE_TRIM                       "signal.control.mode.trim"
+#define SIGNAL_CONTROL_MODE_STREAMING                  "signal.control.mode.streaming"
+#define SIGNAL_CONTROL_MODE_DLNA                       "signal.control.mode.dlna"
+#define SIGNAL_CONTROL_MODE_VISIBLE_OFF                        "signal.control.mode.visible.off"
+#define SIGNAL_CONTROL_BACK_BUTTON_DOWN                        "signal.control.back.button.up"
+
+#define SIGNAL_CONTROL_VOL_BUTTON_DOWN                 "signal.control.volume.button.down"
+#define SIGNAL_CONTROL_VOL_BUTTON_UP                   "signal.control.volume.button.up"
+
+#define SIGNAL_CONTROL_MUTE_BUTTON_DOWN                        "signal.control.volume.mute.button.down"
+#define SIGNAL_CONTROL_MUTE_BUTTON_UP                  "signal.control.volume.mute.button.up"
+
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_DOWN           "signal.control.soundpath.button.down"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UP             "signal.control.soundpath.button.up"
+#define SIGNAL_CONTROL_SCREENSIZE_NORMAL               "signal.control.screensize.normal"
+#define SIGNAL_CONTROL_SCREENSIZE_EXPAND               "signal.control.screensize.expand"
+#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN           "signal.control.normal.ff.button.down"
+#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP             "signal.control.normal.ff.button.up"
+#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED                "signal.control.normal.ff.button.clicked"
+#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN          "signal.control.normal.rew.button.down"
+#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP            "signal.control.normal.rew.button.up"
+#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED               "signal.control.normal.rew.button.clicked"
+#define SIGNAL_CONTROL_NORMAL_FF_STEP                  "signal.control.normal.ff.button.step"
+#define SIGNAL_CONTROL_NORMAL_REW_STEP                 "signal.control.normal.rew.button.step"
+#define SIGNAL_CONTROL_NORMAL_FF_LANDSCAPE_STEP                "signal.control.normal.ff.button.landscape.step"
+#define SIGNAL_CONTROL_NORMAL_REW_LANDSCAPE_STEP       "signal.control.normal.rew.button.landscape.step"
+#define SIGNAL_CONTROL_TRIM_FF_STEP                    "signal.control.trim.ff.button.step"
+#define SIGNAL_CONTROL_TRIM_REW_STEP                   "signal.control.trim.rew.button.step"
+
+#define SIGNAL_PANEL_BUTTON_SA_DOWN                    "signal.panel.button.sa.down"
+#define SIGNAL_PANEL_BUTTON_SA_UP                      "signal.panel.button.sa.up"
+#define SIGNAL_PANEL_BUTTON_REPEAT_DOWN                        "signal.panel.button.repeat.down"
+#define SIGNAL_PANEL_BUTTON_REPEAT_UP                  "signal.panel.button.repeat.up"
+
+#define SIGNAL_BOOKMARK_ADD_DOWN                       "signal.bookmark.add.down"
+#define SIGNAL_BOOKMARK_ADD_UP                         "signal.bookmark.add.up"
+
+#define SIGNAL_BOOKMARK_EXPAND                         "signal.bookmark.expand"
+#define SIGNAL_BOOKMARK_NORMAL                         "signal.bookmark.normal"
+#define SIGNAL_BOOKMARK_DEL_DOWN                       "signal.bookmark.end.btn.down"
+
+#define SIGNAL_CONTROL_TRIM_DONE_BUTTON_DOWN           "signal.control.trim.done.button.down"
+#define SIGNAL_CONTROL_TRIM_CANCEL_BUTTON_DOWN         "signal.control.trim.cancel.button.down"
+
+#define SIGNAL_CONTROL_TRIM_FF_BUTTON_DOWN             "signal.control.trim.ff.button.down"
+#define SIGNAL_CONTROL_TRIM_FF_BUTTON_UP               "signal.control.trim.ff.button.up"
+#define SIGNAL_CONTROL_TRIM_REW_BUTTON_DOWN            "signal.control.trim.rew.button.down"
+#define SIGNAL_CONTROL_TRIM_REW_BUTTON_UP              "signal.control.trim.rew.button.up"
+
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_ACTIVE         "signal.control.soundpath.button.active"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UNACTIVE       "signal.control.soundpath.button.unactive"
+
+#define PART_OPTION_SCREEN_SIZE                                "option.screensize"
+#define PART_OPTION_SHARE                              "option.share"
+#define PART_OPTION_BOOKMARK                           "option.bookmark"
+#define        PART_OPTION_MULTIWIN                            "option.multiwin"
+#define PART_OPTION_MORE                               "option.more"
+#define PART_OPTION_SOUND_ALIVE                                "option.sa"
+#define PART_OPTION_TRIM                               "option.trim"
+#define PART_OPTION_REPEAT                             "option.repeat"
+#define PART_OPTION_CONNECT_INFO                       "option.connectinfo"
+
+#define SIGNAL_OPTION_SCREEN_SIZE_DOWN                 "signal.option.screensize.down"
+#define SIGNAL_OPTION_SHARE_DOWN                       "signal.option.share.down"
+#define SIGNAL_OPTION_BOOKMARK_DOWN                    "signal.option.bookmark.down"
+#define SIGNAL_OPTION_MULTIWIN_UP                      "signal.option.multiwin.up"
+#define SIGNAL_OPTION_MORE_DOWN                                "signal.option.more.down"
+#define SIGNAL_OPTION_SOUND_ALIVE_DOWN                 "signal.option.sa.down"
+#define SIGNAL_OPTION_TRIM_DOWN                                "signal.option.trim.down"
+#define SIGNAL_OPTION_REPEAT_DOWN                      "signal.option.repeat.down"
+#define SIGNAL_OPTION_CONNECT_INFO_DOWN                        "signal.option.connectinfo.down"
+
+#define SIGNAL_LAYOUT_PIXMAP_BG_SHOW                   "signal.layout.pixmap.bg.show"
+#define SIGNAL_LAYOUT_PIXMAP_BG_HIDE                   "signal.layout.pixmap.bg.hide"
+
+#define SIGNAL_LAYOUT_INDICATOR_SHOW                   "signal.layout.indicator.show"
+#define SIGNAL_LAYOUT_INDICATOR_HIDE                   "signal.layout.indicator.hide"
+
+#define PART_MW_CLOSE                                  "mw.close"
+#define PART_MW_PANEL_HIDE                             "mw.panel.hide"
+#define PART_MW_PANEL_SHOW                             "mw.panel.show"
+#define PART_MW_FULL_SIZE                              "mw.full.size"
+#define PART_MW_REW                                    "mw.control.rew"
+#define PART_MW_PLAY                                   "mw.control.play"
+#define PART_MW_PAUSE                                  "mw.control.pause"
+#define PART_MW_FF                                     "mw.control.ff"
+#define PART_MW_RESIZE                                 "mw.resize"
+
+#define SIGNAL_CONTORL_SHOW_FINISH                     "signal.control.show.finish"
+#define SIGNAL_CONTORL_HIDE_FINISH                     "signal.control.hide.finish"
+
+#define SIGNAL_NAVIFRAME_TITLE_SHOW                    "elm,state,title,show"
+#define SIGNAL_NAVIFRAME_TITLE_HIDE                    "elm,state,title,hide"
+
+#define SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW              "signal.main.control.portrait.show"
+#define SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW             "signal.main.control.landscape.show"
+
+#define SIGNAL_MAIN_CONTROL_NORMAL_HIDE                        "signal.main.control.hide"
+#define SIGNAL_MAIN_CONTROL_LANDSCAPE_BOOKMAKR_HIDE    "signal.main.control.hide.with.bookmark"
+
+#define SIGNAL_MW_CLOSE_CLICKED                                "signal.mw.close.clicked"
+#define SIGNAL_MW_PANEL_HIDE_CLICKED                   "signal.mw.panel.hide.clicked"
+#define SIGNAL_MW_PANEL_SHOW_CLICKED                   "signal.mw.panel.show.clicked"
+#define SIGNAL_MW_FULL_SIZE_CLICKED                    "signal.mw.full.size.clicked"
+#define SIGNAL_MW_REW_CLICKED                          "signal.mw.control.rew.clicked"
+#define SIGNAL_MW_PLAY_CLICKED                         "signal.mw.control.play.clicked"
+#define SIGNAL_MW_PAUSE_CLICKED                                "signal.mw.control.pause.clicked"
+#define SIGNAL_MW_FF_CLICKED                           "signal.mw.control.ff.clicked"
+#define SIGNAL_MW_RESIZE_DOWN                          "signal.mw.resize.down"
+
+#define SIGNAL_MW_HIDE_CONTROL                         "signal.mw.hide.control"
+#define SIGNAL_MW_SHOW_CONTROL                         "signal.mw.show.control"
+
+#define SIGNAL_MW_SET_PAUSE_STATUS                     "signal.mw.set.pause.status"
+#define SIGNAL_MW_SET_PLAY_STATUS                      "signal.mw.set.play.status"
+
+#define SIGNAL_MW_PIXMAP_SHOW                          "signal.mw.image.show"
+#define SIGNAL_MW_PIXMAP_HIDE                          "signal.mw.image.hide"
+
+#define SIGNAL_MW_PIXMAP_ALPHA_SET                     "signal.mw.image.alpha.set"
+#define SIGNAL_MW_PIXMAP_ALPHA_UNSET                   "signal.mw.image.alpha.unset"
+
+#define SIGNAL_OPTION_SELECT_BG_CLEAR                  "signal.option.select.bg.clear"
+
+#define SIGNAL_OPTION_SCREEN_SIZE_NORMAL               "signal.option.screensize.normal"
+#define SIGNAL_OPTION_SCREEN_SIZE_FULL                 "signal.option.screensize.full"
+#define SIGNAL_OPTION_SCREEN_SIZE_ORIGIN               "signal.option.screensize.origin"
+
+#define SIGNAL_OPTION_REPEAT_ON                                "signal.option.repeat.on"
+#define SIGNAL_OPTION_REPEAT_OFF                       "signal.option.repeat.off"
+
+#define SIGNAL_OPTION_MODE_LOCAL                       "signal.option.mode.local"
+#define SIGNAL_OPTION_MODE_MYFILE                      "signal.option.mode.myfile"
+#define SIGNAL_OPTION_MODE_EMAIL                       "signal.option.mode.email"
+#define SIGNAL_OPTION_MODE_WEB                         "signal.option.mode.web"
+#define SIGNAL_OPTION_MODE_MESSAGE                     "signal.option.mode.message"
+#define SIGNAL_OPTION_MODE_ALLSHARE                    "signal.option.mode.allshare"
+
+#define SIGNAL_PANEL_BUTTON_REPEAT_OFF                 "signal.panel.button.repeat.off"
+#define SIGNAL_PANEL_BUTTON_REPEAT_ONE                 "signal.panel.button.repeat.one"
+#define SIGNAL_PANEL_BUTTON_REPEAT_ALL                 "signal.panel.button.repeat.all"
+
+#define SIGNAL_NAVIFRAME_PORTRATE_MODE                 "signal.naviframe.portrate.mode"
+#define SIGNAL_NAVIFRAME_LANDSCAPE_MODE                        "signal.naviframe.landscape.mode"
+
+#define SIGNAL_MAIN_PORTRATE_MODE                      "signal.main.portrate.mode"
+#define SIGNAL_MAIN_LANDSCAPE_MODE                     "signal.main.landscape.mode"
+#define SIGNAL_MAIN_TRIM_MODE                          "signal.main.trim.mode"
+
+#define SIGNAL_MAIN_LANDSCAPE_BOOKMAKR_SHOW            "signal.main.landscape.bookmark.show"
+#define SIGNAL_MAIN_LANDSCAPE_BOOKMAKR_HIDE            "signal.main.landscape.bookmark.hide"
+
+#define SIGNAL_PANEL_PORTRATE_MODE                     "signal.panel.portrate.mode"
+#define SIGNAL_PANEL_LANDSCAPE_MODE                    "signal.panel.landscape.mode"
+#define SIGNAL_PANEL_TRIM_MODE                         "signal.panel.trim.mode"
+
+#define SIGNAL_PROGRESS_PORTRATE_MODE                  "signal.progress.portrate.mode"
+#define SIGNAL_PROGRESS_LANDSCAPE_MODE                 "signal.progress.landscape.mode"
+
+#define SIGNAL_PROGRESS_POINTER_SHOW                   "signal.progress.pointer.show"
+#define SIGNAL_PROGRESS_POINTER_HIDE                   "signal.progress.pointer.hide"
+
+#define SIGNAL_PROGRESS_ADJUSTMENT_SHOW                        "signal.progress.adjustment.show"
+#define SIGNAL_PROGRESS_ADJUSTMENT_HIDE                        "signal.progress.adjustment.hide"
+
+#define SIGNAL_CONTROL_PORTRATE_MODE                   "signal.control.portrate.mode"
+#define SIGNAL_CONTROL_LANDSCAPE_MODE                  "signal.control.landscape.mode"
+
+#define SIGNAL_CONTROL_STREAMING_PORTRATE_MODE         "signal.control.streaming.portrate.mode"
+#define SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE                "signal.control.streaming.landscape.mode"
+
+#define SIGNAL_CONTROL_SET_MUTE                                "signal.control.volume.set.mute"
+#define SIGNAL_CONTROL_UNSET_MUTE                      "signal.control.volume.unset.mute"
+
+
+// Callback signals.
+#define SIGNAL_CONTROL_PLAY_BUTTON_DOWN                        "signal.control.play.button.down"
+#define SIGNAL_CONTROL_PLAY_BUTTON_UP                  "signal.control.play.button.up"
+#define SIGNAL_CONTROL_PLAY_PAUSE_PRESS                        "signal.control.play.pause.press"
+#define SIGNAL_CONTROL_PLAY_RESUME_PRESS               "signal.control.play.resume.press"
+
+// Emit signals.
+#define SIGNAL_CONTROL_PLAY_RESUME                     "signal.control.play.resume"
+#define SIGNAL_CONTROL_PLAY_PAUSE                      "signal.control.play.pause"
+
+#define SIGNAL_MAIN_MUTE_SHOW                          "signal.main.mute.show"
+#define SIGNAL_MAIN_MUTE_HIDE                          "signal.main.mute.hide"
+
+#define SIGNAL_MAIN_NOCONTENTS_SHOW                    "signal.main.nocontents.show"
+#define SIGNAL_MAIN_NOCONTENTS_HIDE                    "signal.main.nocontents.hide"
+
+#define SIGNAL_MAIN_SPEEDBOX_SHOW                      "signal.main.speedbox.show"
+#define SIGNAL_MAIN_SPEEDBOX_HIDE                      "signal.main.speedbox.hide"
+
+#define SIGNAL_MAIN_SCREEN_TOUCH_TOGGLE                        "main.screen.touch.toggle"
+#define SIGNAL_MAIN_ANIMATION_SHOW                     "signal.main.animation.show"
+#define SIGNAL_MAIN_ANIMATION_HIDE                     "signal.main.animation.hide"
+
+#define SIGNAL_ANIMATION_IMAGE_LOADING                 "signal.loading.image.step"
+
+#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_SHOW      "signal.hidden.button.panel.soundpath.show"
+#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_HIDE      "signal.hidden.button.panel.soundpath.hide"
+#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE_SHOW       "signal.hidden.button.panel.allshare.show"
+#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE_HIDE       "signal.hidden.button.panel.allshare.hide"
+
+#define SIGNAL_SUBTITLE_PORTRATE_MODE                  "signal.subtitle.portrate.mode"
+#define SIGNAL_SUBTITLE_LANDSCAPE_MODE                 "signal.subtitle.landscape.mode"
+
+#define SIGNAL_SUBTITLE_TXT_SHOW                       "signal.subtitle.txt.show"
+#define SIGNAL_SUBTITLE_TXT_HIDE                       "signal.subtitle.txt.hide"
+
+#define SIGNAL_SUBTITLE_LAYOUT_SHOW                    "signal.subtitle.layout.show"
+#define SIGNAL_SUBTITLE_LAYOUT_HIDE                    "signal.subtitle.layout.hide"
+
+#define SIGNAL_SUBTITLE_SIZE_SMALL                     "signal.subtitle.size.small"
+#define SIGNAL_SUBTITLE_SIZE_MEDIUM                    "signal.subtitle.size.medium"
+#define SIGNAL_SUBTITLE_SIZE_LARGE                     "signal.subtitle.size.large"
+
+#define SIGNAL_SUBTITLE_SYNC_SHOW                      "signal.subtitle.sync.show"
+#define SIGNAL_SUBTITLE_SYNC_HIDE                      "signal.subtitle.sync.hide"
+
+
+#define PART_SUBTITLE_SYNC_SLOW_BUTTON                 "subtitle.sync.slow.button"
+#define PART_SUBTITLE_SYNC_FAST_BUTTON                 "subtitle.sync.fast.button"
+#define PART_SUBTITLE_SYNC_TXT                         "subtitle.sync.txt"
+
+#define SIGNAL_SUBTITLE_SYNC_SLOW_DOWN                 "signal.subtitle.sync.slow.button.down"
+#define SIGNAL_SUBTITLE_SYNC_FAST_DOWN                 "signal.subtitle.sync.fast.button.down"
+
+
+#define SIGNAL_LOCKSCREEN_SHOW                         "signal.lockscreen.show"
+#define SIGNAL_LOCKSCREEN_HIDE                         "signal.lockscreen.hide"
+
+
+#define SIGNAL_LISTVIEW_PORTRAIT_PREVIEW_SHOW          "signal.listview.preview.show"
+#define SIGNAL_LISTVIEW_PORTRAIT_PREVIEW_HIDE          "signal.listview.preview.hide"
+
+#define SIGNAL_LISTVIEW_SELECTION_INFO_SHOW                    "signal.listview.selection.info.show"
+#define SIGNAL_LISTVIEW_SELECTION_INFO_HIDE                    "signal.listview.selection.info.hide"
+
+#define SIGNAL_LANDSCAPE_THUMB_PREVIEW_SHOW                    "signal.landscape.thumb.preview.show"
+#define SIGNAL_LANDSCAPE_THUMB_PREVIEW_HIDE                    "signal.landscape.thumb.preview.hide"
+
+
+
+#define TAG_FAVOURITES                                 "Favourites"
+#define PACKAGE                                                "video-player"
+#define PAUSE_KEY                                      "XF86AudioPause"
+#define PLAY_KEY                                       "XF86AudioPlay"
+#define STOP_KEY                                       "XF86AudioStop"
+#define NEXT_KEY                                       "XF86AudioNext"
+#define PREV_KEY                                       "XF86AudioPrev"
+#define FORWARD_KEY                                    "XF86AudioForward"
+#define REWIND_KEY                                     "XF86AudioRewind"
+#define END_KEY                                                KEY_END
+#define HOME_KEY                                       KEY_SELECT
+#define KEY_CANCLE                                     KEY_CANCEL
+#define POWER_KEY                                      "XF86PowerOff"
+
+#define VOLUME_DOWN_KEY                                        KEY_VOLUMEDOWN
+#define VOLUME_UP_KEY                                  KEY_VOLUMEUP
+
+#define VOLUME_MUTE                                    0
+#define KEY_GRAB_SHARED                                        SHARED_GRAB
+#define KEY_GRAB_EXCLUSIVE                             EXCLUSIVE_GRAB
+#define KEY_GRAB_TOP_POSITION                          TOP_POSITION_GRAB
+#define KEY_GRAB_OR_EXCLUSIVE                          OR_EXCLUSIVE_GRAB
+#define STR_LEN_MAX                                    4096 * 3
+#define SVC_LEN_MAX                                    2048
+
+#define _WIFI_MODE_                                    1
+#define _3G_MODE_                                      2
+#define USE_STREAMING_ANI                              1
+#define LONG_PRESS_INTERVAL                            1.0
+#define DOUBLE_CLICK_TIME                              0.2
+
+#define        SCREEN_TOUCH_TOGGLE_AREA_Y_START                0.065
+#define        SCREEN_TOUCH_TOGGLE_AREA_Y_END                  0.78
+
+#define        TAG_LIST_SIZE                                   256
+
+#define ANIMATION_TIMER_INTERVAL                       0.05
+#define ANIMATION_MAX_COUNT                            30
+
+#define BOOSTER_STEP_DISTANCE                          99
+#define TRIM_DETAIL_STEP_DISTANCE                      30
+
+#define SIGNAL_TEXT_MAX_LEN                            64
+#define CAPTION_TEXT_MAX_LEN                           16
+#define STR_UUID_LEN_MAX                               37
+
+#define DEFAULT_SCALE_WIDTH                            720
+#define DEFAULT_SCALE_HEIGHT                           1280
+
+#define DEFAULT_MW_WIDTH                               496
+#define DEFAULT_MW_HEIGHT                              286
+
+#define VIDEO_ICON_WIDTH                               168
+#define VIDEO_ICON_HEIGHT                              124
+
+
+#endif //_VIDEO_VALUE_DEFINE_
+
diff --git a/include/mp-video-view-mgr.h b/include/mp-video-view-mgr.h
new file mode 100644 (file)
index 0000000..dd2918a
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _VIDEO_VIEW_MGR_
+#define  _VIDEO_VIEW_MGR_
+
+
+
+bool MpVideoViewCtrlInit(VideoAppData* pAppData);
+void MpVideoViewCtrlDestroy(void* pUserData);
+
+
+void MpVideoViewCtrlSetRotation(int nRotateMode, bool bLayoutHide, void *pUserData);
+void MpVideoViewCtrlInitAfterBeginOfStream(void*);
+void MpVideoViewCtrlPause(void* pUserData);
+void MpVideoViewCtrlResume(void* pUserData);
+void MpVideoViewShowLayout(void* pUserData);
+void MpVideoViewHideLayout(void* pUserData);
+void MpVideoViewCtrlShowFinish(void *pUserData);
+void MpVideoViewCtrlHideFinish(void *pUserData, bool bLayoutOff);
+void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void* pUserData);
+void MpVideoViewCtrlChangeTitle(void *pUserData);
+bool MpVideoViewCtrlIsTopView(void *pUserData);
+void MpVideoViewCtrlShowNocontentImage(void* pUserData);
+void MpVideoViewCtrlHideNocontentImage(void* pUserData);
+void MpVideoViewCtrlResetProgressBar(void *pUserData);
+void MpVideoViewCtrlPopTopView(int nPlayerType, void *pUserData);
+void MpVideoViewCtrlUpdateProgressbar(void *pUserData);
+bool MpVideoViewCtrlIsPauseByUser(void *pUserData);
+void MpVideoViewCtrlShowVolume();
+void MpVideoViewCtrlHideVolume();
+
+#endif //_VIDEO_VIEW_MGR_
\ No newline at end of file
diff --git a/include/mp-video-volume-ctrl.h b/include/mp-video-volume-ctrl.h
new file mode 100644 (file)
index 0000000..e71b058
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _MP_VIDEO_VOLUME_CTRL_
+#define _MP_VIDEO_VOLUME_CTRL_
+
+
+void   *MpVideoVolumeCtrlInit(void *pParent, void* pUserData);
+void   MpVideoVolumeCtrlDestroy(void);
+void   MpVideoVolumeCtrlShow();
+void   MpVideoVolumeCtrlHide();
+void   MpVideoVolumeCtrlSetVolume(int nVol);
+int    MpVideoVolumeCtrlGetVolume();
+bool   MpVideoVolumeCtrlGetShowStatus();
+
+#endif // _MP_VIDEO_VOLUME_CTRL_
+
diff --git a/include/video-player.h b/include/video-player.h
new file mode 100644 (file)
index 0000000..daad009
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __VIDEO_PLAYER__
+#define         __VIDEO_PLAYER__
+
+#include <stdbool.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include <Elementary.h>
+
+
+#include "mp-video-value-define.h"
+#include "mp-video-type-define.h"
+
+#define LVL0 (0)
+#define LVL1 (1)
+#define LVL2 (2)
+#define LVL3 (3)
+#define LVL4 (4)
+#define LVL5 (5)
+#define LVL6 (6)
+#define LVL7 (7)
+
+typedef enum
+{
+       MP_UG_FAIL,
+       MP_UG_SUCCESS
+} mp_ug_load_status;
+
+typedef struct _VideoAppData           VideoAppData;
+
+
+typedef struct
+{
+       void (*VideoAppCtrlStart)                               (VideoAppData* pAppData);
+       void (*VideoAppCtrlStop)                                (VideoAppData* pAppData);
+       void (*VideoAppCtrlPause)                               (VideoAppData* pAppData);
+       void (*VideoAppCtrlResume)                              (VideoAppData* pAppData);
+       void (*VideoAppCtrlStopByAppPause)              (VideoAppData* pAppData);
+       void (*VideoAppCtrlStartByAppResume)    (VideoAppData* pAppData);
+       void (*VideoAppCtrlFFDown)                              (VideoAppData* pAppData);
+       void (*VideoAppCtrlRewDown)                             (VideoAppData* pAppData);
+       void (*VideoAppCtrlFFUp)                                (VideoAppData* pAppData);
+       void (*VideoAppCtrlRewUp)                               (VideoAppData* pAppData);
+       void (*VideoAppCtrlSpeedReset)                  (VideoAppData* pAppData);
+       void (*VideoAppCtrlSpeedFF)                             (VideoAppData* pAppData);
+       void (*VideoAppCtrlSpeedRew)                    (VideoAppData* pAppData);
+       void (*VideoAppCtrlRotateScreen)                (VideoAppData *pAppData, int nRotateState);
+       void (*VideoAppCtrlGetPosition)                 (VideoAppData* pAppData);
+       void (*VideoAppCtrlSetPosition)                 (VideoAppData* pAppData);
+       void (*VideoAppCtrlSetSubtitlePosition)         (VideoAppData* pAppData);
+       void (*VideoAppCtrlHideLayout)                  (VideoAppData* pAppData);
+       void (*VideoAppCtrlShowLayout)                  (VideoAppData* pAppData);
+       void (*VideoAppCtrlHideFinish)                  (VideoAppData* pAppData);
+       void (*VideoAppCtrlShowFinish)                  (VideoAppData* pAppData);
+       void (*VideoAppCtrlGetVideoResolution)  (VideoAppData* pAppData);
+       void (*VideoAppCtrlReqDurationTime)             (VideoAppData* pAppData);
+       void (*VideoAppCtrlChangeResolution)    (VideoAppData* pAppData);
+       void (*VideoAppCtrlBeginOfStream)               (VideoAppData* pAppData);
+       void (*VideoAppCtrlEndOfStream)                 (VideoAppData* pAppData);
+       void (*VideoAppCtrlExit)                                (VideoAppData* pAppData);
+       void (*VideoAppCtrlStartStreaming)              (VideoAppData* pAppData);
+       void (*VideoAppCtrlReLaunching)                 (VideoAppData* pAppData);
+       void (*VideoAppCtrlGetBufferingPosition)(VideoAppData* pAppData);
+
+
+       void (*VideoAppCtrlShowVolume)                  (VideoAppData *pAppData);
+       void (*VideoAppCtrlHideVolume)                  (VideoAppData *pAppData);
+}VideoAppCtrlFunc;
+
+
+struct _VideoAppData
+{
+       Evas_Object*            pMainWindow;
+
+       int                     nDuration;
+       int                     nSetPosition;
+       int                     nCurPosition;
+       int                     nSubtitleDuration;
+       int                     nBufferingPosition;
+       int                     nPlayingSpeed;
+
+       int                     nVideoWidthResolution;
+       int                     nVideoHeightResolution;
+
+       char                    *szSubtitle;
+       char                    *szVideoTitle;
+       char                    *szMediaUri;
+       char                    *szPreMediaUri;
+       char                    *szNextMediaUri;
+
+       MpPlayerState       nPrePlayerState;
+       MpPlayerState       nCurPlayerState;
+       VideoAppCtrlFunc    VideoAppCtrlCallbackFunc;
+       bool                            bSeekComplete;
+       int                                     nSeekPosition;
+       MpPlayerState       nSeekPlayerState;
+
+       char                    *szProxyAddress;
+       char                    *szUserAgent;
+       char                    *szCookie;
+
+       bool                    bStartSeek;
+};
+
+#endif //__VIDEO_PLAYER__
diff --git a/org.tizen.video-player.manifest b/org.tizen.video-player.manifest
new file mode 100755 (executable)
index 0000000..fbdf26d
--- /dev/null
@@ -0,0 +1,11 @@
+<manifest>
+        <define>
+              <domain name="org.tizen.video-player" />
+        </define>
+        <assign>
+               <filesystem path="/opt/share/applications/org.tizen.video-player.desktop" label="_" />
+        </assign>
+        <request>
+                <domain name="org.tizen.video-player" />
+       </request>
+</manifest>
diff --git a/org.tizen.video-player.xml b/org.tizen.video-player.xml
new file mode 100755 (executable)
index 0000000..9ca4b03
--- /dev/null
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.video-player" version="0.5.93" install-location="internal-only">
+       <label>Video player</label>
+       <author email="jongdong.lee@samsung.com" href="www.samsung.com">JongDong Lee</author>
+       <description>Video player Application</description>
+       <ui-application appid="org.tizen.video-player" exec="/usr/apps/org.tizen.video-player/bin/video-player" nodisplay="true" multiple="false" type="capp" taskmanage="true">
+               <label>Video player</label>
+               <icon>org.tizen.video-player.png</icon>
+               <label xml:lang="en-us">Video player</label>
+               <label xml:lang="nl-nl">Video player</label>
+               <label xml:lang="de-de">Video player</label>
+               <label xml:lang="zh-hk">Video player</label>
+               <label xml:lang="zh-cn">Video player</label>
+               <label xml:lang="ru-ru">Video player</label>
+               <label xml:lang="zh-tw">Video player</label>
+               <label xml:lang="ja-jp">Video player</label>
+               <label xml:lang="es-es">Video player</label>
+               <label xml:lang="el-gr">Video player</label>
+               <label xml:lang="it-it">Video player</label>
+               <label xml:lang="tr-tr">Video player</label>
+               <label xml:lang="pt-pt">Video player</label>
+               <label xml:lang="fr-fr">Video player</label>
+               <label xml:lang="ko-kr">비디오 플레이어</label>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/view" />
+                       <mime name="video/mp4" />
+                       <mime name="video/3gp" />
+                       <mime name="video/x-msvideo" />
+                       <mime name="video/x-ms-wmv" />
+                       <mime name="video/x-ms-asf" />
+                       <mime name="video/3gpp" />
+                       <mime name="video/x-matroska" />
+                       <mime name="video/vnd.ms-playready.media.pyv" />
+                       <mime name="application/x-mpegurl" />
+                       <mime name="audio/x-mpegurl" />
+                       <mime name="video/x-mpegurl" />
+                       <mime name="video/x-flv" />
+                       <mime name="video/ogg" />
+                       <mime name="application/sdp" />
+                       <uri name="http" />
+                       <uri name="https" />
+                       <uri name="rtsp" />
+                       <uri name="rtp" />
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/view" />
+                       <mime name="video/mp4" />
+                       <mime name="video/3gp" />
+                       <mime name="video/x-msvideo" />
+                       <mime name="video/x-ms-wmv" />
+                       <mime name="video/x-ms-asf" />
+                       <mime name="video/3gpp" />
+                       <mime name="video/x-matroska" />
+                       <mime name="video/vnd.ms-playready.media.pyv" />
+                       <mime name="application/x-mpegurl" />
+                       <mime name="audio/x-mpegurl" />
+                       <mime name="video/x-mpegurl" />
+                       <mime name="video/x-flv" />
+                       <mime name="video/ogg" />
+                       <mime name="application/sdp" />
+               </application-service>
+       </ui-application>
+</manifest>
diff --git a/packaging/org.tizen.video-player.spec b/packaging/org.tizen.video-player.spec
new file mode 100755 (executable)
index 0000000..58acbf4
--- /dev/null
@@ -0,0 +1,93 @@
+Name:       org.tizen.video-player
+Summary:    Video & streaming player
+Version:    0.5.140
+Release:    1
+Group:      TO_BE/FILLED_IN
+License:    Flora
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(drm-client)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(syspopup-caller)
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(efreet)
+BuildRequires: pkgconfig(pmapi)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-media-player)
+BuildRequires: pkgconfig(capi-media-sound-manager)
+BuildRequires: pkgconfig(capi-media-image-util)
+BuildRequires: pkgconfig(capi-system-power)
+BuildRequires: pkgconfig(capi-media-metadata-extractor)
+BuildRequires: pkgconfig(capi-content-media-content)
+BuildRequires: pkgconfig(capi-content-mime-type)
+BuildRequires: pkgconfig(capi-system-sensor)
+BuildRequires: pkgconfig(ecore-evas)
+BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(xext)
+BuildRequires: pkgconfig(devman)
+BuildRequires: pkgconfig(ui-gadget-1)
+BuildRequires: boost-devel
+BuildRequires: boost-thread
+BuildRequires: boost-system
+BuildRequires: boost-filesystem
+
+
+BuildRequires: cmake
+BuildRequires: gettext-tools
+BuildRequires: edje-tools
+BuildRequires: prelink
+BuildRequires: libicu-devel
+
+%description
+Video & streaming player
+
+%prep
+%setup -q
+
+%ifarch %{arm}
+%define ARCH arm
+%else
+%define ARCH i586
+%endif
+
+%build
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.video-player  -DARCH=%{ARCH}
+make %{?jobs:-j%jobs}
+
+
+%install
+rm -rf %{buildroot}
+%make_install
+execstack -c %{buildroot}/usr/apps/org.tizen.video-player/bin/video-player
+mkdir -p %{buildroot}/usr/share/license
+
+%post
+vconftool set -t bool db/private/org.tizen.video-player/backgroud_playing 0  -g 5000
+vconftool set -t int  db/private/org.tizen.video-player/video_auto_off_type 0  -g 5000
+vconftool set -t bool db/private/org.tizen.video-player/auto_search_subtitle_file 1  -g 5000
+vconftool set -t bool db/private/org.tizen.video-player/show_subtitle 1  -g 5000
+vconftool set -t int  db/private/org.tizen.video-player/subtitle_size 1  -g 5000
+vconftool set -t int  db/private/org.tizen.video-player/display_color_tone_type 0  -g 5000
+vconftool set -t bool db/private/org.tizen.video-player/outdoor_visibility 0  -g 5000
+vconftool set -t string db/private/org.tizen.video-player/preview_url_videos "" -g 5000
+vconftool set -t string db/private/org.tizen.video-player/preview_url_records "" -g 5000
+vconftool set -t string db/private/org.tizen.video-player/show_indicator 1 -g 5000
+vconftool set -t string db/private/org.tizen.video-player/show_border 0 -g 5000
+
+%files -n org.tizen.video-player
+%manifest org.tizen.video-player.manifest
+%dir /opt/usr/media/.video_thumb
+
+/usr/apps/org.tizen.video-player/bin/*
+/usr/apps/org.tizen.video-player/res/locale/*
+/usr/share/icons/default/small/*
+/usr/apps/org.tizen.video-player/res/edje/*
+/usr/apps/org.tizen.video-player/res/images/*
+/usr/share/packages/org.tizen.video-player.xml
+
+/usr/share/license/%{name}
diff --git a/res/edc/add_tag.edc b/res/edc/add_tag.edc
new file mode 100755 (executable)
index 0000000..c045ecb
--- /dev/null
@@ -0,0 +1,346 @@
+collections {
+       group {
+               name: "favorite";
+               parts {
+                       part {
+                               name: "background";
+                               type, RECT;     
+                               mouse_events: 0;
+                               description {
+                               state: "default" 0.0;              
+                               rel1 { relative: 0.0 0.0; offset: 0 0; }
+                               rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                               color, 0 0 0 255 ;
+                           }
+                       }
+                       
+                       part {
+                               name: "selectall_bg";   
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 80;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "background"; }
+                                       rel2 { relative: 1.0 0.0; to: "background"; }
+                                       visible : 0;
+                                       color: 37 37 37 153;
+                                       visible : 0;
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+       
+               part {
+                       name: "selectall_check_leftpadding";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 15 0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                                       
+                               color: 0 0 0 255;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0; to: "selectall_bg"; }
+                               rel2 { relative: 0.0 1.0; to: "selectall_bg"; }
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+               part {
+                       name: "selectall_check";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.5;
+                               fixed: 1 1;
+                               min: 44 44;
+                               rel1 { relative: 1.0 0.0; to: "selectall_check_leftpadding"; }
+                               rel2 { relative: 1.0 1.0; to: "selectall_check_leftpadding"; }
+                               visible : 0;
+                                                                               
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }                                                                       
+               }
+
+               part {
+                       name: "selectall_check_rightpadding";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 15 0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               color: 0 0 0 0;
+                               rel1 { relative: 1.0 0.0; to: "selectall_check"; }
+                               rel2 { relative: 1.0 1.0; to: "selectall_check"; }
+                                visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "selectall_text";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.5;
+                               rel1 { relative: 1.0 0.0; to: "selectall_check_rightpadding"; }
+                               rel2 { relative: 1.0 1.0; to: "selectall_bg"; }
+                               color: 255 255 255 255;
+                               text {
+                                       font: "SLP";
+                                       size: 32;
+                                       text: "Select all";
+                                       align: 0.0 0.5;
+                               }
+                               visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }       
+               }
+
+               part {
+                       name: "selectall_inner";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+
+                       description {
+                               state: "defalut" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 1.0; to: "selectall_bg"; }
+                               rel2 { relative: 1.0 1.0; to: "selectall_bg"; }
+                               color: 90 90 90 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+               
+
+               // tab style container
+               part {
+                       name: "elm.swallow.tabbar";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                       }
+               }
+
+               // tool style container. 
+               part {
+                       name: "elm.swallow.toolbar_bg";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 50;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 0.0; offset: 0 50;}
+
+                       }
+               }
+               
+               // tool style container. 
+               part {
+                       name: "elm.swallow.toolbar";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               //min: 0 76;
+                               min: 0 86;
+                               fixed: 1 1;
+                               align: 0.5 1.0;
+                               rel1 { relative: 0.0 1.0;}
+                               rel2 { relative: 1.0 1.0;}
+
+                       }
+                       description {
+                               state: "moveup" 0.0;
+                               //min: 0 86;
+                               min: 0 50;
+                               fixed: 1 1;                                     
+                               //align: 0.5 1.0;
+                               align: 0.5 0.0;                 
+                               rel1 { relative: 0.0 0.0; offset: 5 0;}                                                 
+                               rel2 { relative: 1.0 0.0; offset: -5 50;}
+
+                       }
+                       description {
+                               state: "moveup_progressbar" 0.0;
+                               min: 0 62;
+                               fixed: 1 1;                                     
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 0.0; offset: 0 62;}
+
+                       }
+               }
+               
+               // view container. This is used, when tool items is added.
+               part {
+                       name: "elm.swallow.view";
+                       type: SWALLOW;
+                       mouse_events: 1;                        
+                       description {
+                               state: "default" 0.0;                   
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";}
+
+                       }
+                       description {
+                               state: "edit_default" 0.0;
+                               rel1 { relative: 0.0 1.0; to: "selectall_inner"; }
+                               rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";}
+
+                       }
+                       description {
+                               state: "moveup_toolbar" 0.0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to: "elm.swallow.toolbar_bg";}
+                               rel2 { relative: 1.0 1.0; }
+                       }
+                       description {
+                               state: "moveup_toolbar_progressbar" 0.0;
+                               rel1 { relative: 0.0 1.0; to: "elm.swallow.toolbar";}
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+
+               part {
+                       name: "view_bg";
+                       type: SWALLOW;     
+                       mouse_events: 1;
+                       repeat_events: 1;                                       
+                       description {
+                       state: "default" 0.0;              
+                       rel1 { relative: 0.0 0.0; offset: 0 0; to: "elm.swallow.view";}
+                       rel2 { relative: 1.0 1.0; offset: 0 0; to: "elm.swallow.view";}
+                       }
+                       description { 
+                               state: "disabled" 0.0;
+                inherit: "default" 0.0;
+                               visible: 0;
+            }
+               }
+       }//GROUP
+       programs {
+               program {
+                       name: "swallow_view_default";
+                       signal: "elm,swallow_view,state,default";
+                       source: "elm";
+                       script {
+                               set_state(PART:"elm.swallow.view", "default", 0.0);
+                               set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position
+                       }
+               }
+               program {
+                       name: "swallow_view_edit_default";
+                       signal: "elm,swallow_view,state,edit_default";
+                       source: "elm";
+                       script {
+                               set_state(PART:"elm.swallow.view", "edit_default", 0.0);
+                               set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position
+                       }
+               }
+               program {
+                       name: "swallow_view_moveup_toolbar";
+                       signal: "elm,swallow_view,state,moveup_toolbar";
+                       source: "elm";
+                       script {
+                               set_state(PART:"elm.swallow.toolbar", "moveup", 0.0); //move toolbar up
+                               set_state(PART:"elm.swallow.view", "moveup_toolbar", 0.0); 
+                       }
+               }
+               program {
+                       name: "swallow_view_moveup_toolbar_progressbar";
+                       signal: "elm,swallow_view,state,moveup_toolbar_progressbar";
+                       source: "elm";
+                       script {
+                   set_state(PART:"elm.swallow.toolbar", "moveup_progressbar", 0.0); //move toolbar+progressbar up
+                               set_state(PART:"elm.swallow.view", "moveup_toolbar_progressbar", 0.0); 
+                       }
+               }                        
+               program {
+                       name: "view_bg_default";
+                       signal: "elm,view,bg,state,default";
+                       source: "elm";
+                       script {
+                               set_state(PART:"view_bg", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "view_bg_disable";
+                       signal: "elm,view,bg,state,disabled";
+                       source: "elm";
+                       script {
+                               set_state(PART:"view_bg", "disabled", 0.0);
+                       }
+               }
+               program {
+                       name: "selectall_show";
+                       signal: "selectall_show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       target: "selectall_bg";
+                       target: "selectall_check_leftpadding";
+                       target: "selectall_check";
+                       target: "selectall_check_rightpadding";
+                       target: "selectall_text";
+                       target: "selectall_inner";                                                                      
+               }
+               program {
+                       name: "selectall_hide";
+                       signal: "selectall_hide";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "selectall_bg";
+                       target: "selectall_check_leftpadding";
+                       target: "selectall_check";
+                       target: "selectall_check_rightpadding";
+                       target: "selectall_text";
+                       target: "selectall_inner";
+               } 
+       }//PROGRAMS
+} /* collections */
diff --git a/res/edc/animation.edc b/res/edc/animation.edc
new file mode 100755 (executable)
index 0000000..cb57b00
--- /dev/null
@@ -0,0 +1,299 @@
+#include "image_res.edc"\r
+#include "vp_font.edc"\r
+\r
+#define CONTROL_BUTTON_STEP(_item_name_, _val_)                                \\r
+program {                                                                                                      \\r
+       signal: "signal."_item_name_".step."_val_;                                              \\r
+       source: "*";                                                                                            \\r
+       action: STATE_SET "step_"_val_ 0.0;                                                     \\r
+       target: _item_name_;                                                                            \\r
+} // CONTROL_BUTTON_STEP\r
+\r
+\r
+collections {\r
+       group {\r
+               name: "animation";\r
+\r
+               parts {\r
+                       part {\r
+                               name: "loading.back";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       color: 255 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "loading.txt";\r
+                               type: TEXT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 288 54;\r
+                                       fixed: 0 1;\r
+                                       align: 0.5 0.0;\r
+                                       rel1 { relative: 0.0 1.0; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                                       color: FONT_COLOR;\r
+                                       text {\r
+                                               font: FONT_BOLD_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 32;\r
+                                               text: "";\r
+                                               align: 0.5 0.5;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "loading.image";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 138 138;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5;}\r
+                                       rel2 { relative: 0.5 0.5;}\r
+                                       image { normal: "gallery_loading_ani_01.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_01.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_1" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_01.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_2" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_02.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_3" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_03.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_4" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_04.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_5" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_05.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_6" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_06.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_7" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_07.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_8" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_08.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_9" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_09.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_10" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_10.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_11" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_11.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_12" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_12.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_13" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_13.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_14" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_14.png"; }\r
+                               }description {\r
+                                       state: "step_15" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_15.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_16" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_16.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_17" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_17.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_18" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       image { normal: "gallery_loading_ani_18.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_19" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_19.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_20" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_20.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_21" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_21.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_22" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_22.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_23" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_23.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_24" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_24.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_25" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_25.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_26" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_26.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_27" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_27.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_28" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_28.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_29" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_29.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_30" 0.0;\r
+                                       inherit: "show" 0.0;\r
+                                       visible: 1;\r
+                                       image { normal: "gallery_loading_ani_30.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_0" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                       }\r
+               } // parts\r
+\r
+               programs {\r
+                       CONTROL_BUTTON_STEP( "loading.image", 0);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 1);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 2);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 3);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 4);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 5);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 6);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 7);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 8);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 9);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 10);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 11);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 12);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 13);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 14);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 15);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 16);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 17);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 18);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 19);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 20);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 21);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 22);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 23);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 24);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 25);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 26);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 27);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 28);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 29);\r
+                       CONTROL_BUTTON_STEP( "loading.image", 30);\r
+\r
+               }       // programs\r
+       }       // group\r
+}      // collections\r
diff --git a/res/edc/control.edc b/res/edc/control.edc
new file mode 100755 (executable)
index 0000000..a70a5a4
--- /dev/null
@@ -0,0 +1,1167 @@
+\r
+#define BUTTON_PRESS_COLOR     56 149 205 255\r
+#define CONTROL_ICON_SIZE 136 114\r
+\r
+#include "image_res.edc"\r
+#include "vp_font.edc"\r
+\r
+// part macro\r
+\r
+#define CONTROL_BUTTON_PRESS_PART(_name_ , _w_ , _h_ , _align_x_ , _align_y_ , _rel_x1_ , _rel_x2_ , _rel_y1_, _rel_y2_ , _to_ ,  _img_def_ , _img_press_ )    \\r
+part {                                                                                                                 \\r
+       name: _name_;                                                                                   \\r
+       type: IMAGE;                                                                                            \\r
+       scale: 1;                                                                                                       \\r
+       mouse_events: 1;                                                                                        \\r
+       description {                                                                                           \\r
+               state: "default" 0.0;                                                                   \\r
+               min: _w_ _h_;                                                                                   \\r
+               fixed: 1 1;                                                                                     \\r
+               align: _align_x_ _align_y_;                                                             \\r
+               rel1 { relative: _rel_x1_ _rel_y1_; to : _to_;}                         \\r
+               rel2 { relative: _rel_x2_ _rel_y2_; to : _to_;}                         \\r
+               image { normal: _img_def_; border: 4 4 0 0;}                            \\r
+               color: 255 255 255 255;                                                                 \\r
+       }                                                                                                               \\r
+       description {                                                                                           \\r
+               state: "pressed" 0.0;                                                                   \\r
+               min: _w_ _h_;                                                                                   \\r
+               fixed: 1 1;                                                                                     \\r
+               align: _align_x_ _align_y_;                                                             \\r
+               rel1 { relative: _rel_x1_ _rel_y1_;  to : _to_;}                                \\r
+               rel2 { relative: _rel_x2_ _rel_y2_;  to : _to_;}                                \\r
+               image { normal: _img_press_; border: 4 4 0 0;}                  \\r
+               color: 255 255 255 255;                                                                 \\r
+       }                                                                                                               \\r
+       description {                                                                                           \\r
+               state: "hide" 0.0;                                                                              \\r
+               inherit: "default" 0.0;                                                                         \\r
+               visible: 0;                                                                                     \\r
+       }                                                                                                               \\r
+}      // CONTROL_BUTTON_PRESS_PART\r
+\r
+\r
+\r
+// program macro\r
+\r
+#define CONTROL_BUTTON_PROG(_item_name_)                                       \\r
+program {                                                                                                      \\r
+       name: _item_name_".pressed";                                                            \\r
+       source: _item_name_;                                                                            \\r
+       signal: "mouse,down,1";                                                                         \\r
+       action: STATE_SET "pressed" 0.0;                                                        \\r
+       target: _item_name_;                                                                            \\r
+       after: "send."_item_name_".down.signal";                                                \\r
+}                                                                                                                      \\r
+program {                                                                                                      \\r
+       name: _item_name_".released";                                                   \\r
+       source: _item_name_;                                                                            \\r
+       signal: "mouse,up,1";                                                                           \\r
+       action: STATE_SET "default" 0.0;                                                                \\r
+       target: _item_name_;                                                                            \\r
+       after: "send."_item_name_".up.signal";                                          \\r
+}                                                                                                                      \\r
+program {                                                                                                      \\r
+       name: _item_name_".clicked";                                                            \\r
+       source: _item_name_;                                                                            \\r
+       signal: "mouse,clicked,1";                                                                              \\r
+       action: STATE_SET "default" 0.0;                                                                \\r
+       target: _item_name_;                                                                            \\r
+       after: "send."_item_name_".clicked.signal";                                             \\r
+}                                                                                                                      \\r
+program {                                                                                                      \\r
+       name: "send."_item_name_".down.signal";                                                 \\r
+       action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_;    \\r
+}                                                                                                                      \\r
+program {                                                                                                      \\r
+       name: "send."_item_name_".up.signal";                                           \\r
+       action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_;      \\r
+}                                                                                                                      \\r
+program {                                                                                                      \\r
+       name: "send."_item_name_".clicked.signal";                                              \\r
+       action: SIGNAL_EMIT "signal."_item_name_".clicked" _item_name_;         \\r
+} // CONTROL_BUTTON_PROG\r
+\r
+\r
+#define CONTROL_BUTTON_STEP(_item_name_, _val_)                                \\r
+program {                                                                                                      \\r
+       signal: "signal."_item_name_".step."_val_;                                              \\r
+       source: "*";                                                                                            \\r
+       action: STATE_SET "step_"_val_ 0.0;                                                     \\r
+       target: _item_name_;                                                                            \\r
+} // CONTROL_BUTTON_STEP\r
+\r
+#define CONTROL_BUTTON_STEP_LANDSCAPE(_item_name_, _val_)      \\r
+program {                                                                                                      \\r
+       signal: "signal."_item_name_".landscape.step."_val_;                                            \\r
+       source: "*";                                                                                            \\r
+       action: STATE_SET "step_"_val_"_landscape" 0.0;                                                 \\r
+       target: _item_name_;                                                                            \\r
+} // CONTROL_BUTTON_STEP\r
+\r
+collections {\r
+       group {\r
+               name: "control";\r
+\r
+               script {\r
+                       public val_volume_check = 0;    /* 0: unmute, 1: mute */\r
+                       public val_play_status = 0;             /* 0: pause , 1: resume */\r
+                       public val_display_mode = 0;    /* 0: normal, 1: trim, 2: streaming, 3: DLNA*/\r
+                       public val_rotate_mode = 0;             /* 0: portrate, 1: landscape */\r
+\r
+                       public change_display_mode() {\r
+\r
+                               run_program(PROGRAM:"set.visible.off");\r
+\r
+                               if(get_int(val_display_mode ) == 0) {           /* normal mode */\r
+                                       run_program(PROGRAM:"set.mode.normal");\r
+                               }\r
+                               if(get_int(val_display_mode ) == 1) {           /* trim mode */\r
+                                       run_program(PROGRAM:"set.mode.trim");\r
+                               }\r
+                               if(get_int(val_display_mode ) == 2) {           /* streaming mode */\r
+                                       run_program(PROGRAM:"set.mode.streaming");\r
+                               }\r
+                               if(get_int(val_display_mode ) == 3) {           /* dlna mode */\r
+                                       run_program(PROGRAM:"set.mode.dlna");\r
+                               }\r
+                       }       /* change_display_mode */\r
+\r
+\r
+                       public set_volume_check() {\r
+                               if(get_int(val_volume_check ) == 0) {\r
+                                       run_program(PROGRAM:"set.volume.unmute");\r
+                               }\r
+                               else {\r
+                                       run_program(PROGRAM:"set.volume.mute");\r
+                               }\r
+                       }       /* set_volume_check */\r
+\r
+                       public send_play_value() {\r
+                               if(get_int(val_play_status ) == 0) {\r
+                                       run_program(PROGRAM:"send.play.resume");\r
+                               }\r
+                               else {\r
+                                       run_program(PROGRAM:"send.play.pause");\r
+                               }\r
+                       }       /* send_play_value */\r
+\r
+\r
+                       public set_play_status() {\r
+                               if(get_int(val_play_status ) == 0) {\r
+                                       run_program(PROGRAM:"set.play.default");\r
+                               }\r
+                               else {\r
+                                       run_program(PROGRAM:"set.play.pause");\r
+                               }\r
+                       }       /* set_play_status */\r
+\r
+\r
+                       public set_play_button_press() {\r
+                               if(get_int(val_play_status ) == 0) {\r
+                                       run_program(PROGRAM:"press.resume.button");\r
+                               }\r
+                               else {\r
+                                       run_program(PROGRAM:"press.pause.button");\r
+                               }\r
+                       }       // set_play_button_press\r
+               }       // script\r
+\r
+               parts {\r
+                       part {\r
+                               name: "control.rect";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.0 0.5;\r
+                                       visible : 0;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                                       color: 255 0 0 0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.rect.1";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.0 0.5;\r
+                                       min: 144 0;\r
+                                       fixed: 1 0;\r
+                                       visible : 1;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 0.2 1.0; }\r
+                                       color: 255 0 0 0;\r
+                               }\r
+                               description {\r
+                                       state: "landscape" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       min: 180 0;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 0.1406 1.0; }\r
+\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.rect.2";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.0 0.0;\r
+                                       min: 144 0;\r
+                                       fixed: 1 0;\r
+                                       visible : 1;\r
+                                       rel1 { relative: 0.2 0.0;}\r
+                                       rel2 { relative: 0.4 1.0;}\r
+                                       color: 0 255 0 0;\r
+                               }\r
+                               description {\r
+                                       state: "landscape" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       min: 271 0;\r
+                                       rel1 { relative: 0.18125 0.0;}\r
+                                       rel2 { relative: 0.39296 1.0;}\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.rect.3";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.0 0.0;\r
+                                       min: 144 0;\r
+                                       fixed: 1 0;\r
+                                       visible : 1;\r
+                                       rel1 { relative: 0.4 0.0; }\r
+                                       rel2 { relative: 0.6 1.0; }\r
+                                       color: 0 0 255 0;\r
+                               }\r
+                               description {\r
+                                       state: "landscape" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       min: 271 0;\r
+                                       rel1 { relative: 0.39453 0.0; }\r
+                                       rel2 { relative: 0.60625 1.0; }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.rect.4";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.0 0.0;\r
+                                       min: 144 0;\r
+                                       fixed: 1 0;\r
+                                       visible : 1;\r
+                                       rel1 { relative: 0.6 0.0;}\r
+                                       rel2 { relative: 0.8 1.0;}\r
+                                       color: 255 255 0 0;\r
+                               }\r
+                               description {\r
+                                       state: "landscape" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       min: 271 0;\r
+                                       rel1 { relative: 0.60781 0.0; }\r
+                                       rel2 { relative: 0.81953 1.0; }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.rect.5";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible : 1;\r
+                                       min: 144 0;\r
+                                       fixed: 1 0;\r
+                                       align: 1.0 0.0;\r
+                                       rel1 { relative: 0.8 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       color: 255 255 255 0;\r
+                               }\r
+                               description {\r
+                                       state: "landscape" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       min: 180 0;\r
+                                       rel1 { relative: 0.85937 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.rect.1.line";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 1 70;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 1.0 0.5; to: "control.rect.1"; }\r
+                                       rel2 { relative: 1.0 0.5; to: "control.rect.1"; }\r
+                                       color: 144 144 144 178;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.rect.2.line";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 1 70;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to: "control.rect.5"; }\r
+                                       rel2 { relative: 0.0 0.5; to: "control.rect.5"; }\r
+                                       color: 144 144 144 178;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.volume.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: CONTROL_ICON_SIZE;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.1"; }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.1"; }\r
+                                       image { normal: "white/panel/T01-2_btn_toolbar_volume.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.volume.mute.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: CONTROL_ICON_SIZE;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.1"; }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.1"; }\r
+                                       image { normal: "white/panel/T02_volume_icon_Mute.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.back.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: CONTROL_ICON_SIZE;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.5";  }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.5";  }\r
+                                       image { normal: "white/panel/T01-2_btn_toolbar_back.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.trim.done.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 56 56;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.1"; }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.1"; }\r
+                                       image { normal: "panel/T01-2_icon_toolbar_done.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.trim.cancel.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 56 56;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.5"; }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.5"; }\r
+                                       image { normal: "panel/T01-2_icon_toolbar_cancel.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.play.button";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: CONTROL_ICON_SIZE;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.3"; }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.3"; }\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_play.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "pause" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_pause.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "press_resume" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_play.png"; }\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                               description {\r
+                                       state: "press_pause" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_pause.png"; }\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                       }\r
+\r
+\r
+                       // normal mode control part\r
+                       part {\r
+                               name: "control.normal.rew.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: CONTROL_ICON_SIZE;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.2";}\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.2";}\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "step_1" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_2" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_3" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_4" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "portrate" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.normal.ff.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: CONTROL_ICON_SIZE;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.4"; }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.4";}\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_next.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "step_1" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_next.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_2" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_next.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_3" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_next.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_4" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "white/control/T01-2_icon_toolbar_next.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "portrate" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+\r
+                       }\r
+                       part {\r
+                               name: "control.normal.rew.speed.swallow";\r
+                               type: SWALLOW;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 112 297;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 1.0;\r
+                                       rel1 { relative: 0.5 0.1; to: "control.rect.2";}\r
+                                       rel2 { relative: 0.5 0.1; to: "control.rect.2";}\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "control.normal.ff.speed.swallow";\r
+                               type: SWALLOW;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 112 297;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 1.0;\r
+                                       rel1 { relative: 0.5 0.1; to: "control.rect.4";}\r
+                                       rel2 { relative: 0.5 0.1; to: "control.rect.4";}\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                       }\r
+                       // <-- normal mode control part\r
+\r
+\r
+\r
+                       // --> trim mode control part\r
+                       part {\r
+                               name: "control.trim.rew.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 56 56;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.2"; }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.2"; }\r
+                                       image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "step_1" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_2" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_3" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "control.trim.ff.button";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 56 56;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to: "control.rect.4"; }\r
+                                       rel2 { relative: 0.5 0.5; to: "control.rect.4"; }\r
+                                       image { normal: "trim/T01-2_icon_toolbar_forward.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "pressed" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "trim/T01-2_icon_toolbar_forward.png"; }\r
+                                       color: BUTTON_PRESS_COLOR;\r
+                               }\r
+                               description {\r
+                                       state: "hide" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 0;\r
+                               }\r
+                               description {\r
+                                       state: "step_1" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "trim/T01-2_icon_toolbar_forward.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_2" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "trim/T01-2_icon_toolbar_forward.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "step_3" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       image { normal: "trim/T01-2_icon_toolbar_forward.png"; }\r
+                               }\r
+                       } // <-- trim mode control part\r
+               } // parts\r
+\r
+\r
+               programs {\r
+                       program {\r
+                               signal: "signal.control.mode.normal";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_display_mode, 0);\r
+                                       change_display_mode();\r
+                                       set_play_status();\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.mode.trim";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_display_mode, 1);\r
+                                       change_display_mode();\r
+                                       set_play_status();\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.mode.streaming";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_display_mode, 2);\r
+                                       change_display_mode();\r
+                                       set_play_status();\r
+                               }\r
+                       }\r
+                       program {\r
+                               signal: "signal.control.mode.dlna";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_display_mode, 3);\r
+                                       change_display_mode();\r
+                                       set_play_status();\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.mode.visible.off";\r
+                               source: "*";\r
+                               after: "set.visible.off";\r
+                       }\r
+\r
+                       program {\r
+                               name: "set.visible.off";\r
+                               source: "*";\r
+                               action: STATE_SET "hide" 0.0;\r
+\r
+                               target: "control.play.button";\r
+                               target: "control.back.button";\r
+                               target: "control.volume.button";\r
+                               target: "control.volume.mute.button";\r
+                               target: "control.normal.rew.button";\r
+                               target: "control.normal.ff.button";\r
+                               target: "control.trim.rew.button";\r
+                               target: "control.trim.ff.button";\r
+                               target: "control.trim.done.button";\r
+                               target: "control.trim.cancel.button";\r
+                       }\r
+\r
+                       program {\r
+                               name: "set.mode.normal";\r
+                               source: "*";\r
+                               action: STATE_SET "default" 0.0;\r
+\r
+                               target: "control.play.button";\r
+                               target: "control.back.button";\r
+                               target: "control.volume.button";\r
+                               target: "control.normal.rew.button";\r
+                               target: "control.normal.ff.button";\r
+                       }\r
+\r
+                       program {\r
+                               name: "set.mode.trim";\r
+                               source: "*";\r
+                               action: STATE_SET "default" 0.0;\r
+\r
+                               target: "control.play.button";\r
+                               target: "control.trim.rew.button";\r
+                               target: "control.trim.ff.button";\r
+                               target: "control.trim.done.button";\r
+                               target: "control.trim.cancel.button";\r
+                       }\r
+\r
+                       program {\r
+                               name: "set.mode.streaming";\r
+                               source: "*";\r
+                               action: STATE_SET "default" 0.0;\r
+\r
+                               target: "control.play.button";\r
+                               target: "control.back.button";\r
+                               target: "control.volume.button";\r
+                       }\r
+\r
+                       program {\r
+                               name: "set.mode.dlna";\r
+                               source: "*";\r
+                               action: STATE_SET "default" 0.0;\r
+\r
+                               target: "control.play.button";\r
+                               target: "control.back.button";\r
+                               target: "control.volume.button";\r
+                               target: "control.normal.rew.button";\r
+                               target: "control.normal.ff.button";\r
+\r
+                       }\r
+\r
+                       program {\r
+                               name: "control.normal.rew.button.press";\r
+                               source: "control.normal.rew.button";\r
+                               signal: "signal.control.normal.rew.button.down";\r
+                               script:\r
+                               {\r
+                                       if(get_int(val_rotate_mode) == 0)\r
+                                       {\r
+                                               set_state(PART:"control.normal.rew.button", "pressed", 0.0);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               set_state(PART:"control.normal.rew.button", "pressed_landscape", 0.0);\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               name: "control.normal.rew.button.up";\r
+                               source: "control.normal.rew.button";\r
+                               signal: "signal.control.normal.rew.button.up";\r
+                               script:\r
+                               {\r
+                                       if(get_int(val_rotate_mode) == 0)\r
+                                       {\r
+                                               set_state(PART:"control.normal.rew.button", "portrate", 0.0);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               set_state(PART:"control.normal.rew.button", "landscape", 0.0);\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               name: "control.normal.ff.button.press";\r
+                               source: "control.normal.ff.button";\r
+                               signal: "signal.control.normal.ff.button.down";\r
+                               script:\r
+                               {\r
+                                       if(get_int(val_rotate_mode) == 0)\r
+                                       {\r
+                                               set_state(PART:"control.normal.ff.button", "pressed", 0.0);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               set_state(PART:"control.normal.ff.button", "pressed_landscape", 0.0);\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               name: "control.normal.ff.button.up";\r
+                               source: "control.normal.ff.button";\r
+                               signal: "signal.control.normal.ff.button.up";\r
+                               script:\r
+                               {\r
+                                       if(get_int(val_rotate_mode) == 0)\r
+                                       {\r
+                                               set_state(PART:"control.normal.ff.button", "portrate", 0.0);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               set_state(PART:"control.normal.ff.button", "landscape", 0.0);\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+\r
+                       // --> mute/unmute check prog\r
+                       program {\r
+                               signal: "signal.control.volume.button.mute";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_volume_check, 1);\r
+                                       set_volume_check();\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.volume.button.unmute";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_volume_check, 0);\r
+                                       set_volume_check();\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               name: "set.volume.unmute";\r
+                               action: STATE_SET "default" 0.0;\r
+                               target: "control.volume.button";\r
+                       }\r
+                       program {\r
+                               name: "set.volume.mute";\r
+                               action: STATE_SET "mute" 0.0;\r
+                               target: "control.volume.button";\r
+                       }\r
+                       // --> mute/unmute check prog\r
+\r
+                       // --> play status part\r
+                       program {\r
+                               name: "press.resume.button";\r
+                               action: STATE_SET "press_resume" 0.0;\r
+                               target: "control.play.button";\r
+                       }\r
+                       program {\r
+                               name: "press.pause.button";\r
+                               action: STATE_SET "press_pause" 0.0;\r
+                               target: "control.play.button";\r
+                       }\r
+\r
+                       program {\r
+                               name: "control.play.button.down";\r
+                               source: "control.play.button";\r
+                               signal: "signal.control.play.button.down";\r
+                               script: {set_play_button_press(); }\r
+                       }\r
+\r
+                       program {\r
+                               name: "control.play.button.up";\r
+                               source: "control.play.button";\r
+                               signal: "signal.control.play.button.up";\r
+                               script: { send_play_value(); }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.play.resume";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_play_status, 1);\r
+                                       set_play_status();\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.play.pause";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_play_status, 0);\r
+                                       set_play_status();\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               name: "set.play.default";\r
+                               source: "control.play.button";\r
+                               action: STATE_SET "default" 0.0;\r
+                               target: "control.play.button";\r
+                       }\r
+                       program {\r
+                               name: "set.play.pause";\r
+                               source: "control.play.button";\r
+                               action: STATE_SET "pause" 0.0;\r
+                               target: "control.play.button";\r
+                       }\r
+\r
+                       program {\r
+                               name: "send.play.pause";\r
+                               action: SIGNAL_EMIT "signal.control.play.pause.press" "control.play.button";\r
+                       }\r
+\r
+                       program {\r
+                               name: "send.play.resume";\r
+                               action: SIGNAL_EMIT "signal.control.play.resume.press" "control.play.button";\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.portrate.mode";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_rotate_mode, 0);\r
+                                       set_state(PART:"control.normal.rew.button", "portrate", 0.0);\r
+                                       set_state(PART:"control.normal.ff.button", "portrate", 0.0);\r
+                                       set_state(PART:"control.rect.1", "default", 0.0);\r
+                                       set_state(PART:"control.rect.2", "default", 0.0);\r
+                                       set_state(PART:"control.rect.3", "default", 0.0);\r
+                                       set_state(PART:"control.rect.4", "default", 0.0);\r
+                                       set_state(PART:"control.rect.5", "default", 0.0);\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.landscape.mode";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_rotate_mode, 1);\r
+                                       set_state(PART:"control.normal.rew.button", "landscape", 0.0);\r
+                                       set_state(PART:"control.normal.ff.button", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.1", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.2", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.3", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.4", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.5", "landscape", 0.0);\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.streaming.portrate.mode";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_rotate_mode, 0);\r
+\r
+                                       set_state(PART:"control.rect.1", "default", 0.0);\r
+                                       set_state(PART:"control.rect.2", "default", 0.0);\r
+                                       set_state(PART:"control.rect.3", "default", 0.0);\r
+                                       set_state(PART:"control.rect.4", "default", 0.0);\r
+                                       set_state(PART:"control.rect.5", "default", 0.0);\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.streaming.landscape.mode";\r
+                               source: "*";\r
+                               script {\r
+                                       set_int(val_rotate_mode, 1);\r
+                                       set_state(PART:"control.rect.1", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.2", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.3", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.4", "landscape", 0.0);\r
+                                       set_state(PART:"control.rect.5", "landscape", 0.0);\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.volume.set.mute";\r
+                               source: "*";\r
+                               script {\r
+                                       set_state(PART:"control.volume.button", "hide", 0.0);\r
+                                       set_state(PART:"control.volume.mute.button", "default", 0.0);\r
+                               }\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.control.volume.unset.mute";\r
+                               source: "*";\r
+                               script {\r
+                                       set_state(PART:"control.volume.button", "default", 0.0);\r
+                                       set_state(PART:"control.volume.mute.button", "hide", 0.0);\r
+                               }\r
+                       }\r
+\r
+                       // <-- play status part\r
+\r
+                       // -->common control prog\r
+                       CONTROL_BUTTON_PROG("control.play.button");\r
+                       CONTROL_BUTTON_PROG("control.back.button");\r
+                       CONTROL_BUTTON_PROG("control.volume.button");\r
+                       CONTROL_BUTTON_PROG("control.volume.mute.button");\r
+                       // <-- common control prog\r
+\r
+                       // -->normal mode prog\r
+                       CONTROL_BUTTON_PROG("control.normal.ff.button");\r
+                       CONTROL_BUTTON_PROG("control.normal.rew.button");\r
+\r
+                       CONTROL_BUTTON_STEP("control.normal.ff.button", 1);\r
+                       CONTROL_BUTTON_STEP("control.normal.ff.button", 2);\r
+                       CONTROL_BUTTON_STEP("control.normal.ff.button", 3);\r
+                       CONTROL_BUTTON_STEP("control.normal.ff.button", 4);\r
+\r
+                       CONTROL_BUTTON_STEP("control.normal.rew.button", 1);\r
+                       CONTROL_BUTTON_STEP("control.normal.rew.button", 2);\r
+                       CONTROL_BUTTON_STEP("control.normal.rew.button", 3);\r
+                       CONTROL_BUTTON_STEP("control.normal.rew.button", 4);\r
+\r
+                       CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 1);\r
+                       CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 2);\r
+                       CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 3);\r
+                       CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 4);\r
+\r
+                       CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 1);\r
+                       CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 2);\r
+                       CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 3);\r
+                       CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 4);\r
+                       // <-- normal mode prog\r
+\r
+                       // --> trim mode prog\r
+                       CONTROL_BUTTON_PROG("control.trim.ff.button");\r
+                       CONTROL_BUTTON_PROG("control.trim.rew.button");\r
+\r
+                       CONTROL_BUTTON_STEP("control.trim.ff.button", 1);\r
+                       CONTROL_BUTTON_STEP("control.trim.ff.button", 2);\r
+                       CONTROL_BUTTON_STEP("control.trim.ff.button", 3);\r
+\r
+                       CONTROL_BUTTON_STEP("control.trim.rew.button", 1);\r
+                       CONTROL_BUTTON_STEP("control.trim.rew.button", 2);\r
+                       CONTROL_BUTTON_STEP("control.trim.rew.button", 3);\r
+\r
+                       CONTROL_BUTTON_PROG("control.trim.done.button");\r
+                       CONTROL_BUTTON_PROG("control.trim.cancel.button");\r
+                       // <-- trim mode prog\r
+\r
+               }       // programs\r
+       } // group\r
+} // collections\r
diff --git a/res/edc/custom/vp-naviframe-custom.edc b/res/edc/custom/vp-naviframe-custom.edc
new file mode 100755 (executable)
index 0000000..32c3df8
--- /dev/null
@@ -0,0 +1,901 @@
+#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 200
+#define NAVIFRAME_TOOLBAR_BG_COLOR_INC 248 246 239 255
+#define NAVIFRAME_TITLE_TOP_PADDING_INC 0 32
+#define NAVIFRAME_TITLE_H_INC 111
+#define NAVIFRAME_TAB_TITLE_H_INC 165
+#define NAVIFRAME_TOOLBAR_HEIGHT_INC 0
+#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 68 68
+#define NAVIFRAME_PREV_FUNC_BTN_SIZE_INC 60 60
+#define NAVIFRAME_TITLE_TAB_H_INC 68
+#define NAVIFRAME_TITLE_TAB_LARGE_H_INC 111
+#define NAVIFRAME_TITLE_TAB_FONT_SIZE_INC 44
+#define NAVIFRAME_TITLE_TAB_TEXT_H_INC 87
+#define NAVIFRAME_TITLE_FONT_SIZE_INC 56
+#define NAVIFRAME_TITLE_SMALL_FONT_SIZE_INC 44
+#define NAVIFRAME_ICON_SIZE_INC 38 38
+#define NAVIFRAME_PADDING_INC 16 0
+#define NAVIFRAME_PADDING2_INC 18 0
+#define NAVIFRAME_PADDING3_INC 8 0
+#define NAVIFRAME_BOTTOM_TEXT_PADDING_INC 0 11
+#define NAVIFRAME_BOTTOM_RIGHT_PADDING_INC 26 11
+#define NAVIFRAME_BOTTOM_PADDING_INC 0 10
+#define NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC 115 0
+#define NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 15
+#define NAVIFRAME_ICON_PADDING_INC 70 0
+#define NAVIFRAME_TITLE_TEXT_COLOR_INC 59 115 182 255
+#define NAVIFRAME_SUBTITLE_TEXT_COLOR_INC 59 115 182 255
+#define NAVIFRAME_SUBTITLE_FONT_SIZE_INC 32
+
+#define NAVIFRAME_VIEW_TRANS_TIME 0.3
+
+group {
+       name:"elm/naviframe/base/video/default";
+       parts
+       {
+               part {
+                       name: "base";
+                       description {
+                               state: "default" 0.0;
+                       }
+               }
+       }
+}
+
+group {
+       name:"elm/naviframe/item/video/basic/default";
+       alias:"elm/naviframe/item/video/1line/default";
+       script {
+               public tbar_bg = 0;     //Toolbar BG Show call count
+               public buttons_visible = 0; //when both buttons are visible
+               public toolbar_buttons_visible = 0; //when both toolbar buttons are visible
+       }
+       parts {
+               part {
+                       name: "base";
+                       type: RECT;
+                       mouse_events:  0;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "left" 0.0;
+                               inherit: "default" 0.0;
+                               rel1.relative: -1.0 0.0;
+                               rel2.relative: 0.0 1.0;
+                       }
+                       description {
+                               state: "right" 0.0;
+                               inherit: "default" 0.0;
+                               rel1.relative: 1.0 0.0;
+                               rel2.relative: 2.0 1.0;
+                       }
+               }
+               part {
+                       name: "title_bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 NAVIFRAME_TITLE_H_INC;
+                               align: 0.0 0.0;
+                               fixed: 0 1;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0; to: "base"; }
+                               rel2 { relative: 1.0 0.0; to: "base"; }
+                               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                               fixed: 0 1;
+                               rel1 { relative: 0.0 0.0; to: "base"; }
+                               rel2 { relative: 1.0 0.0; to: "base"; }
+                       }
+               }
+               part {
+                       name: "title_clip";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { to: "title_bg"; }
+                               rel2 { to: "title_bg"; }
+                       }
+               }
+               part {
+                       name: "top_padding";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_TITLE_TOP_PADDING_INC;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+                               rel2 { relative: 1.0 0.0; to: "title_bg"; }
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "padding_center_text1";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_PADDING_INC;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+                               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+                               visible: 0;
+                       }
+                       description {
+                               state: "icon" 0.0;
+                               inherit: "default" 0.0;
+                               min: NAVIFRAME_ICON_PADDING_INC;
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.content";
+                       type: SWALLOW;
+                       scale: 1;
+                       repeat_events: 0;
+                       clip_to: "content_clip";
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               rel1.relative: 0.0 1.0;
+                               rel1.to_x: "base";
+                               rel1.to_y: "title_bg";
+                               rel2.relative: 1.0 0.0;
+                               rel2.to_x: "base";
+                               rel2.to_y: "toolbar_bg";
+                       }
+                       description {
+                               state: "sip_visible" 0.0;
+                               inherit: "default" 0.0;
+                               rel2.relative: 1.0 1.0;
+                               rel2.to: "base";
+                       }
+               }
+               part {
+                       name: "content_clip";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to: "elm.swallow.content";
+                               rel2.to: "elm.swallow.content";
+                       }
+               }
+               part {
+                       name: "padding_center_text2";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_PADDING2_INC;
+                               fixed: 1 0;
+                               align: 1.0 0.5;
+                               rel1 { relative: 0.0 0.0; to: "title_left_btn"; }
+                               rel2 { relative: 0.0 1.0; to: "title_left_btn"; }
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "padding_bottom_text";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_BOTTOM_TEXT_PADDING_INC;
+                               fixed: 0 1;
+                               align: 0.0 1.0;
+                               rel1 { relative: 0.0 1.0; to: "title_bg"; }
+                               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.text.title";
+                       type: TEXT;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               text {
+                                       font: "SLP:style=Medium";
+                                       size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+                                       min: 0 0;
+                                       max: 1 0;
+                                       align: 0.0 0.5;
+                                       text_class: "slp";
+                               }
+                               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+                               align: 0.0 0.5;
+                               fixed: 1 1;
+                               rel1 { relative: 1.0 1.0; to_x: "padding_center_text1"; to_y: "top_padding"; }
+                               rel2 { relative: 0.0 0.0; to_x: "padding_center_text2"; to_y: "padding_bottom_text"; }
+                       }
+                       description {
+                               state: "subtitle_is_set" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       font: "SLP:style=Medium";
+                                       size: NAVIFRAME_TITLE_SMALL_FONT_SIZE_INC;
+                                       min: 0 0;
+                                       max: 1 0;
+                                       align: 0.0 0.2;
+                                       text_class: "slp";
+                               }
+                               align: 0.0 0.0;
+                               rel1 { relative: 1.0 0.0; to_x: "padding_center_text1"; to_y: "top_padding"; }
+                       }
+               }
+               part {
+                       name: "elm.text.subtitle";
+                       type: TEXT;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               text {
+                                       font: "SLP:style=Medium";
+                                       size: NAVIFRAME_SUBTITLE_FONT_SIZE_INC;
+                                       min: 0 0;
+                                       max: 1 0;
+                                       text_class: "slp";
+                                       align: 0.0 1.0;
+                               }
+                               color: NAVIFRAME_SUBTITLE_TEXT_COLOR_INC;
+                               align: 0.0 1.0;
+                               fixed: 1 0;
+                               rel1 { relative: 1.0 1.0; to_x: "padding_center_text1"; to_y: "elm.text.title"; }
+                               rel2 { relative: 0.0 1.0; to_x: "padding_center_text2"; to_y: "elm.text.title"; }
+                       }
+               }
+
+               part {
+                       name: "padding_before_text";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               align: 1.0 0.5;
+                               rel1 { relative: 0.0 0.0; to: "elm.text.title"; }
+                               rel2 { relative: 0.0 1.0; to: "elm.text.title"; }
+                               fixed: 1 0;
+                               min: NAVIFRAME_PADDING_INC;
+                               visible: 0;
+                       }
+               }
+               part {
+               name: "elm.swallow.icon";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_ICON_SIZE_INC;
+                               fixed: 1 1;
+                               rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+                               rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+                               aspect: 1.0 1.0;
+                               aspect_preference: VERTICAL;
+                               align: 1.0 0.5;
+                       }
+               }
+               part {
+                       name: "click_event_area";
+                       ignore_flags: ON_HOLD;
+                       repeat_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { to: "title_bg"; }
+                               rel2 { to: "title_bg"; }
+                       }
+               }
+               part {
+                       name: "title_left_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+                               fixed: 1 1;
+                               align: 1 0.5;
+                               rel1 { relative: 0.0 0.0; to: "title_btns_padding"; }
+                               rel2 { relative: 0.0 1.0; to: "title_btns_padding"; }
+                       }
+               }
+               part {
+                       name: "title_btns_padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 1;
+                               align: 1 0.5;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+                               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               min: NAVIFRAME_PADDING2_INC;
+                       }
+               }
+               part {
+                       name: "bottom_right_padding";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 1;
+                               align: 1.0 1.0;
+                               rel1 { relative: 1.0 1.0; to: "title_bg"; }
+                               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+                               visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               min: NAVIFRAME_BOTTOM_RIGHT_PADDING_INC;
+                       }
+               }
+               part {
+                       name: "title_right_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+                               align: 1 0.5;
+                               fixed: 1 1;
+                               rel1 { relative: 1.0 1.0; to_x: "title_bg"; to_y: "top_padding"; }
+                               rel2 { relative: 0.0 0.0; to: "bottom_right_padding"; }
+                       }
+               }
+               part {
+                       name: "toolbar_bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               max: 999999 0;
+                               fixed: 0 1;
+                               align: 0.0 1.0;
+                               visible: 0;
+                               rel1 { to: "base"; }
+                               rel2 { to: "base"; }
+                               color: NAVIFRAME_TOOLBAR_BG_COLOR_INC;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 NAVIFRAME_TOOLBAR_HEIGHT_INC;
+                               max: 999999 NAVIFRAME_TOOLBAR_HEIGHT_INC;
+                               visible: 1;
+                       }
+                       description {
+                               state: "sip_visible" 0.0;
+                               inherit: "default" 0.0;
+                               align: 0.0 0.0;
+                               min: 1 NAVIFRAME_TITLE_H_INC;
+                               rel1 { to: "title_bg"; }
+                               rel2 { to: "title_bg"; }
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "more_btn_bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 0.0; to: "toolbar_bg"; }
+                               rel2 { relative: 0.0 1.0; to: "toolbar_bg"; }
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "toolbar_more_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_PREV_FUNC_BTN_SIZE_INC;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1.to: "more_btn_bg";
+                               rel2.to: "more_btn_bg";
+                       }
+               }
+               part {
+                       name: "prev_btn_bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC;
+                               fixed: 1 0;
+                               align: 1.0 0.0;
+                               rel1 { relative: 1.0 0.0; to: "toolbar_bg"; }
+                               rel2.to: "toolbar_bg";
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.swallow.prev_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_PREV_FUNC_BTN_SIZE_INC;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1.to: "prev_btn_bg";
+                               rel2.to: "prev_btn_bg";
+                       }
+               }
+               part {
+                       name: "toolbar_clip";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 1.0 0.0; to: "more_btn_bg"; }
+                               rel2 { relative: 0.0 1.0; to: "prev_btn_bg"; }
+                       }
+               }
+               part {
+                       name: "toolbar_button1";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "toolbar_clip";
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1.to: "toolbar_clip";
+                               rel2.to: "toolbar_clip";
+                       }
+                       description {
+                               state: "buttons_set" 0.0;
+                               inherit: "default" 0.0;
+                               align: 1.0 0.5;
+                               rel2 { relative: 0.0 1.0; to: "toolbar_button_padding"; }
+                       }
+               }
+
+               part {
+                       name: "toolbar_button_padding";
+                       type: RECT;
+                       scale : 1;
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 0;
+                               max: NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 9999;
+                               fixed : 1 0;
+                               visible: 0;
+                               align: 0.5 0.5;
+                               rel1.to: "toolbar_clip";
+                               rel2.to: "toolbar_clip";
+                       }
+               }
+               part {
+                       name: "toolbar_button2";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "toolbar_clip";
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1.to: "toolbar_clip";
+                               rel2.to: "toolbar_clip";
+                       }
+                       description {
+                               state: "buttons_set" 0.0;
+                               inherit: "default" 0.0;
+                               align: 0.0 0.5;
+                               rel1 { relative: 1.0 0.0; to: "toolbar_button_padding"; }
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "content_new_pushed";
+                       signal: "elm,state,new,pushed,internal";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "base";
+                       transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+                       after: "show_finished";
+               }
+               program {
+                       name: "content_cur_pushed";
+                       signal: "elm,state,cur,pushed,internal";
+                       source: "";
+                       action: STATE_SET "left" 0.0;
+                       target: "base";
+                       transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+                       after: "pushed_finished";
+               }
+               program {
+                       name: "content_prev_popped";
+                       signal: "elm,state,prev,popped,internal";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "base";
+                       transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+                       after: "show_finished";
+               }
+               program {
+                       name: "content_cur_popped";
+                       signal: "elm,state,cur,popped,internal";
+                       source: "";
+                       action: STATE_SET "right" 0.0;
+                       target: "base";
+                       transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+                       after: "popped_finished";
+               }
+               program {
+                       name: "cur_pushed";
+                       signal: "elm,state,cur,pushed";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "default", 0.0);
+                               emit("elm,state,cur,pushed,internal", "");
+                       }
+               }
+               program {
+                       name: "new_pushed";
+                       signal: "elm,state,new,pushed";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "right", 0.0);
+                               emit("elm,state,new,pushed,internal", "");
+                       }
+               }
+               program {
+                       name: "prev_popped";
+                       signal: "elm,state,prev,popped";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "left", 0.0);
+                               emit("elm,state,prev,popped,internal", "");
+                       }
+               }
+               program {
+                       name: "cur_popped";
+                       signal: "elm,state,cur,popped";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "default", 0.0);
+                               emit("elm,state,cur,popped,internal", "");
+                       }
+               }
+               program {
+                       name: "visible";
+                       signal: "elm,state,visible";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "base";
+               }
+               program {
+                       name: "title_show";
+                       signal: "elm,state,title,show";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "title_bg";
+                       transition: LINEAR 0.4;
+                       after: "show_finished";
+               }
+               program {
+                       name: "title_hide";
+                       signal: "elm,state,title,hide";
+                       source: "elm";
+                       action: STATE_SET "hide" 0.0;
+                       target: "title_bg";
+                       transition: LINEAR 0.4;
+                       after: "hide_finished";
+               }
+               program {
+                       name: "subtitle_show";
+                       signal: "elm,state,subtitle,show";
+                       source: "elm";
+                       script {
+                               set_state(PART:"elm.text.title", "subtitle_is_set", 0.0);
+                       }
+               }
+               program {
+                       name: "subtitle_hide";
+                       signal: "elm,state,subtitle,hide";
+                       source: "elm";
+                       script {
+                               set_state(PART:"elm.text.title", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "prev_btn_show";
+                       signal: "elm,state,prev_btn,show";
+                       source: "elm";
+                       script {
+                               emit("elm,state,toolbar_bg,show", "elm");
+                       }
+               }
+               program {
+                       name: "prev_btn_hide";
+                       signal: "elm,state,prev_btn,hide";
+                       source: "elm";
+                       script {
+                               emit("elm,state,toolbar_bg,hide", "elm");
+                       }
+               }
+               program {
+                       name: "icon_show";
+                       signal: "elm,state,icon,show";
+                       source: "elm";
+                       action: STATE_SET "icon" 0.0;
+                       target: "padding_center_text1";
+               }
+               program {
+                       name: "icon_hide";
+                       signal: "elm,state,icon,hide";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "padding_center_text1";
+               }
+               program {
+                       name: "sip_show";
+                       signal: "elm,state,sip,shown";
+                       source: "";
+                       script {
+                               if (get_int(tbar_bg) <= 0)
+                                       set_state(PART:"toolbar_bg", "default", 0.0);
+                               else
+                               {
+                                       set_state(PART:"toolbar_bg", "sip_visible", 0.0);
+                                       set_state(PART:"elm.swallow.content", "sip_visible", 0.0);
+                               }
+                       }
+               }
+
+               program {
+                       name: "sip_hide";
+                       signal: "elm,state,sip,hidden";
+                       source: "";
+                       script {
+                               if (get_int(tbar_bg) <= 0)
+                                       set_state(PART:"toolbar_bg", "default", 0.0);
+                               else
+                               {
+                                       set_state(PART:"toolbar_bg", "visible", 0.0);
+                                       set_state(PART:"elm.swallow.content", "default", 0.0);
+                               }
+                       }
+               }
+               program {
+                       name: "left_btn_show";
+                       signal: "elm,state,title_left_btn,show";
+                       source: "elm";
+                       script {
+                               set_int(buttons_visible, get_int(buttons_visible) + 1);
+                               set_state(PART:"bottom_right_padding", "visible", 0.0);
+                               if (get_int(buttons_visible) >= 2)
+                                       set_state(PART:"title_btns_padding", "visible", 0.0);
+                       }
+               }
+               program {
+                       name: "left_btn_hide";
+                       signal: "elm,state,title_left_btn,hide";
+                       source: "elm";
+                       script {
+                               set_int(buttons_visible, get_int(buttons_visible) - 1);
+                               set_state(PART:"title_btns_padding", "default", 0.0);
+                               if (get_int(buttons_visible) == 0)
+                                       set_state(PART:"bottom_right_padding", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "right_btn_show";
+                       signal: "elm,state,title_right_btn,show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       script {
+                               set_int(buttons_visible, get_int(buttons_visible) + 1);
+                               set_state(PART:"bottom_right_padding", "visible", 0.0);
+                               if (get_int(buttons_visible) >= 2)
+                                       set_state(PART:"title_btns_padding", "visible", 0.0);
+                       }
+               }
+               program {
+                       name: "right_btn_hide";
+                       signal: "elm,state,title_right_btn,hide";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       script {
+                               set_int(buttons_visible, get_int(buttons_visible) - 1);
+                               set_state(PART:"title_btns_padding", "default", 0.0);
+                               if (get_int(buttons_visible) == 0)
+                                       set_state(PART:"bottom_right_padding", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "more_btn_show";
+                       signal: "elm,state,toolbar_more_btn,show";
+                       source: "elm";
+                       script {
+                               emit("elm,state,toolbar_bg,show", "elm");
+                       }
+               }
+               program {
+                       name: "more_btn_hide";
+                       signal: "elm,state,toolbar_more_btn,hide";
+                       source: "elm";
+                       script {
+                               emit("elm,state,toolbar_bg,hide", "elm");
+                       }
+               }
+               program {
+                       name: "toolbar_button1_show";
+                       signal: "elm,state,toolbar_button1,show";
+                       source: "elm";
+                       script {
+                               emit("elm,state,toolbar_bg,show", "elm");
+                               set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) + 1);
+                               if (get_int(toolbar_buttons_visible) >= 2)
+                               {
+                                       set_state(PART:"toolbar_button1", "buttons_set", 0.0);
+                                       set_state(PART:"toolbar_button2", "buttons_set", 0.0);
+                               }
+                       }
+               }
+               program {
+                       name: "toolbar_button1_hide";
+                       signal: "elm,state,toolbar_button1,hide";
+                       source: "elm";
+                       script {
+                               emit("elm,state,toolbar_bg,hide", "elm");
+                               set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) - 1);
+                               set_state(PART:"toolbar_button1", "default", 0.0);
+                               set_state(PART:"toolbar_button2", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "toolbar_button2_show";
+                       signal: "elm,state,toolbar_button2,show";
+                       source: "elm";
+                       script {
+                               emit("elm,state,toolbar_bg,show", "elm");
+                               set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) + 1);
+                               if (get_int(toolbar_buttons_visible) >= 2)
+                               {
+                                       set_state(PART:"toolbar_button1", "buttons_set", 0.0);
+                                       set_state(PART:"toolbar_button2", "buttons_set", 0.0);
+                               }
+                       }
+               }
+               program {
+                       name: "toolbar_button2_hide";
+                       signal: "elm,state,toolbar_button2,hide";
+                       source: "elm";
+                       script {
+                               emit("elm,state,toolbar_bg,hide", "elm");
+                               set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) - 1);
+                               set_state(PART:"toolbar_button1", "default", 0.0);
+                               set_state(PART:"toolbar_button2", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "toolbar_bg_show";
+                       signal: "elm,state,toolbar_bg,show";
+                       source: "elm";
+                       script {
+                               set_state(PART:"toolbar_bg", "visible", 0.0);
+                               set_int(tbar_bg, get_int(tbar_bg) + 1);
+                       }
+               }
+               program {
+                       name: "toolbar_bg_hide";
+                       signal: "elm,state,toolbar_bg,hide";
+                       source: "elm";
+                       script {
+                               set_int(tbar_bg, get_int(tbar_bg) - 1);
+                               if (get_int(tbar_bg) <= 0)
+                                       set_state(PART:"toolbar_bg", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "toolbar_open";
+                       signal: "elm,state,toolbar,open";
+                       source: "";
+                       action: STATE_SET "visible" 0.0;
+                       target: "toolbar_bg";
+                       transition: LINEAR 0.2;
+               }
+               program {
+                       name: "toolbar_close";
+                       signal: "elm,state,toolbar,close";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "toolbar_bg";
+                       transition: LINEAR 0.2;
+               }
+               program {
+                       name: "toolbar_instant_open";
+                       signal: "elm,state,toolbar,instant_open";
+                       source: "";
+                       script {
+                               emit("elm,state,prev_btn,show", "elm");
+                               emit("elm,state,toolbar_button1,show", "elm");
+                       }
+               }
+               program {
+                       name: "toolbar_instant_close";
+                       signal: "elm,state,toolbar,instant_close";
+                       source: "";
+                       script {
+                               emit("elm,state,prev_btn,hide", "elm");
+                               emit("elm,state,toolbar_button1,hide", "elm");
+                       }
+               }
+               program {
+                       name: "show_finished";
+                       action: SIGNAL_EMIT "elm,action,show,finished" "";
+               }
+               program {
+                       name: "hide_finished";
+                       action: SIGNAL_EMIT "elm,action,hide,finished" "";
+               }
+
+               program {
+                       name: "pushed_finished";
+                       action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+               }
+               program {
+                       name: "popped_finished";
+                       action: SIGNAL_EMIT "elm,action,popped,finished" "";
+               }
+               program {
+                       name: "title_clicked";
+                       signal: "mouse,clicked,1";
+                       source: "click_event_area";
+                       action: SIGNAL_EMIT "elm,action,title,clicked" "";
+               }
+               program {
+                       name: "display_mode_compress";
+                       signal: "display,mode,compress";
+                       source: "";
+                       action: SIGNAL_EMIT "elm,state,toolbar,instant_close" "";
+               }
+               program {
+                       name: "display_mode_default";
+                       signal: "display,mode,default";
+                       source: "";
+                       action: SIGNAL_EMIT "elm,state,toolbar,instant_open" "";
+               }
+       }
+}
+
diff --git a/res/edc/detail.edc b/res/edc/detail.edc
new file mode 100755 (executable)
index 0000000..17b6c2b
--- /dev/null
@@ -0,0 +1,34 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+       group {
+               name: "detail";
+
+               parts {
+                       part {
+                               name: "detail.background";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 0 0 0 255;
+                               }
+                       }
+                       part {
+                               name: "detail.list";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                               }
+                       }
+               } /* parts */
+       } /* group */
+} /* collections */
\ No newline at end of file
diff --git a/res/edc/hidden_button_panel.edc b/res/edc/hidden_button_panel.edc
new file mode 100755 (executable)
index 0000000..e0b9ce2
--- /dev/null
@@ -0,0 +1,187 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+/* program macro */
+
+#define CONTROL_BUTTON_PROG(_item_name_)                                       \
+program {                                                                                                      \
+       name: _item_name_".pressed";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,down,1";                                                                         \
+       action: STATE_SET "pressed" 0.0;                                                        \
+       target: _item_name_;                                                                            \
+       after: "send."_item_name_".down.signal";                                                \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: _item_name_".clicked";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,up,1";                                                                           \
+       action: STATE_SET "default" 0.0;                                                                \
+       target: _item_name_;                                                                            \
+       after: "send."_item_name_".up.signal";                                          \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".down.signal";                                                 \
+       action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_;    \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".up.signal";                                           \
+       action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_;      \
+} /* CONTROL_BUTTON_PROG */
+
+collections {
+       group {
+               name: "panel.button";
+               script {
+                       public val_repeat_mode = 0;             /* 0: repeat_off, 1: repeat_one, 2: repeate_all */
+                       public change_repeat() {
+                               if(get_int(val_repeat_mode) == 0) {
+                                       set_int(val_repeat_mode, 1);
+                                       run_program(PROGRAM:"send.panel.button.repeat.one");
+                               }
+                               else if(get_int(val_repeat_mode) == 1) {
+                                       set_int(val_repeat_mode, 2);
+                                       run_program(PROGRAM:"send.panel.button.repeat.all");
+                               }
+                               else {
+                                       set_int(val_repeat_mode, 0);
+                                       run_program(PROGRAM:"send.panel.button.repeat.off");
+                               }
+                       }
+               }
+
+               parts {
+                       part {
+                               name: "panel.button.sa";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 70 56;
+                                       fixed: 1 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 0.0 1.0;}
+                                       color: 255 255 255 255;
+                                       image { normal: "panel/T01-2_icon_controller_sa.png"; }
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: "panel/T01-2_icon_controller_sa.png"; }
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "panel.button.repeat";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 70 56;
+                                       fixed: 1 1;
+                                       align: 1.0 0.0;
+                                       rel1 { relative: 1.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                                       color: 255 255 255 255;
+                                       image { normal: "panel/T01-2_icon_controller_repeat.png"; }
+                               }
+                               description {
+                                       state: "repeat_one" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: "panel/T01-2_icon_controller_repeat_1.png"; }
+                               }
+                               description {
+                                       state: "repeat_all" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: "panel/T01-2_icon_controller_repeat_all.png"; }
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+               } /* parts */
+
+               programs {
+                       CONTROL_BUTTON_PROG("panel.button.sa");
+                       CONTROL_BUTTON_PROG("panel.button.repeat");
+
+                       program {
+                               signal: "signal.panel.button.streaming.mode";
+                               source: "*";
+                               action: STATE_SET "hide" 0.0;
+                               target: "panel.button.repeat";
+                       }
+
+                       program {
+                               signal: "signal.panel.button.repeat.down";
+                               source: "*";
+                               script: {
+                                       if(get_int(val_repeat_mode) == 0) {
+                                               set_state(PART:"panel.button.repeat", "default", 0.0);
+                                       }
+                                       else if(get_int(val_repeat_mode) == 1)  {
+                                               set_state(PART:"panel.button.repeat", "repeat_one", 0.0);
+                                       }
+                                       else if(get_int(val_repeat_mode) == 2)  {
+                                               set_state(PART:"panel.button.repeat", "repeat_all", 0.0);
+                                       }
+                               }
+                       }
+
+                       program {
+                               signal: "signal.panel.button.repeat.up";
+                               source: "*";
+                               script: {
+                                       change_repeat();
+                               }
+                       }
+
+                       program {
+                               name: "send.panel.button.repeat.off";
+                               action: SIGNAL_EMIT "signal.panel.button.repeat.off" "panel.button.repeat";
+                       }
+
+                       program {
+                               name: "send.panel.button.repeat.one";
+                               action: SIGNAL_EMIT "signal.panel.button.repeat.one" "panel.button.repeat";
+                       }
+
+                       program {
+                               name: "send.panel.button.repeat.all";
+                               action: SIGNAL_EMIT "signal.panel.button.repeat.all" "panel.button.repeat";
+                       }
+
+                       program {
+                               signal: "signal.panel.button.repeat.off";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+                               target: "panel.button.repeat";
+                       }
+                       program {
+                               signal: "signal.panel.button.repeat.one";
+                               source: "*";
+                               action: STATE_SET "repeat_one" 0.0;
+                               target: "panel.button.repeat";
+                       }
+                       program {
+                               signal: "signal.panel.button.repeat.all";
+                               source: "*";
+                               action: STATE_SET "repeat_all" 0.0;
+                               target: "panel.button.repeat";
+                       }
+
+               } /* programs */
+       } /* group */
+} /* collections */
diff --git a/res/edc/image_res.edc b/res/edc/image_res.edc
new file mode 100755 (executable)
index 0000000..6613a6c
--- /dev/null
@@ -0,0 +1,137 @@
+\r
+images {\r
+       image: "gallery_video_player_bg.png" COMP;\r
+       image: "gallery_loading_ani_01.png" COMP;\r
+       image: "gallery_loading_ani_02.png" COMP;\r
+       image: "gallery_loading_ani_03.png" COMP;\r
+       image: "gallery_loading_ani_04.png" COMP;\r
+       image: "gallery_loading_ani_05.png" COMP;\r
+       image: "gallery_loading_ani_06.png" COMP;\r
+       image: "gallery_loading_ani_07.png" COMP;\r
+       image: "gallery_loading_ani_08.png" COMP;\r
+       image: "gallery_loading_ani_09.png" COMP;\r
+       image: "gallery_loading_ani_10.png" COMP;\r
+       image: "gallery_loading_ani_11.png" COMP;\r
+       image: "gallery_loading_ani_12.png" COMP;\r
+       image: "gallery_loading_ani_13.png" COMP;\r
+       image: "gallery_loading_ani_14.png" COMP;\r
+       image: "gallery_loading_ani_15.png" COMP;\r
+       image: "gallery_loading_ani_16.png" COMP;\r
+       image: "gallery_loading_ani_17.png" COMP;\r
+       image: "gallery_loading_ani_18.png" COMP;\r
+       image: "gallery_loading_ani_19.png" COMP;\r
+       image: "gallery_loading_ani_20.png" COMP;\r
+       image: "gallery_loading_ani_21.png" COMP;\r
+       image: "gallery_loading_ani_22.png" COMP;\r
+       image: "gallery_loading_ani_23.png" COMP;\r
+       image: "gallery_loading_ani_24.png" COMP;\r
+       image: "gallery_loading_ani_25.png" COMP;\r
+       image: "gallery_loading_ani_26.png" COMP;\r
+       image: "gallery_loading_ani_27.png" COMP;\r
+       image: "gallery_loading_ani_28.png" COMP;\r
+       image: "gallery_loading_ani_29.png" COMP;\r
+       image: "gallery_loading_ani_30.png" COMP;\r
+       image: "T01_toolbar_bg.png" COMP;\r
+       image: "T01_toolbar_press.png" COMP;\r
+       image: "00_winset_control_top_arrow.png" COMP;\r
+       image: "T01_Nocontents_multimedia.png" COMP;\r
+       image: "T01-2_hold_icon_lock.png" COMP;\r
+\r
+       image: "subtitle/T01-2_sync_slowly.png" COMP;\r
+       image: "subtitle/T01-2_sync_btn_bg.png" COMP;\r
+       image: "subtitle/T01-2_sync_faster.png" COMP;\r
+       image: "subtitle/T01-2_sync_list_press.png" COMP;\r
+\r
+       image: "option/T01-2_icon_function_bg.png" COMP;\r
+       image: "option/T01-2_icon_function_bookmark.png" COMP;\r
+       image: "option/T01-2_icon_function_screenmode.png" COMP;\r
+       image: "option/T01-2_icon_function_screenmode02.png" COMP;\r
+       image: "option/T01-2_icon_function_screenmode03.png" COMP;\r
+       image: "option/T01-2_icon_function_select_bg.png" COMP;\r
+       image: "option/T01-2_icon_function_share.png" COMP;\r
+       image: "option/T01-2_icon_controller_multiwin.png" COMP;\r
+       image: "option/T01-2_icon_controller_more.png" COMP;\r
+       image: "option/T01-2_icon_controller_trim.png" COMP;\r
+       image: "option/T01-2_icon_controller_connection_info.png" COMP;\r
+       image: "option/T01-2_icon_controller_repeat_off.png" COMP;\r
+       image: "option/T01-2_icon_controller_repeat_on.png" COMP;\r
+       image: "option/T01-2_icon_controller_sa.png" COMP;\r
+\r
+       image: "bookmark/T01-2_function_tray.png" COMP;\r
+       image: "bookmark/T01-2_icon_thumbnail_bg.png" COMP;\r
+       image: "bookmark/T01-2_btn_bookmark.png" COMP;\r
+       image: "bookmark/T01-2_btn_bookmark_press.png" COMP;\r
+       image: "bookmark/T01-2_bookmark_thumbnail.png" COMP;\r
+       image: "bookmark/T01-2_btn_remove_bookmark.png" COMP;\r
+       image: "bookmark/T01-2_btn_remove_bookmark_press.png" COMP;\r
+\r
+       image: "panel/T01-2_controller_progress_bar.png" COMP;\r
+       image: "panel/T01-2_controller_progress_bg.png" COMP;\r
+       image: "panel/T01-2_icon_toolbar_cancel.png" COMP;\r
+       image: "panel/T01-2_icon_toolbar_done.png" COMP;\r
+\r
+       image: "adjustment/T01-2_controller_progress_handle.png" COMP;\r
+       image: "adjustment/T01-2_controller_progress_handle_press.png" COMP;\r
+       image: "adjustment/T01-2_fine_adjustment_bg.png" COMP;\r
+       image: "adjustment/T01-2_fine_adjustment_bg_ef.png" COMP;\r
+       image: "adjustment/T01-2_fine_adjustment_progress_bar.png" COMP;\r
+       image: "adjustment/T01-2_fine_adjustment_progress_bg.png" COMP;\r
+       image: "adjustment/T01-2_fine_adjustment_progress_handle.png" COMP;\r
+\r
+       image: "trim/T01-2_controller_trimming_handle_ending_press.png" COMP;\r
+       image: "trim/T01-2_controller_trimming_handle_ending.png" COMP;\r
+       image: "trim/T01-2_controller_trimming_handle_beginning_press.png" COMP;\r
+       image: "trim/T01-2_controller_trimming_handle_beginning.png" COMP;\r
+       image: "trim/T01-2_controller_track_ball.png" COMP;\r
+       image: "trim/T01-2_icon_toolbar_forward.png" COMP;\r
+       image: "trim/T01-2_icon_toolbar_reverse.png" COMP;\r
+\r
+\r
+       image: "mw/T01-2_icon_close.png" COMP;\r
+       image: "mw/T01-2_icon_full_size.png" COMP;\r
+       image: "mw/T01-2_icon_hide_panel.png" COMP;\r
+       image: "mw/T01-2_icon_open_panel.png" COMP;\r
+       image: "mw/T01-2_multiscreen_bg.png" COMP;\r
+       image: "mw/T01-2_multiscreen_bg_press.png" COMP;\r
+       image: "mw/T01-2_multiscreen_player_bg.png" COMP;\r
+       image: "mw/T01-2_player_icon_FF.png" COMP;\r
+       image: "mw/T01-2_player_icon_FF_press.png" COMP;\r
+       image: "mw/T01-2_player_icon_Pause.png" COMP;\r
+       image: "mw/T01-2_player_icon_Pause_press.png" COMP;\r
+       image: "mw/T01-2_player_icon_Play.png" COMP;\r
+       image: "mw/T01-2_player_icon_Play_press.png" COMP;\r
+       image: "mw/T01-2_player_icon_REW.png" COMP;\r
+       image: "mw/T01-2_player_icon_REW_press.png" COMP;\r
+       image: "mw/T01-2_resize_controller.png" COMP;\r
+       image: "mw/T01-2_resize_controller_press.png" COMP;\r
+\r
+       // FOR GENLIST SWEEP and check box\r
+       image: "00_sweep_list_bg.png" COMP;\r
+       image: "T01_checkbox.png" COMP;\r
+       image: "00_check_bg_dim.png" COMP;\r
+       image: "T01_check.png" COMP;\r
+       image: "T01_grid_select_check.png" COMP;\r
+       image: "00_grid_select_check.png" COMP;\r
+       image: "T01_video_list_progress_bar.png" COMP;\r
+       image: "00_winset_list_progress_bg.png" COMP;\r
+\r
+       image: "white/panel/T01-2_btn_toolbar_back.png" COMP;\r
+       image: "white/panel/T01-2_btn_toolbar_volume.png" COMP;\r
+       image: "white/panel/T02_volume_icon_Mute.png" COMP;\r
+       image: "white/control/T01-2_icon_toolbar_next.png" COMP;\r
+       image: "white/control/T01-2_icon_toolbar_play.png" COMP;\r
+       image: "white/control/T01-2_icon_toolbar_previous.png" COMP;\r
+       image: "white/control/T01-2_icon_toolbar_stop.png" COMP;\r
+       image: "white/control/T01-2_icon_toolbar_pause.png" COMP;\r
+\r
+       image: "white/common/T01-2_popup_bg.png" COMP;\r
+       image: "white/common/T01-2_popup_arrow.png" COMP;\r
+\r
+       image: "volume/T01-2_volume_icon_02.png" COMP;\r
+       image: "volume/T01-2_volume_icon_01.png" COMP;\r
+       image: "volume/T01-2_player_volume_handle_press.png" COMP;\r
+       image: "volume/T01-2_player_volume_handle.png" COMP;\r
+       image: "volume/T01-2_player_progress_bg.png" COMP;\r
+       image: "volume/T01-2_player_progress_bar.png" COMP;\r
+}\r
+\r
diff --git a/res/edc/main.edc b/res/edc/main.edc
new file mode 100755 (executable)
index 0000000..d0fe9e8
--- /dev/null
@@ -0,0 +1,557 @@
+#define GRAY_RECT_COLOR                        128 128 128 128
+#define SPEEDBOX_OFFSET_Y              225
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+       group {
+               name: "main";
+
+               parts {
+                       part {
+                               name: "main.background";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 255 255 255 0;
+                               }
+                       }
+                       part {
+                               name: "main.nocontents.bg";
+                               type: IMAGE;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 399 399;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.4;}
+                                       rel2 { relative: 0.5 0.4;}
+                                       image { normal: "gallery_video_player_bg.png"; border: 7 7 0 0; }
+                                       color: GRAY_RECT_COLOR;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "main.nocontents.image";
+                               type: IMAGE;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 144 144;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.4;}
+                                       rel2 { relative: 0.5 0.4;}
+                                       image { normal: "T01_Nocontents_multimedia.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "main.speedbox";
+                               type: IMAGE;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 280 173;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.49; }
+                                       rel2 { relative: 0.5 0.49;}
+                                       image {normal: "white/common/T01-2_popup_bg.png"; border: 10 10 10 10;}
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "main.speedbox.rect";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 280 173;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.49; }
+                                       rel2 { relative: 0.5 0.49;}
+                                       color: 0 0 0 102;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "main.speedbox.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "main.speedbox"; }
+                                       rel2 { relative: 1.0 1.0; to: "main.speedbox"; }
+                                       color: FONT_PLAYBACK_SPEED_COLOR;
+                                       text {
+                                               font: FONT_PLAYBACK_SPEED_FONT;
+                                               text_class: FONT_PLAYBACK_SPEED_CLASS;
+                                               size: FONT_PLAYBACK_SPEED_SIZE;
+                                               text:  "";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "main.option.button";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 45;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 0.0; }
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 0;
+                               }
+                               description {
+                                       state: "visible_off" 0.0;
+                                       inherit: "hide" 0.0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 104;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 90;
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible : 0;
+                               }
+                       }
+
+                       part {
+                               name: "main.bookmark";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 206;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 1.0; to_y: "main.option.button";}
+                                       rel2 { relative: 1.0 0.0; }
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 0.0; }
+                                       min: 0 207;
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible : 0;
+                               }
+                       }
+
+                       part {
+                               name: "main.panel.bg";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.0 1.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                                       color : 0 0 0 128;
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 214;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 204;
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 297;
+                               }
+                       }
+
+                       part {
+                               name: "main.panel.line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.0; to_y: "main.panel.bg";}
+                                       rel2 { relative: 1.0 0.0; to_y: "main.panel.bg";}
+                                       color : 153 153 153 178;
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 1;
+                               }
+
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "main.panel.top";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 12;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.3 0.0; to_y: "main.panel.line";}
+                                       rel2 { relative: 0.7 1.0; to_y: "main.panel.line";}
+                                       color : 0 0 0 0;
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 17;
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "main.panel.button";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 56;
+                                       fixed: 0 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0486 1.0; to_y: "main.panel.top";}
+                                       rel2 { relative: 0.9514 1.0; to_y: "main.panel.top";}
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0273 1.0; to_y: "main.panel.top";}
+                                       rel2 { relative: 0.9727 1.0; to_y: "main.panel.top";}
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+
+                       part {
+                               name: "main.panel";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.0 1.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 192;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 192;
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 297;
+                               }
+                       }
+
+                       part { name: "main.animation";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 288 195;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.4;}
+                                       rel2 { relative: 0.5 0.4;}
+                                       color: 255 0 0 255;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+               } /* parts */
+
+               programs {
+                       program {
+                               signal: "signal.main.nocontents.show";
+                               source: "*";
+                                action: STATE_SET "show" 0.0;
+                                target: "main.nocontents.image";
+                                target: "main.nocontents.bg";
+                       }
+
+                       program {
+                               signal: "signal.main.nocontents.hide";
+                               source: "*";
+                                action: STATE_SET "default" 0.0;
+                                target: "main.nocontents.image";
+                                target: "main.nocontents.bg";
+                       }
+
+                       program {
+                               signal: "signal.main.speedbox.show";
+                               source: "*";
+                                action: STATE_SET "show" 0.0;
+                                target: "main.speedbox";
+                                target: "main.speedbox.rect";
+                                target: "main.speedbox.txt";
+                       }
+
+                       program {
+                               signal: "signal.main.speedbox.hide";
+                               source: "*";
+                                action: STATE_SET "default" 0.0;
+                                target: "main.speedbox";
+                                target: "main.speedbox.rect";
+                                target: "main.speedbox.txt";
+                       }
+
+                       program {
+                               signal: "signal.main.animation.show";
+                               source: "*";
+                                action: STATE_SET "show" 0.0;
+                                target: "main.animation";
+                       }
+
+                       program {
+                               signal: "signal.main.animation.hide";
+                               source: "*";
+                                action: STATE_SET "default" 0.0;
+                                target: "main.animation";
+                       }
+
+                       program {
+                               signal: "signal.main.portrate.mode";
+                               source: "*";
+                               action: STATE_SET "portrate" 0.0;
+                               target: "main.option.button";
+                               target: "main.panel.bg";
+                               target: "main.panel.top";
+                               target: "main.panel.button";
+                               target: "main.panel";
+                               target: "main.bookmark";
+                       }
+
+                       program {
+                               signal: "signal.main.landscape.mode";
+                               source: "*";
+                               action: STATE_SET "landscape" 0.0;
+                               target: "main.option.button";
+                               target: "main.panel.bg";
+                               target: "main.panel.top";
+                               target: "main.panel.button";
+                               target: "main.panel";
+                       }
+
+                       program {
+                               signal: "signal.main.trim.mode";
+                               source: "*";
+                               action: STATE_SET "trim" 0.0;
+                               target: "main.option.button";
+                               target: "main.panel.bg";
+                               target: "main.panel.top";
+                               target: "main.panel.button";
+                               target: "main.panel.line";
+                               target: "main.panel";
+                       }
+
+                       program {
+                               name: "control_portrait_show";
+                               signal: "signal.main.control.portrait.show";
+                               source: "*";
+                               action: STATE_SET "portrate" 0.0;
+                               target: "main.option.button";
+                               target: "main.panel.bg";
+                               target: "main.panel";
+                               transition: LINEAR 0.4;
+                               after: "control_show_finished";
+                       }
+
+                       program {
+                               name: "control_landscape_show";
+                               signal: "signal.main.control.landscape.show";
+                               source: "*";
+                               action: STATE_SET "landscape" 0.0;
+                               target: "main.option.button";
+                               target: "main.panel.bg";
+                               target: "main.panel";
+                               transition: LINEAR 0.4;
+                               after: "control_show_finished";
+                       }
+
+                       program {
+                               name: "control_hide";
+                               signal: "signal.main.control.hide";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+                               target: "main.option.button";
+                               target: "main.panel.bg";
+                               target: "main.panel";
+                               transition: LINEAR 0.4;
+                               after: "control_hide_finished";
+                       }
+
+                       program {
+                               name: "control_landscape_bookmark_hide";
+                               signal: "signal.main.control.hide.with.bookmark";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+                               target: "main.panel.bg";
+                               target: "main.panel";
+                               transition: LINEAR 0.4;
+                               after: "control_hide_finished";
+                       }
+                       program {
+                               name: "control_show_finished";
+                               action: SIGNAL_EMIT "signal.control.show.finish" "*";
+                       }
+
+                       program {
+                               name: "control_hide_finished";
+                               action: SIGNAL_EMIT "signal.control.hide.finish" "*";
+                       }
+
+                       program {
+                               signal: "signal.main.landscape.bookmark.hide";
+                               source: "*";
+                               script {
+                                       set_state(PART:"main.option.button", "visible_off", 0.0);
+                                       set_state(PART:"main.bookmark", "default", 0.0);
+                               }
+                       }
+
+                       program {
+                               signal: "signal.main.landscape.bookmark.show";
+                               source: "*";
+                               script {
+                                       set_state(PART:"main.option.button", "visible_off", 0.0);
+                                       set_state(PART:"main.bookmark", "landscape", 0.0);
+                               }
+                       }
+               }       /* programs */
+       }       /* group */
+} /* collections */
diff --git a/res/edc/multi_win.edc b/res/edc/multi_win.edc
new file mode 100755 (executable)
index 0000000..7185254
--- /dev/null
@@ -0,0 +1,69 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+
+       group {
+               name: "mw";
+               parts {
+                       part {
+                               name: "mw.bg";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 0 0 0 255;
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+
+                       }
+
+                       part {
+                               name: "mw.image";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               repeat_events : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               signal: "signal.mw.image.show";
+                               source: "*";
+                               script {
+                                       set_state(PART:"mw.image", "show", 0.0);
+                               }
+                       }
+                       program {
+                               signal: "signal.mw.image.hide";
+                               source: "*";
+                               script {
+                                       set_state(PART:"mw.image", "default", 0.0);
+                               }
+                       }
+               }
+       }
+}
diff --git a/res/edc/option_button.edc b/res/edc/option_button.edc
new file mode 100644 (file)
index 0000000..346a8f0
--- /dev/null
@@ -0,0 +1,326 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+
+/*
+               | rect1 | rect2                 | rect3         | rect4 | rect5
+-----------------------------------------------------------
+local          | screen        | share                 | bookmark      | mw    | more
+myfile | screen        | share                 |                       | mw    | more
+email  | screen        | share                 |                       | mw    | trim
+web            | screen        | sa                            |                       | mw    | repeat
+message        | screen        | sa                            |                       | mw    |
+allshare       | screen        | connection info       |                       | mw    | more
+*/
+
+
+#define CONTROL_BUTTON_PROG(_item_name_)                                       \
+program {                                                                                                      \
+       name: _item_name_".pressed";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,down,1";                                                                         \
+       after: "send."_item_name_".down.signal";                                                \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: _item_name_".clicked";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,up,1";                                                                           \
+       after: "send."_item_name_".up.signal";                                          \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".down.signal";                                                 \
+       action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_;    \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".up.signal";                                           \
+       action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_;      \
+} // CONTROL_BUTTON_PROG       \
+
+
+collections {
+       group {
+               name: "option";
+               script {
+                       public val_launch_mode = 0; /* 0: local, 1: gallery, 2: Email, 3: Web, 4: Message 5: Allshare */
+               }
+
+               parts {
+                       part {
+                               name: "option.bg";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                                       color: 0 0 0 153;
+                               }
+                       }
+
+                       part {
+                               name: "option.rect.1";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 0.2 1.0; }
+                                       color: 255 0 0 0;
+                               }
+                               description {
+                                       state: "menu_4" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 0.25 1.0;}
+
+                               }
+                               description {
+                                       state: "menu_3" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 0.33 1.0;}
+                               }
+                       }
+
+                       part {
+                               name: "option.rect.2";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.2 0.0; }
+                                       rel2 { relative: 0.4 1.0; }
+                                       color: 0 255 0 0;
+                               }
+                               description {
+                                       state: "menu_4" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.25 0.0;}
+                                       rel2 { relative: 0.5 1.0;}
+
+                               }
+                               description {
+                                       state: "menu_3" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.33 0.0;}
+                                       rel2 { relative: 0.66 1.0;}
+                               }
+                       }
+
+                       part {
+                               name: "option.rect.3";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.4 0.0; }
+                                       rel2 { relative: 0.6 1.0; }
+                                       color: 0 0 255 0;
+                               }
+                               description {
+                                       state: "menu_4" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                               description {
+                                       state: "menu_3" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+
+                       part {
+                               name: "option.rect.4";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.6 0.0; }
+                                       rel2 { relative: 0.8 1.0; }
+                                       color: 255 255 0 0;
+                               }
+                               description {
+                                       state: "menu_4" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.5 0.0;}
+                                       rel2 { relative: 0.75 1.0;}
+
+                               }
+                               description {
+                                       state: "menu_3" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.66 0.0;}
+                                       rel2 { relative: 0.99 1.0;}
+                               }
+                       }
+
+                       part {
+                               name: "option.rect.5";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.8 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                                       color: 255 0 255 0;
+                               }
+                               description {
+                                       state: "menu_4" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.75 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+
+                               }
+                               description {
+                                       state: "menu_3" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+
+                       part {
+                               name: "option.select.bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 40 24;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                                       image { normal: "white/common/T01-2_popup_arrow.png"; }
+                                       rel1 { relative: 0.5 1.0; to: option.rect.1; }
+                                       rel2 { relative: 0.5 1.0; to: option.rect.1; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "mode_1" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.5 0.0; to: option.rect.1; }
+                                       rel2 { relative: 0.5 0.0; to: option.rect.1; }
+
+                               }
+                               description {
+                                       state: "mode_2" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.5 1.0; to: option.rect.2; }
+                                       rel2 { relative: 0.5 1.0; to: option.rect.2; }
+                               }
+                               description {
+                                       state: "mode_3" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.5 1.0; to: option.rect.3; }
+                                       rel2 { relative: 0.5 1.0; to: option.rect.3; }
+                               }
+                               description {
+                                       state: "mode_4" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.5 1.0; to: option.rect.4; }
+                                       rel2 { relative: 0.5 1.0; to: option.rect.4; }
+                               }
+                               description {
+                                       state: "mode_5" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.5 1.0; to: option.rect.5; }
+                                       rel2 { relative: 0.5 1.0; to: option.rect.5; }
+                               }
+                       }
+
+                       part {
+                               name: "option.share";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 56 56;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.5; to: option.rect.1; }
+                                       rel2 { relative: 0.5 0.5; to: option.rect.1; }
+                                       image { normal: "option/T01-2_icon_function_share.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       programs {
+                               CONTROL_BUTTON_PROG("option.share");
+
+                               program {
+                                       signal: "signal.option.share.down";
+                                       source: "*";
+                                       script: {
+                                               set_state(PART:"option.select.bg", "mode_1", 0.0);
+                                       }
+                               }
+
+                               program {
+                                       signal: "signal.option.share.up";
+                                       source: "*";
+                                       script: {
+                                               set_state(PART:"option.select.bg", "default", 0.0);
+                                       }
+                               }
+
+                               program {
+                                       signal: "signal.option.mode.local";
+                                       source: "*";
+                                       script: {
+                                               set_int(val_launch_mode, 0);
+
+                                               set_state(PART:"option.rect.1", "default", 0.0);
+                                               set_state(PART:"option.rect.2", "default", 0.0);
+                                               set_state(PART:"option.rect.3", "default", 0.0);
+                                               set_state(PART:"option.rect.4", "default", 0.0);
+                                               set_state(PART:"option.rect.5", "default", 0.0);
+
+                                               set_state(PART:"option.share", "default", 0.0);
+                                       }
+                               }
+                       } //programs
+               } //parts
+       } //group
+} //collections
diff --git a/res/edc/panel.edc b/res/edc/panel.edc
new file mode 100755 (executable)
index 0000000..f6bc218
--- /dev/null
@@ -0,0 +1,155 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define LINE_RECT_COLOR                130 130 130 255
+
+collections {
+       group {
+               name: "panel";
+
+               parts {
+                       part {
+                               name: "panel.rect";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+
+                       part {
+                               name: "panel.progress";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 78;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       color: 255 0 0 255;
+                                       rel1 { relative: 0.0277 0.0;}
+                                       rel2 { relative: 0.9723 0.0;}
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 78;
+                                       rel1 { relative: 0.01875 0.0;}
+                                       rel2 { relative: 0.98125 0.0;}
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 183;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 0.0;}
+                               }
+                       }
+
+                       part {
+                               name: "panel.control.line";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.40625; }
+                                       rel2 { relative: 1.0 0.40625; }
+                                       color: 255 0 0 0;
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 1;
+                                       rel1 { relative: 0.0 0.40625; }
+                                       rel2 { relative: 1.0 0.40625; }
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 1;
+                                       rel1 { relative: 0.0 0.616161; }
+                                       rel2 { relative: 1.0 0.616161; }
+                               }
+                       }
+                       part {
+                               name: "panel.control";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 114;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; }
+                                       rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; }
+                               }
+                               description {
+                                       state: "portrate" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 114;
+                                       rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; }
+                                       rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; }
+                               }
+                               description {
+                                       state: "trim" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 114;
+                                       rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; }
+                                       rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; }
+                               }
+                       }
+               } // parts
+
+               programs {
+                       program {
+                               signal: "signal.panel.portrate.mode";
+                               source: "*";
+                               action: STATE_SET "portrate" 0.0;
+                               target: "panel.progress";
+                               target: "panel.control.line";
+                               target: "panel.control";
+                       }
+
+                       program {
+                               signal: "signal.panel.landscape.mode";
+                               source: "*";
+                               action: STATE_SET "landscape" 0.0;
+                               target: "panel.progress";
+                               target: "panel.control.line";
+                               target: "panel.control";
+                       }
+
+                       program {
+                               signal: "signal.panel.trim.mode";
+                               source: "*";
+                               action: STATE_SET "trim" 0.0;
+                               target: "panel.progress";
+                               target: "panel.control.line";
+                               target: "panel.control";
+                       }
+               }
+       } // group
+} // collections
diff --git a/res/edc/popup_progressbar.edc b/res/edc/popup_progressbar.edc
new file mode 100755 (executable)
index 0000000..87add92
--- /dev/null
@@ -0,0 +1,263 @@
+collections {\r
+group { name: "popup_center_progressview";\r
+   parts{\r
+      part { name: "elm.title";\r
+         type: TEXT;\r
+         scale : 1;\r
+         description { state: "default" 0.0;\r
+            max: 80 16;\r
+            text {\r
+               font: "SLP:style=Medium";\r
+               text_class: "slp";\r
+               size: 16;\r
+               min: 0 0;\r
+               align: 0.5 0.0;\r
+              }\r
+            color: 108 108 108 255;\r
+            align: 0.5 0.0;\r
+            rel1 {\r
+               relative: 0.0 0.0;\r
+               to: "elm.swallow.content";\r
+            }\r
+            rel2 {\r
+               relative: 1.0 0.0;\r
+               to: "elm.swallow.content";\r
+            }\r
+         }\r
+      }\r
+      part{ name:"elm.swallow.content";\r
+         type: SWALLOW;\r
+         scale : 1;\r
+         description { state: "default" 0.0;\r
+            min: 0 70;\r
+            align: 0.5 0.5;\r
+            fixed: 1 0;\r
+            rel1 {\r
+               relative: 0.0 0.0;\r
+            }\r
+            rel2 {\r
+               relative: 1.0 1.0;\r
+            }\r
+         }\r
+      }\r
+      part { name: "elm.text.left";\r
+         type: TEXT;\r
+         scale : 1;\r
+         description { state: "default" 0.0;\r
+            max: 150 16;\r
+            text {\r
+               font: "SLP:style=Medium";\r
+               text_class: "slp";\r
+               size: 16;\r
+               min: 0 0;\r
+               align: 0.0 1.0;\r
+              }\r
+            color: 108 108 108 255;\r
+            align: 0.0 1.0;\r
+            rel1 {\r
+               relative: 0.0 0.0;\r
+               to: "elm.swallow.content";\r
+            }\r
+            rel2 {\r
+               relative: 1.0 1.0;\r
+               to: "elm.swallow.content";\r
+            }\r
+         }\r
+      }\r
+      part { name: "elm.text.right";\r
+         type: TEXT;\r
+         scale : 1;\r
+         description { state: "default" 0.0;\r
+            max: 150 16;\r
+            text {\r
+               font: "SLP:style=Medium";\r
+               text_class: "slp";\r
+               size: 16;\r
+               min: 0 0;\r
+               align: 1.0 1.0;\r
+              }\r
+            color: 108 108 108 255;\r
+            align: 1.0 1.0;\r
+            rel1 {\r
+               relative: 0.0 0.0;\r
+               to: "elm.swallow.content";\r
+            }\r
+            rel2 {\r
+               relative: 1.0 1.0;\r
+               to: "elm.swallow.content";\r
+            }\r
+         }\r
+      }\r
+   }\r
+}\r
+\r
+\r
+group { name: "popup_center_text_progressview";\r
+   parts{\r
+      part { name: "pad_t";\r
+         scale : 1;\r
+         mouse_events: 0;\r
+         repeat_events: 1;\r
+         description { state: "default" 0.0;\r
+            align: 0.5 0.0;\r
+            min: 0 14;\r
+            fixed: 0 1;\r
+            rel1 {\r
+               relative: 1.0 0.0;\r
+               to_x: "pad_l";\r
+            }\r
+            rel2 {\r
+               relative: 0.0 0.0;\r
+               to_x: "pad_r";\r
+            }\r
+         }\r
+      }\r
+      part { name: "pad_l";\r
+         scale: 1;\r
+         description { state: "default" 0.0;\r
+            min : 10 0;\r
+            fixed: 1 0;\r
+            rel1 {\r
+               relative: 0.0 0.0;\r
+            }\r
+            rel2 {\r
+               relative: 0.0 1.0;\r
+            }\r
+            align: 0.0 0.0;\r
+         }\r
+      }\r
+      part { name: "pad_r";\r
+         scale: 1;\r
+         description { state: "default" 0.0;\r
+            min : 10 0;\r
+            fixed: 1 0;\r
+            rel1 {\r
+               relative: 1.0 0.0;\r
+            }\r
+            rel2 {\r
+               relative: 1.0 1.0;\r
+            }\r
+            align: 1.0 0.0;\r
+         }\r
+      }\r
+      part{ name:"elm.swallow.content";\r
+         type: SWALLOW;\r
+         scale : 1;\r
+         description { state: "default" 0.0;\r
+            min: 300 0;\r
+            align: 0.5 0.5;\r
+            fixed: 1 0;\r
+            rel1 {\r
+               relative: 0.5 1.0;\r
+               to: "pad_t";\r
+            }\r
+            rel2 {\r
+               relative: 0.5 0.0;\r
+               to: "pad_b";\r
+            }\r
+         }\r
+      }\r
+      part { name: "pad_b";\r
+         scale : 1;\r
+         mouse_events: 0;\r
+         repeat_events: 1;\r
+         description { state: "default" 0.0;\r
+            align: 0.5 1.0;\r
+            min: 0 90;\r
+            fixed: 0 1;\r
+            rel1 {\r
+               relative: 1.0 1.0;\r
+               to_x: "pad_l";\r
+            }\r
+            rel2 {\r
+               relative: 0.0 1.0;\r
+               to_x: "pad_r";\r
+            }\r
+         }\r
+      }\r
+      part { name: "elm.swallow.end";\r
+         type: SWALLOW;\r
+         scale : 1;\r
+         mouse_events: 1;\r
+         repeat_events: 1;\r
+         description { state: "default" 0.0;\r
+            align: 0.0 0.0;\r
+            fixed: 1 1;\r
+            rel1 {\r
+               relative: 0.0 0.0;\r
+               to: "pad_b";\r
+            }\r
+            rel2 {\r
+               relative: 1.0 1.0;\r
+               to: "pad_b";\r
+            }\r
+         }\r
+      }\r
+      part { name: "pad_bm";\r
+         scale : 1;\r
+         mouse_events: 0;\r
+         repeat_events: 1;\r
+         description { state: "default" 0.0;\r
+            align: 0.0 1.0;\r
+            min: 0 52;\r
+            fixed: 0 1;\r
+            rel1 {\r
+               relative: 0.0 1.0;\r
+               to: "pad_b";\r
+            }\r
+            rel2 {\r
+               relative: 1.0 1.0;\r
+               to: "pad_b";\r
+            }\r
+         }\r
+      }\r
+      part { name: "elm.text.subtext1";\r
+         type: TEXT;\r
+         scale : 1;\r
+         description { state: "default" 0.0;\r
+            text {\r
+               font: "SLP:style=Medium";\r
+               text_class: "slp";\r
+               size: 16;\r
+               min: 0 0;\r
+               align: 0.0 1.0;\r
+              }\r
+            color: 108 108 108 255;\r
+            align: 0.0 0.5;\r
+            rel1 {\r
+               relative: 0.0 0.0;\r
+               to: "pad_bm";\r
+            }\r
+            rel2 {\r
+               relative: 1.0 1.0;\r
+               to: "pad_bm";\r
+            }\r
+         }\r
+      }\r
+      part { name: "elm.text.subtext2";\r
+         type: TEXT;\r
+         scale : 1;\r
+         description { state: "default" 0.0;\r
+            text {\r
+               font: "SLP:style=Medium";\r
+               text_class: "slp";\r
+               size: 16;\r
+               min: 0 0;\r
+               align: 1.0 1.0;\r
+              }\r
+            color: 108 108 108 255;\r
+            align: 1.0 0.5;\r
+            rel1 {\r
+               relative: 0.0 0.0;\r
+               to: "pad_bm";\r
+            }\r
+            rel2 {\r
+               relative: 1.0 1.0;\r
+               to: "pad_bm";\r
+            }\r
+         }\r
+      }\r
+   }\r
+}\r
+}\r
+\r
diff --git a/res/edc/progress.edc b/res/edc/progress.edc
new file mode 100755 (executable)
index 0000000..3ef5412
--- /dev/null
@@ -0,0 +1,459 @@
+#include "image_res.edc"\r
+#include "vp_font.edc"\r
+\r
+#define PROGRESS_LINE_RECT_COLOR               54 54 54 255\r
+\r
+collections {\r
+       group {\r
+               name: "progress";\r
+\r
+               parts {\r
+                       part {\r
+                               name: "progress.rect";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                       }\r
+                       part { name: "progress.txt.played";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 90 28;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; }\r
+                                       rel2 { relative: 1.0 0.5; }\r
+                                       color: FONT_START_COLOR;\r
+                                       text {\r
+                                               font: FONT_MEDIUM_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 25;\r
+                                               text: "00:00:00";\r
+                                               align: 0.0 1.0;\r
+                                       }\r
+                               }\r
+                               description {\r
+                                       state: "portrate" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                               }\r
+                               description {\r
+                                       state: "landscape" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                               }\r
+                       }\r
+\r
+                       part { name: "progress.txt.total";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 90 28;\r
+                                       fixed: 1 1;\r
+                                       align: 1.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; }\r
+                                       rel2 { relative: 1.0 0.5; }\r
+                                       color: FONT_END_COLOR;\r
+                                       text {\r
+                                               font: FONT_MEDIUM_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 25;\r
+                                               text: "--:--:--";\r
+                                               align: 1.0 1.0;\r
+                                       }\r
+                               }\r
+                               description {\r
+                                       state: "portrate" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                               }\r
+                               description {\r
+                                       state: "landscape" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.bg";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 0 7;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.1647 0.5; }\r
+                                       rel2 { relative: 0.8353 0.5; }\r
+                                       image { normal: "panel/T01-2_controller_progress_bg.png"; }\r
+                               }\r
+                               description {\r
+                                       state: "portrate" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                               }\r
+                               description {\r
+                                       state: "landscape" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       rel1 { relative: 0.0933 0.5; }\r
+                                       rel2 { relative: 0.9067 0.5; }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.buffer.bar";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 0 5;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0; to_x: progress.playing ; to_y: progress.bg; }\r
+                                       rel2 { relative: 1.0 1.0; to_x: progress.buffering; to_y: progress.bg; }\r
+                                       color: 128 128 128 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.middle";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 0 5;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0; to: progress.bg; }\r
+                                       rel2 { relative: 0.5 1.0; to_x: progress.circle; to_y: progress.bg; }\r
+                                       color: 255 255 255 255;\r
+                                       image { normal: "panel/T01-2_controller_progress_bar.png";}\r
+                               }\r
+                       }\r
+                       part { name: "progress.buffering";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 0 5;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to: progress.bg;  }\r
+                                       rel2 { relative: 1.0 1.0; to: progress.bg; }\r
+                                       color: 255 255 255 0;\r
+                               }\r
+                               dragable {\r
+                                   confine: "progress.confine.rect";\r
+                                       x: 1 1 1;\r
+                               }\r
+                       }\r
+\r
+                       part { name: "progress.confine.rect";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 0.0 0.0;  to: progress.bg;  }\r
+                                       rel2 { relative: 1.0 1.0;  to: progress.bg; }\r
+                                       color: 255 255 255 0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.circle";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 0 5;\r
+                                       fixed: 0 1;\r
+                                       align: 0.5 0.0;\r
+                                       rel1 { relative: 0.5 0.0; to_x: progress.playing; to_y: progress.bg; }\r
+                                       rel2 { relative: 0.5 1.0; to_x: progress.playing; to_y: progress.bg; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                       }\r
+\r
+                       part { name: "progress.playing";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       visible: 1;\r
+                                       state: "default" 0.0;\r
+                                       color: 255 255 255 0;\r
+                                       min: 0 15;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0; to_y: progress.rect; }\r
+                                       rel2 { relative: 0.0 0.0; to_y: progress.rect; }\r
+                               }\r
+                               dragable {\r
+                                       confine:  "progress.confine.rect";\r
+                                       x: 1 1 1;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.adjustment.handle";\r
+                               type: IMAGE;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 25 25;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to_x: progress.circle; to_y: progress.bg; }\r
+                                       rel2 { relative: 0.5 0.5; to_x: progress.circle; to_y: progress.bg; }\r
+                                       image { normal: "adjustment/T01-2_controller_progress_handle.png";}\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "progress.adjustment.bg.rect";\r
+                               type: RECT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 174 153;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 1.0;\r
+                                       rel1 { relative: 0.5 0.0; to_x: progress.circle; to_y: progress.rect; }\r
+                                       rel2 { relative: 0.5 0.0; to_x: progress.circle; to_y: progress.rect; }\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.adjustment.bg";\r
+                               type: IMAGE;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 174 153;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0; to: progress.adjustment.bg.rect; }\r
+                                       rel2 { relative: 1.0 1.0; to: progress.adjustment.bg.rect; }\r
+                                       color: 255 255 255 255;\r
+                                       image { normal: "adjustment/T01-2_fine_adjustment_bg.png";}\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.adjustment.progress.bg";\r
+                               type: IMAGE;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 1 20;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.08620 0.23529; to: progress.adjustment.bg.rect; }\r
+                                       rel2 { relative: 0.91379 0.23529; to: progress.adjustment.bg.rect; }\r
+                                       color: 255 255 255 255;\r
+                                       image { normal: "adjustment/T01-2_fine_adjustment_progress_bg.png";}\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.adjustment.progress.bar";\r
+                               type: IMAGE;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 1 20;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.08620 0.23529; to: progress.adjustment.bg.rect; }\r
+                                       rel2 { relative: 0.5 0.23529; to: progress.adjustment.bg.rect; }\r
+                                       color: 255 255 255 255;\r
+                                       image { normal: "adjustment/T01-2_fine_adjustment_progress_bar.png";}\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "progress.adjustment.progress.handle";\r
+                               type: IMAGE;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 36 36;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.0;\r
+                                       rel1 { relative: 0.5 0.183006; to: progress.adjustment.bg.rect; }\r
+                                       rel2 { relative: 0.5 0.183006; to: progress.adjustment.bg.rect; }\r
+                                       color: 255 255 255 255;\r
+                                       image { normal: "adjustment/T01-2_fine_adjustment_progress_handle.png";}\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "progress.adjustment.bg.ef";\r
+                               type: IMAGE;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 174 153;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0; to: progress.adjustment.bg.rect; }\r
+                                       rel2 { relative: 1.0 1.0; to: progress.adjustment.bg.rect; }\r
+                                       image { normal: "adjustment/T01-2_fine_adjustment_bg_ef.png";}\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+                       part { name: "progress.adjustment.txt";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 174 40;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.0;\r
+                                       rel1 { relative: 0.0 0.470588; to: progress.adjustment.bg.rect;}\r
+                                       rel2 { relative: 1.0 0.470588; to: progress.adjustment.bg.rect;}\r
+                                       color: 191 191 191 255;\r
+                                       text {\r
+                                               font: FONT_ROMAN_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 32;\r
+                                               text: "00:00:00";\r
+                                               align: 0.5 0.5;\r
+                                       }\r
+                               }\r
+                               description {\r
+                                       state: "show" 0.0;\r
+                                       inherit: "default" 0.0;\r
+                                       visible: 1;\r
+                               }\r
+                       }\r
+               }       /* parts */\r
+\r
+               programs {\r
+                       program {\r
+                               signal: "signal.progress.portrate.mode";\r
+                               source: "*";\r
+                               action: STATE_SET "portrate" 0.0;\r
+                               target: "progress.bg";\r
+                               target: "progress.txt.played";\r
+                               target: "progress.txt.total";\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.progress.landscape.mode";\r
+                               source: "*";\r
+                               action: STATE_SET "landscape" 0.0;\r
+                               target: "progress.bg";\r
+                               target: "progress.txt.played";\r
+                               target: "progress.txt.total";\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.progress.pointer.show";\r
+                               source: "*";\r
+                               action: STATE_SET "show" 0.0;\r
+                               target: "progress.adjustment.handle";\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.progress.pointer.hide";\r
+                               source: "*";\r
+                               action: STATE_SET "default" 0.0;\r
+                               target: "progress.adjustment.handle";\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.progress.adjustment.show";\r
+                               source: "*";\r
+                               action: STATE_SET "show" 0.0;\r
+                               target: "progress.adjustment.handle";\r
+                               target: "progress.adjustment.bg.rect";\r
+                               target: "progress.adjustment.bg.ef";\r
+                               target: "progress.adjustment.bg";\r
+                               target: "progress.adjustment.progress.bg";\r
+                               target: "progress.adjustment.progress.bar";\r
+                               target: "progress.adjustment.progress.handle";\r
+                               target: "progress.adjustment.txt";\r
+                       }\r
+\r
+                       program {\r
+                               signal: "signal.progress.adjustment.hide";\r
+                               source: "*";\r
+                               action: STATE_SET "default" 0.0;\r
+                               target: "progress.adjustment.handle";\r
+                               target: "progress.adjustment.bg.rect";\r
+                               target: "progress.adjustment.bg.ef";\r
+                               target: "progress.adjustment.bg";\r
+                               target: "progress.adjustment.progress.bg";\r
+                               target: "progress.adjustment.progress.bar";\r
+                               target: "progress.adjustment.progress.handle";\r
+                               target: "progress.adjustment.txt";\r
+                       }\r
+               }\r
+       } // group\r
+} // collections\r
diff --git a/res/edc/progress_trim.edc b/res/edc/progress_trim.edc
new file mode 100755 (executable)
index 0000000..932264b
--- /dev/null
@@ -0,0 +1,291 @@
+#include "image_res.edc"\r
+#include "vp_font.edc"\r
+\r
+collections {\r
+       group {\r
+               name: "trim.control";\r
+               parts {\r
+                       part {\r
+                               name: "trim.control.rect";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0;}\r
+                                       rel2 { relative: 1.0 1.0;}\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                       }\r
+                       part { name: "trim.control.txt.played";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 0 58;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.027777 0.0; }\r
+                                       rel2 { relative: 1.0 0.0; }\r
+                                       color: FONT_START_COLOR;\r
+                                       text {\r
+                                               font: FONT_MEDIUM_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 28;\r
+                                               text: "00:00:00";\r
+                                               align: 0.0 0.5;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part { name: "trim.control.txt.total";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 90 58;\r
+                                       fixed: 1 1;\r
+                                       align: 1.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 0.97223 0.0; }\r
+                                       color: FONT_END_COLOR;\r
+                                       text {\r
+                                               font: FONT_MEDIUM_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 28;\r
+                                               text: "--:--:--";\r
+                                               align: 1.0 0.5;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "trim.control.line";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 0 1;\r
+                                       fixed: 0 1;\r
+                                       align: 0.5 0.0;\r
+                                       rel1 { relative: 0.0 0.316994; }\r
+                                       rel2 { relative: 1.0 0.316994; }\r
+                                       color : 153 153 153 171;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "trim.control.thumb.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.316994; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                                       color : 0 0 0 0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "trim.control.thumb";\r
+                               type: SWALLOW;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 0 112;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to_y : trim.control.thumb.bg;}\r
+                                       rel2 { relative: 1.0 0.5; to_y : trim.control.thumb.bg;}\r
+                                       color : 0 0 0 0;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "trim.control.middle";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 0.0 1.0;\r
+                                       rel1 { relative: 0.0 0.0;  to_x: trim.control.confine.start; to_y: trim.control.thumb.bg; }\r
+                                       rel2 { relative: 1.0 1.0;  to_x: trim.control.confine.end; to_y: trim.control.thumb.bg; }\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "trim.control.confine.rect";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       rel1 { relative: 0.0 0.0; to: trim.control.middle;  }\r
+                                       rel2 { relative: 1.0 1.0; to: trim.control.middle; }\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                       }\r
+\r
+                       part { name: "trim.control.playing";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 19 124;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.0;\r
+                                       image { normal: "trim/T01-2_controller_track_ball.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                               dragable {\r
+                                       confine:  "trim.control.confine.rect";\r
+                                       x: 1 1 1;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "trim.control.start.rect";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0; to_y : trim.control.thumb.bg;}\r
+                                       rel2 { relative: 0.0 1.0; to_y : trim.control.thumb.bg;}\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "trim.control.end.rect";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 1.0 0.0; to_y : trim.control.thumb.bg;}\r
+                                       rel2 { relative: 1.0 1.0; to_y : trim.control.thumb.bg;}\r
+                                       color: 0 0 0 0;\r
+                               }\r
+                       }\r
+\r
+                       part { name: "trim.control.confine.rect.start";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 24 117;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to_x: trim.control.start.rect; to_y: trim.control.thumb.bg; }\r
+                                       rel2 { relative: 1.0 0.5; to_x: trim.control.end.rect; to_y: trim.control.thumb.bg; }\r
+                                       color: 255 255 255 0;\r
+                               }\r
+                       }\r
+\r
+                       part { name: "trim.control.confine.rect.end";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 24 117;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to_x: trim.control.start.rect; to_y: trim.control.thumb.bg; }\r
+                                       rel2 { relative: 1.0 0.5; to_x: trim.control.end.rect; to_y: trim.control.thumb.bg; }\r
+                                       color: 255 255 255 0;\r
+                               }\r
+                       }\r
+                       part { name: "trim.control.confine.rect.start.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 0 100;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to_y: trim.control.thumb.bg; }\r
+                                       rel2 { relative: 0.0 0.5; to_x: trim.control.confine.start; to_y: trim.control.thumb.bg; }\r
+                                       color: 0 0 0 153;\r
+                               }\r
+                       }\r
+\r
+                       part { name: "trim.control.confine.rect.end.bg";\r
+                               type: RECT;\r
+                               scale: 1;\r
+                               mouse_events: 0;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 0 100;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to_x: trim.control.confine.end; to_y: trim.control.thumb.bg; }\r
+                                       rel2 { relative: 1.0 0.5; to_y: trim.control.thumb.bg; }\r
+                                       color: 0 0 0 153;\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "trim.control.confine.start";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 24 117;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.5;\r
+                                       image { normal: "trim/T01-2_controller_trimming_handle_beginning.png";}\r
+                               }\r
+                               dragable {\r
+                                       confine:  "trim.control.confine.rect.start";\r
+                                       x: 1 1 1;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "trim.control.confine.end";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 24 117;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.5;\r
+                                       image { normal: "trim/T01-2_controller_trimming_handle_ending.png";}\r
+                               }\r
+                               dragable {\r
+                                       confine:  "trim.control.confine.rect.end";\r
+                                       x: 1 1 1;\r
+                               }\r
+                       }\r
+\r
+\r
+               }       /* parts */\r
+       } /* group */\r
+} /* collections */\r
+\r
diff --git a/res/edc/setting.edc b/res/edc/setting.edc
new file mode 100755 (executable)
index 0000000..9691ac7
--- /dev/null
@@ -0,0 +1,33 @@
+collections {
+       group {
+               name: "setting";
+               parts {
+                       part {
+                               name: "setting.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 255 255 255 255;
+                               }
+                       }
+                       part {
+                               name: "setting.list";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;  }
+                                       rel2 { relative: 1.0 1.0; }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/res/edc/subtitle.edc b/res/edc/subtitle.edc
new file mode 100755 (executable)
index 0000000..3d5265b
--- /dev/null
@@ -0,0 +1,419 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+
+collections {
+       styles {
+               style {
+                       name: "textblock_style_small";
+                       base: "font=SLP:style=Roman font_size=22 color=#fff align=center wrap=word text_class=slp";
+                       tag:  "br" "\n";
+                       tag:  "ps" "ps";
+                       tag:  "hilight" "+ font=SLP:style=Roman";
+                       tag:  "b" "+ font=SLP:style=Roman";
+                       tag:  "tab" "\t";
+               }
+               style {
+                       name: "textblock_style_medium";
+                       base: "font=SLP:style=Roman font_size=35 color=#fff align=center wrap=word text_class=slp";
+                       tag:  "br" "\n";
+                       tag:  "ps" "ps";
+                       tag:  "hilight" "+ font=SLP:style=Roman";
+                       tag:  "b" "+ font=SLP:style=Roman";
+                       tag:  "tab" "\t";
+               }
+
+               style {
+                       name: "textblock_style_large";
+                       base: "font=SLP:style=Roman font_size=48 color=#fff align=center wrap=word text_class=slp";
+                       tag:  "br" "\n";
+                       tag:  "ps" "ps";
+                       tag:  "hilight" "+ font=SLP:style=Roman";
+                       tag:  "b" "+ font=SLP:style=Roman";
+                       tag:  "tab" "\t";
+               }
+
+       }
+
+       group {
+               name: "subtitle";
+               script {
+                       public val_rotate_mode = 0;             /* 0: portrate, 1: landscape */
+                       public val_layout_show = 1;             /* 0: off, 1: on */
+                       public val_sync_show = 0;               /* 0: off, 1: on */
+                       public val_size_mode = 1;               /* 0: small, 1: medium, 2: large */
+
+                       public change_bottom_line() {
+                                       if(get_int(val_rotate_mode) == 0) {
+                                               if(get_int(val_layout_show) == 1) {
+                                                       if(get_int(val_sync_show) == 1) {
+                                                               set_state(PART:"subtitle.bottom.line", "default_sync", 0.0);
+                                                       }
+                                                       else    {
+                                                               set_state(PART:"subtitle.bottom.line", "default", 0.0);
+                                                       }
+                                               }
+                                               else {
+                                                       if(get_int(val_sync_show) == 1) {
+                                                               set_state(PART:"subtitle.bottom.line", "default_off_sync", 0.0);
+                                                       }
+                                                       else    {
+                                                               set_state(PART:"subtitle.bottom.line", "default_off", 0.0);
+                                                       }
+                                               }
+                                       }
+                                       else if(get_int(val_rotate_mode) == 1) {
+                                               if(get_int(val_layout_show) == 1) {
+                                                       if(get_int(val_sync_show) == 1) {
+                                                               set_state(PART:"subtitle.bottom.line", "landscape_sync", 0.0);
+                                                       }
+                                                       else    {
+                                                               set_state(PART:"subtitle.bottom.line", "landscape", 0.0);
+                                                       }
+                                               }
+                                               else {
+                                                       if(get_int(val_sync_show) == 1) {
+                                                               set_state(PART:"subtitle.bottom.line", "landscape_off_sync", 0.0);
+                                                       }
+                                                       else    {
+                                                               set_state(PART:"subtitle.bottom.line", "landscape_off", 0.0);
+                                                       }
+                                               }
+                                       }
+
+                       } /* change_size_mode */
+
+               }       /* script */
+
+               parts {
+                       part {
+                               name: "subtitle.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color:  0 0 0 0;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.lockscreen.rect";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 24 18 ;
+                                       fixed: 1 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 0.0 0.0;}
+                                       color:  255 255 255 255;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.lockscreen";
+                               type: IMAGE;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 56 56;
+                                       fixed: 1 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 1.0 1.0; to: "subtitle.lockscreen.rect";}
+                                       rel2 { relative: 0.0 0.0;}
+                                       image { normal: "T01-2_hold_icon_lock.png"; }
+                                       color:  255 255 255 255;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.lockscreen.text.rect";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 16 56 ;
+                                       fixed: 1 0;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 1.0 0.0; to_x: "subtitle.lockscreen";}
+                                       rel2 { relative: 0.0 0.0;}
+                                       color:  255 0 0 255;
+                               }
+                       }
+                       part {
+                               name: "subtitle.lockscreen.text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 56;
+                                       fixed: 0 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 1.0 1.0; to_x: subtitle.lockscreen.text.rect; to_y: "subtitle.lockscreen.rect"; }
+                                       rel2 { relative: 1.0 0.0; }
+                                       color: 255 255 255 255;
+                                       text {
+                                               font: FONT_BOLD_TYPE;
+                                               text_class: "slp";
+                                               size: 32;
+                                               text: "Press hold key to unlock";
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+
+                       part {
+                               name: "subtitle.bottom.line";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.82421;}
+                                       rel2 { relative: 1.0 0.82421;}
+                                       color:  0 0 0 0;
+                               }
+                               description {
+                                       state: "default_off" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.9921875;}
+                                       rel2 { relative: 1.0 0.9921875;}
+                               }
+                               description {
+                                       state: "default_sync" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.716406;}
+                                       rel2 { relative: 1.0 0.716406;}
+                               }
+                               description {
+                                       state: "default_off_sync" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.884375;}
+                                       rel2 { relative: 1.0 0.884375;}
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.70277;}
+                                       rel2 { relative: 1.0 0.70277;}
+                               }
+                               description {
+                                       state: "landscape_off" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.98611;}
+                                       rel2 { relative: 1.0 0.98611;}
+                               }
+                               description {
+                                       state: "landscape_sync" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.541666;}
+                                       rel2 { relative: 1.0 0.541666;}
+                               }
+                               description {
+                                       state: "landscape_off_sync" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.825;}
+                                       rel2 { relative: 1.0 0.825;}
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.label.txt";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               mouse_events: 0;
+                               multiline: 1;
+                               description {
+                                       visible: 1;
+                                       state: "default" 0.0;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; to_y: subtitle.bottom.line; }
+                                       color: FONT_START_COLOR;
+                                       text {
+                                               style: "textblock_style_medium";
+                                               align: 0.5 1.0;
+                                       }
+                               }
+                               description {
+                                       state: "small" 0.0;
+                                       inherit: "default" 0.0;
+                                       text {
+                                               style: "textblock_style_small";
+                                               align: 0.5 1.0;
+                                       }
+
+                               }
+                               description {
+                                       state: "large" 0.0;
+                                       inherit: "default" 0.0;
+                                       text {
+                                               style: "textblock_style_large";
+                                               align: 0.5 1.0;
+                                       }
+
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+               } /* parts */
+               programs {
+                       program {
+                               signal: "signal.subtitle.portrate.mode";
+                               source: "*";
+                               script {
+                                       set_int(val_rotate_mode, 0);
+                                       change_bottom_line();
+                               }
+                       }
+                       program {
+                               signal: "signal.subtitle.landscape.mode";
+                               source: "*";
+                               script {
+                                       set_int(val_rotate_mode, 1);
+                                       change_bottom_line();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.layout.show";
+                               source: "*";
+                               script {
+                                       set_int(val_layout_show, 1);
+                                       change_bottom_line();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.layout.hide";
+                               source: "*";
+                               script {
+                                       set_int(val_layout_show, 0);
+                                       change_bottom_line();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.sync.show";
+                               source: "*";
+                               script {
+                                       set_int(val_sync_show, 1);
+                                       change_bottom_line();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.sync.hide";
+                               source: "*";
+                               script {
+                                       set_int(val_sync_show, 0);
+                                       change_bottom_line();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.size.medium";
+                               source: "*";
+                               script {
+                                       set_int(val_size_mode, 1);
+                                       set_state(PART:"subtitle.label.txt", "default", 0.0);
+
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.size.small";
+                               source: "*";
+                               script {
+                                       set_int(val_size_mode, 0);
+                                       set_state(PART:"subtitle.label.txt", "small", 0.0);
+
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.size.large";
+                               source: "*";
+                               script {
+                                       set_int(val_size_mode, 2);
+                                       set_state(PART:"subtitle.label.txt", "large", 0.0);
+
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.txt.show";
+                               source: "*";
+                               script {
+                                       if(get_int(val_size_mode) == 0) {
+                                               set_state(PART:"subtitle.label.txt", "small", 0.0);
+                                       }
+                                       else if(get_int(val_size_mode) == 1) {
+                                               set_state(PART:"subtitle.label.txt", "default", 0.0);
+                                       }
+                                       else if(get_int(val_size_mode) == 2) {
+                                               set_state(PART:"subtitle.label.txt", "large", 0.0);
+                                       }
+
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.txt.hide";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.label.txt", "hide", 0.0);
+
+                               }
+                       }
+                       program {
+                               signal: "signal.lockscreen.show";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.lockscreen", "show", 0.0);
+                                       set_state(PART:"subtitle.lockscreen.text", "show", 0.0);
+
+                               }
+                       }
+                       program {
+                               signal: "signal.lockscreen.hide";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.lockscreen", "default", 0.0);
+                                       set_state(PART:"subtitle.lockscreen.text", "default", 0.0);
+                               }
+                       }
+
+               } /*programs */
+       } /* group */
+} /* collections */
diff --git a/res/edc/subtitle_sync.edc b/res/edc/subtitle_sync.edc
new file mode 100755 (executable)
index 0000000..b40bd2f
--- /dev/null
@@ -0,0 +1,415 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+// program macro
+
+#define CONTROL_BUTTON_PROG(_item_name_)                                       \
+program {                                                                                                      \
+       name: _item_name_".pressed";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,down,1";                                                                         \
+       action: STATE_SET "pressed" 0.0;                                                        \
+       target: _item_name_;                                                                            \
+       after: "send."_item_name_".down.signal";                                                \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: _item_name_".clicked";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,up,1";                                                                           \
+       action: STATE_SET "default" 0.0;                                                                \
+       target: _item_name_;                                                                            \
+       after: "send."_item_name_".up.signal";                                          \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".down.signal";                                                 \
+       action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_;    \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".up.signal";                                           \
+       action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_;      \
+} // CONTROL_BUTTON_PROG
+
+collections {
+       group {
+               name: "subtitle.sync";
+               script {
+                       public val_rotate_mode = 0;             /* 0: portrate, 1: landscape */
+                       public val_layout_show = 1;             /* 0: off, 1: on */
+
+                       public change_top_line() {
+                                        if(get_int(val_rotate_mode) == 0) {
+                                               if(get_int(val_layout_show) == 1) {
+                                                       set_state(PART:"subtitle.sync.line", "default", 0.0);
+                                               }
+                                               else {
+                                                       set_state(PART:"subtitle.sync.line", "visible_off", 0.0);
+                                               }
+                                       }
+                                       else if(get_int(val_rotate_mode) == 1) {
+                                               if(get_int(val_layout_show) == 1) {
+                                                       set_state(PART:"subtitle.sync.line", "land_default", 0.0);
+                                               }
+                                               else {
+                                                       set_state(PART:"subtitle.sync.line", "land_visible_off", 0.0);
+                                               }
+                                       }
+                       } /* change_top_line */
+
+               }       /* script */
+
+               parts {
+                       part {
+                               name: "subtitle.sync.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color:  0 0 0 0;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.sync.line";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       align: 0.0 1.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 0.735156;  to_y:subtitle.sync.bg; }
+                                       rel2 { relative: 1.0 0.735156;  to_y:subtitle.sync.bg; }
+                                       color:  0 0 0 0;
+                               }
+                               description {
+                                       state: "visible_off" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.903125;  to_y:subtitle.sync.bg; }
+                                       rel2 { relative: 1.0 0.903125;  to_y:subtitle.sync.bg; }
+                               }
+                               description {
+                                       state: "land_default" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.558333;  to_y:subtitle.sync.bg; }
+                                       rel2 { relative: 1.0 0.558333;  to_y:subtitle.sync.bg; }
+                               }
+                               description {
+                                       state: "land_visible_off" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 { relative: 0.0 0.82777;  to_y:subtitle.sync.bg; }
+                                       rel2 { relative: 1.0 0.82777;  to_y:subtitle.sync.bg; }
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.sync.rect";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 104;
+                                       fixed: 0 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.07222 1.0; to_y: subtitle.sync.line; }
+                                       rel2 { relative: 0.92778 1.0; to_y: subtitle.sync.line; }
+                                       image { normal: "subtitle/T01-2_sync_btn_bg.png"; border: 19 19 0 0; border_scale: 1;}
+                                       color:  255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "subtitle.sync.rect.1";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 64 64;
+                                       fixed: 1 1;
+                                       align: 0.0 0.5;
+                                       rel1 { relative: 0.02922 0.5; to: subtitle.sync.rect; }
+                                       rel2 { relative: 0.02922 0.5; to: subtitle.sync.rect; }
+                                       image { normal: "subtitle/T01-2_sync_list_press.png"; }
+                                       color:  255 255 255 255;
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.sync.rect.2";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       align: 0.0 0.5;
+                                       rel1 { relative: 0.0 0.5; to: subtitle.sync.rect; }
+                                       rel2 { relative: 1.0 0.5; to: subtitle.sync.rect; }
+                                       color:  0 0 0 0;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.sync.rect.3";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 64 64;
+                                       fixed: 1 1;
+                                       align: 0.0 0.5;
+                                       rel1 { relative: 0.86688 0.5; to: subtitle.sync.rect; }
+                                       rel2 { relative: 0.86688 0.5; to: subtitle.sync.rect; }
+                                       image { normal: "subtitle/T01-2_sync_list_press.png"; }
+                                       color:  255 255 255 255;
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.sync.slow.button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 64 64;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.5; to: subtitle.sync.rect.1; }
+                                       rel2 { relative: 0.5 0.5; to: subtitle.sync.rect.1; }
+                                       image { normal: "subtitle/T01-2_sync_slowly.png"; }
+                                       color:  255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle.sync.fast.button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 56 56;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.5; to: subtitle.sync.rect.3; }
+                                       rel2 { relative: 0.5 0.5; to: subtitle.sync.rect.3; }
+                                       image { normal: "subtitle/T01-2_sync_faster.png"; }
+                                       color:  255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part { name: "subtitle.sync.txt";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.0 0.0; to: subtitle.sync.rect.2; }
+                                       rel2 { relative: 1.0 1.0; to: subtitle.sync.rect.2; }
+                                       color: FONT_START_COLOR;
+                                       text {
+                                               font: FONT_ROMAN_TYPE;
+                                               text_class: "slp";
+                                               size: 40;
+                                               text: "0.0 sec";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+               }  /* parts */
+
+               programs {
+                       program {
+                               signal: "signal.subtitle.portrate.mode";
+                               source: "*";
+                               script {
+                                       set_int(val_rotate_mode, 0);
+                                       change_top_line();
+                               }
+                       }
+                       program {
+                               signal: "signal.subtitle.landscape.mode";
+                               source: "*";
+                               script {
+                                       set_int(val_rotate_mode, 1);
+                                       change_top_line();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.layout.show";
+                               source: "*";
+                               script {
+                                       set_int(val_layout_show, 1);
+                                       change_top_line();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.layout.hide";
+                               source: "*";
+                               script {
+                                       set_int(val_layout_show, 0);
+                                       change_top_line();
+                               }
+                       }
+
+                       CONTROL_BUTTON_PROG("subtitle.sync.slow.button");
+                       CONTROL_BUTTON_PROG("subtitle.sync.fast.button");
+
+                       program {
+                               name: "subtitle.sync.rect.1.pressed";
+                               source: "subtitle.sync.rect.1";
+                               signal: "mouse,down,1";
+                               action: STATE_SET "pressed" 0.0;
+                               target: subtitle.sync.rect.1;
+                               after: "send.subtitle.sync.slow.button.down.signal";
+                       }
+
+                       program {
+                               name: "subtitle.sync.rect.3.pressed";
+                               source: "subtitle.sync.rect.3";
+                               signal: "mouse,down,1";
+                               action: STATE_SET "pressed" 0.0;
+                               target: subtitle.sync.rect.3;
+                               after: "send.subtitle.sync.fast.button.down.signal";
+                       }
+
+                       program {
+                               name: "subtitle.sync.rect.1.clicked";
+                               source: "subtitle.sync.rect.1";
+                               signal: "mouse,up,1";
+                               action: STATE_SET "default" 0.0;
+                               target: subtitle.sync.rect.1;
+                               after: "send.subtitle.sync.slow.button.up.signal";
+                       }
+
+                       program {
+                               name: "subtitle.sync.rect.3.clicked";
+                               source: "subtitle.sync.rect.3";
+                               signal: "mouse,up,1";
+                               action: STATE_SET "default" 0.0;
+                               target: subtitle.sync.rect.3;
+                               after: "send.subtitle.sync.fast.button.up.signal";
+                       }
+
+                       program {
+                               signal: "signal.subtitle.sync.slow.button.down";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.sync.rect.1", "pressed", 0.0);
+                               }
+                       }
+                       program {
+                               signal: "signal.subtitle.sync.fast.button.down";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.sync.rect.3", "pressed", 0.0);
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.sync.slow.button.up";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.sync.rect.1", "default", 0.0);
+                               }
+                       }
+                       program {
+                               signal: "signal.subtitle.sync.fast.button.up";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.sync.rect.3", "default", 0.0);
+                               }
+                       }
+
+                       program {
+                               signal: "signal.subtitle.sync.show";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.sync.fast.button", "default", 0.0);
+                                       set_state(PART:"subtitle.sync.txt", "default", 0.0);
+                                       set_state(PART:"subtitle.sync.slow.button", "default", 0.0);
+                                       set_state(PART:"subtitle.sync.rect", "default", 0.0);
+                                       set_state(PART:"subtitle.sync.rect.1", "default", 0.0);
+                                       set_state(PART:"subtitle.sync.rect.2", "default", 0.0);
+                                       set_state(PART:"subtitle.sync.rect.3", "default", 0.0);
+                               }
+                       }
+                       program {
+                               signal: "signal.subtitle.sync.hide";
+                               source: "*";
+                               script {
+                                       set_state(PART:"subtitle.sync.fast.button", "hide", 0.0);
+                                       set_state(PART:"subtitle.sync.txt", "hide", 0.0);
+                                       set_state(PART:"subtitle.sync.slow.button", "hide", 0.0);
+                                       set_state(PART:"subtitle.sync.rect", "hide", 0.0);
+                                       set_state(PART:"subtitle.sync.rect.1", "hide", 0.0);
+                                       set_state(PART:"subtitle.sync.rect.2", "hide", 0.0);
+                                       set_state(PART:"subtitle.sync.rect.3", "hide", 0.0);
+                               }
+                       }
+
+               } /* programs */
+       } /* group */
+} /* collection */
diff --git a/res/edc/vp-button-white.edc b/res/edc/vp-button-white.edc
new file mode 100755 (executable)
index 0000000..14a16a5
--- /dev/null
@@ -0,0 +1,504 @@
+#define BUTTON_STATE_ENABLED 0\r
+#define BUTTON_STATE_DISABLED 1\r
+\r
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC 106 74\r
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC 5 5 5 5\r
+#define BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC 56 56\r
+\r
+#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255\r
+#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255\r
+\r
+#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_MIN_INC 22 46\r
+#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4\r
+#define BUTTON_NAVIFRAME_CENTER_PADDING_MIN_MAX_INC 16 2\r
+#define BUTTON_NAVIFRAME_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36\r
+#define BUTTON_NAVIFRAME_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0\r
+#define BUTTON_NAVIFRAME_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0\r
+#define BUTTON_NAVIFRAME_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36\r
+#define BUTTON_NAVIFRAME_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38\r
+#define BUTTON_NAVIFRAME_CENTER_TEXT_FONT_SIZE_INC 32\r
+#define BUTTON_NAVIFRAME_MULTILINE_TEXT_FONT_SIZE_INC 24\r
+\r
+#define BUTTON_NAVIFRAME_BG_MIN_INC 106 68\r
+#define BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC 106 68\r
+#define BUTTON_NAVIFRAME_ICONONLY_BG_MIN_INC 72 724\r
+#define BUTTON_NAVIFRAME_BG_BORDER_INC 5 5 5 5\r
+#define BUTTON_NAVIFRAME_PADDING_MIN_INC 16 3\r
+#define BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38\r
+#define BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0\r
+#define BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC 38 38\r
+#define BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC 38 38\r
+#define BUTTON_TEXT_NAVIFRAME_FONT_SIZE_INC 32\r
+#define BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC 106 68\r
+\r
+#define BUTTON_NAVIFRAME_MORE_BG_MIN_MAX_INC 82 64\r
+#define BUTTON_NAVIFRAME_MORE_BG_BORDER_INC 5 5 5 5\r
+#define BUTTON_NAVIFRAME_MORE_DEFAULT_IMAGE_MIN_MAX_INC 50 50\r
+\r
+#define BUTTON_TEXT_NAVIFRAME_NORMAL_COLOR_INC 211 211 211 255\r
+#define BUTTON_TEXT_NAVIFRAME_PRESSED_COLOR_INC 249 249 249 255\r
+#define BUTTON_TEXT_NAVIFRAME_FOCUSED_COLOR_INC 249 249 249 255\r
+#define BUTTON_TEXT_NAVIFRAME_DISABLED_COLOR_INC 211 211 211 255\r
+\r
+//////////////////////////////////////////////////////////////\r
+   group { name: "elm/button/base/video/naviframe/title/default";\r
+      images {\r
+         image: "white/common/T01-2_title_btn_bg.png" COMP;\r
+         image: "white/common/T01-2_title_btn_bg_press_01.png" COMP;\r
+         image: "white/common/T01-2_title_btn_bg_press_02.png" COMP;\r
+      }\r
+      script {\r
+         public button_state = BUTTON_STATE_ENABLED;\r
+      }\r
+      parts {\r
+         part { name: "button_image";\r
+            scale: 1;\r
+            description { state: "default" 0.0;\r
+               min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC;\r
+               max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC;\r
+               image {\r
+                  normal: "white/common/T01-2_title_btn_bg.png";\r
+                  border: BUTTON_NAVIFRAME_BG_BORDER_INC;\r
+                  border_scale: 1;\r
+               }\r
+            }\r
+            description { state: "clicked" 0.0;\r
+               inherit: "default" 0.0;\r
+               image.normal: "white/common/T01-2_title_btn_bg_press_01.png";\r
+            }\r
+            description { state: "disabled" 0.0;\r
+               inherit: "default" 0.0;\r
+               color: 0 0 0 128;\r
+            }\r
+            description { state: "focused" 0.0;\r
+               inherit: "default" 0.0;\r
+               image.normal: "white/common/T01-2_title_btn_bg_press_02.png";\r
+            }\r
+         }\r
+         part { name: "padding_left_top";\r
+            type: RECT;\r
+            scale: 1;\r
+            mouse_events: 0;\r
+            description { state: "default" 0.0;\r
+               align: 0.0 0.0;\r
+               rel2.relative: 0.0 0.0;\r
+               min: BUTTON_NAVIFRAME_PADDING_MIN_INC;\r
+               fixed: 1 1;\r
+               visible: 0;\r
+            }\r
+         }\r
+         part { name: "bg";\r
+            type: RECT;\r
+            scale: 1;\r
+            mouse_events: 0;\r
+            description { state: "default" 0.0;\r
+               min: BUTTON_NAVIFRAME_BG_MIN_INC;\r
+               visible: 0;\r
+            }\r
+            description { state: "visible" 0.0;\r
+               inherit: "default" 0.0;\r
+               min: BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC;\r
+            }\r
+            description { state: "icononly" 0.0;\r
+               inherit: "default" 0.0;\r
+               min: BUTTON_NAVIFRAME_ICONONLY_BG_MIN_INC;\r
+            }\r
+         }\r
+         part { name: "padding_right_bottom";\r
+            type: RECT;\r
+            scale: 1;\r
+            mouse_events: 0;\r
+            description { state: "default" 0.0;\r
+               align: 1.0 1.0;\r
+               rel1.relative: 1.0 1.0;\r
+               min: BUTTON_NAVIFRAME_PADDING_MIN_INC;\r
+               fixed: 1 1;\r
+               visible: 0;\r
+            }\r
+         }\r
+         part { name: "icon_rect";\r
+            type: RECT;\r
+            scale: 1;\r
+            mouse_events: 0;\r
+            description { state: "default" 0.0;\r
+               visible: 0;\r
+               min: 0 0;\r
+               fixed: 1 0;\r
+               rel1 {\r
+                  relative: 1.0 1.0;\r
+                  to: "padding_left_top";\r
+               }\r
+               rel2 {\r
+                  relative: 1.0 0.0;\r
+                  to_x: "padding_left_top";\r
+                  to_y: "padding_right_bottom";\r
+               }\r
+               align: 0.0 0.5;\r
+            }\r
+            description { state: "visible" 0.0;\r
+               visible: 0;\r
+               min: BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC;\r
+               max: BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC;\r
+               fixed: 1 0;\r
+               rel1 {\r
+                  relative: 1.0 1.0;\r
+                  to: "padding_left_top";\r
+               }\r
+               rel2 {\r
+                  relative: 1.0 0.0;\r
+                  to_x: "padding_left_top";\r
+                  to_y: "padding_right_bottom";\r
+               }\r
+               align: 0.0 0.5;\r
+            }\r
+            description { state: "icononly" 0.0;\r
+               inherit: "default" 0.0;\r
+            }\r
+         }\r
+         part { name: "padding_after_icon";\r
+            type: RECT;\r
+            scale: 1;\r
+            mouse_events: 0;\r
+            description { state: "default" 0.0; //when only icon or no icon is there\r
+               align: 0.0 0.0;\r
+               rel1 {\r
+                  relative: 1.0 0.0;\r
+                  to: "icon_rect";\r
+               }\r
+               rel2.to: "icon_rect";\r
+               fixed: 1 0;\r
+               min: 0 0;\r
+               visible: 0;\r
+            }\r
+            description { state: "visible" 0.0;\r
+               visible: 0;\r
+               align: 0.0 0.0;\r
+               rel1 {\r
+                  relative: 1.0 0.0;\r
+                  to: "icon_rect";\r
+               }\r
+               rel2.to: "icon_rect";\r
+               fixed: 1 0;\r
+               min: BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC;\r
+            }\r
+            description { state: "icononly" 0.0;\r
+               inherit: "default" 0.0;\r
+            }\r
+         }\r
+         part { name: "padding_before_text";\r
+            type: RECT;\r
+            scale: 1;\r
+            mouse_events: 0;\r
+            description { state: "default" 0.0; //when only icon or no icon is there\r
+               align: 1.0 0.5;\r
+               rel1 {\r
+                  relative: 0.0 1.0;\r
+                  to_x: "elm.text";\r
+                  to_y: "padding_left_top";\r
+               }\r
+               rel2 {\r
+                  relative: 0.0 0.0;\r
+                  to_x: "elm.text";\r
+                  to_y: "padding_right_bottom";\r
+               }\r
+               fixed: 1 0;\r
+               min: BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC;\r
+               visible: 0;\r
+            }\r
+         }\r
+         part { name: "elm.swallow.content";\r
+            type: SWALLOW;\r
+            scale: 1;\r
+            clip_to: "clipper";\r
+            description { state: "default" 0.0;\r
+               visible: 0;\r
+               align: 0.0 0.5;\r
+               rel1 {\r
+                  relative: 1.0 1.0;\r
+                  to: "padding_left_top";\r
+               }\r
+               rel2 {\r
+                  relative: 1.0 0.0;\r
+                  to_x: "padding_left_top";\r
+                  to_y: "padding_right_bottom";\r
+               }\r
+               fixed: 1 0;\r
+            }\r
+            description { state: "visible" 0.0;\r
+               fixed: 1 0;\r
+               min: BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC;\r
+               max: BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC;\r
+               align: 1.0 0.5;\r
+               rel1 {\r
+                  relative: 0.0 1.0;\r
+                  to_x: "padding_before_text";\r
+                  to_y: "padding_left_top";\r
+               }\r
+               rel2 {\r
+                  relative: 0.0 0.0;\r
+                  to_x: "padding_before_text";\r
+                  to_y: "padding_right_bottom";\r
+               }\r
+            }\r
+            description { state: "icononly" 0.0;\r
+               min: BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC;\r
+               max: BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC;\r
+            }\r
+         }\r
+         part { name: "elm.text";\r
+            type: TEXT;\r
+            mouse_events: 0;\r
+            scale: 1;\r
+            clip_to: "clipper";\r
+            description { state: "default" 0.0;\r
+               visible: 0;\r
+               rel1 {\r
+                  relative: 1.0 1.0;\r
+                  to_x: "padding_after_icon";\r
+                  to_y: "padding_left_top";\r
+               }\r
+               rel2 {\r
+                  relative: 0.0 0.0;\r
+                  to: "padding_right_bottom";\r
+               }\r
+               color: BUTTON_TEXT_NAVIFRAME_NORMAL_COLOR_INC;\r
+               text {\r
+                  font: "SLP:style=Medium";\r
+                  text_class: "slp";\r
+                  size: BUTTON_TEXT_NAVIFRAME_FONT_SIZE_INC;\r
+                  min: 0 0;\r
+                  max: 1 0;\r
+               }\r
+            }\r
+            description { state: "visible" 0.0;\r
+               inherit: "default" 0.0;\r
+               visible: 1;\r
+            }\r
+            description { state: "clicked" 0.0;\r
+               inherit: "default" 0.0;\r
+               visible: 1;\r
+               color: BUTTON_TEXT_NAVIFRAME_PRESSED_COLOR_INC;\r
+            }\r
+            description { state: "disabled" 0.0;\r
+               inherit: "default" 0.0;\r
+               color: 0 0 0 128;\r
+            }\r
+            description { state: "disabled_visible" 0.0;\r
+               inherit: "default" 0.0;\r
+               color: BUTTON_TEXT_NAVIFRAME_DISABLED_COLOR_INC;\r
+               visible: 1;\r
+            }\r
+            description { state: "focused" 0.0;\r
+               inherit: "default" 0.0;\r
+               visible: 1;\r
+               color: BUTTON_TEXT_NAVIFRAME_FOCUSED_COLOR_INC;\r
+            }\r
+         }\r
+         part { name: "over2";\r
+            type: RECT;\r
+            repeat_events: 1;\r
+            ignore_flags: ON_HOLD;\r
+            description { state: "default" 0.0;\r
+               color: 0 0 0 0;\r
+            }\r
+         }\r
+         part { name: "over3";\r
+            type: RECT;\r
+            repeat_events: 1;\r
+            description { state: "default" 0.0;\r
+               color: 0 0 0 0;\r
+            }\r
+         }\r
+         part { name: "clipper";\r
+            type: RECT;\r
+            description { state: "default" 0.0;\r
+               color: 255 255 255 255;\r
+            }\r
+         }\r
+         part { name: "disabler";\r
+            type: RECT;\r
+            description { state: "default" 0.0;\r
+               color: 0 0 0 0;\r
+               visible: 0;\r
+            }\r
+            description { state: "disabled" 0.0;\r
+               inherit: "default" 0.0;\r
+               visible: 1;\r
+            }\r
+         }\r
+      }\r
+      programs {\r
+         program { name: "button_click";\r
+            signal: "mouse,down,1";\r
+            source: "over2";\r
+            action: SIGNAL_EMIT "elm,action,press" "";\r
+            after: "button_click_anim";\r
+         }\r
+         program { name: "button_click_anim";\r
+            action: STATE_SET "clicked" 0.0;\r
+            target: "button_image";\r
+            after: "text_clicked";\r
+         }\r
+         program { name: "text_clicked";\r
+            script {\r
+               new st[31];\r
+               new Float:vl;\r
+               get_state(PART:"elm.text", st, 30, vl);\r
+               if (!strcmp(st, "visible"))\r
+                 set_state(PART:"elm.text", "clicked", 0.0);\r
+            }\r
+         }\r
+         program { name: "button_unpress";\r
+            action: SIGNAL_EMIT "elm,action,unpress" "";\r
+         }\r
+         program { name: "button_mouseout_clicked";\r
+            signal: "mouse,up,1";\r
+            source: "over3";\r
+            script {\r
+               new st[31];\r
+               new Float:vl;\r
+               get_state(PART:"elm.swallow.content", st, 30, vl);\r
+               if (strcmp(st, "icononly"))\r
+                 {\r
+                    emit("elm,action,default,text,set", "");\r
+                    set_state(PART:"elm.text", "visible", 0.0);\r
+                 }\r
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)\r
+                 set_state(PART:"button_image", "default", 0.0);\r
+            }\r
+            after: button_unpress;\r
+         }\r
+         program { name: "button_unclick3";\r
+            signal: "mouse,clicked,1";\r
+            source: "over2";\r
+            action: SIGNAL_EMIT "elm,action,click" "";\r
+         }\r
+         program { name: "text_show";\r
+            signal: "elm,state,text,visible";\r
+            source: "elm";\r
+            script {\r
+               new st[31];\r
+               new Float:vl;\r
+               get_state(PART:"elm.swallow.content", st, 30, vl);\r
+               if (!strcmp(st, "icononly"))\r
+                 {\r
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);\r
+                    set_state(PART:"icon_rect", "visible", 0.0);\r
+                    set_state(PART:"padding_after_icon", "visible", 0.0);\r
+                    set_state(PART:"bg", "visible", 0.0);\r
+                 }\r
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)\r
+                 set_state(PART:"elm.text", "visible", 0.0);\r
+               else\r
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);\r
+            }\r
+         }\r
+         program { name: "text_hide";\r
+            signal: "elm,state,text,hidden";\r
+            source: "elm";\r
+            script {\r
+               new st[31];\r
+               new Float:vl;\r
+               get_state(PART:"elm.swallow.content", st, 30, vl);\r
+               if (!strcmp(st, "visible"))\r
+                 {\r
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);\r
+                    set_state(PART:"icon_rect", "icononly", 0.0);\r
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);\r
+                    set_state(PART:"bg", "icononly", 0.0);\r
+                 }\r
+               set_state(PART:"elm.text", "default", 0.0);\r
+            }\r
+         }\r
+         program { name: "icon_show";\r
+            signal: "elm,state,icon,visible";\r
+            source: "elm";\r
+            script {\r
+               new st[31];\r
+               new Float:vl;\r
+               get_state(PART:"elm.text", st, 30, vl);\r
+               if (!strcmp(st, "visible"))\r
+                 {\r
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);\r
+                    set_state(PART:"icon_rect", "visible", 0.0);\r
+                    set_state(PART:"padding_after_icon", "visible", 0.0);\r
+                    set_state(PART:"bg", "visible", 0.0);\r
+                 }\r
+               else\r
+                 {\r
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);\r
+                    set_state(PART:"icon_rect", "icononly", 0.0);\r
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);\r
+                    set_state(PART:"bg", "icononly", 0.0);\r
+                 }\r
+            }\r
+         }\r
+         program { name: "icon_hide";\r
+            signal: "elm,state,icon,hidden";\r
+            source: "elm";\r
+            action: STATE_SET "default" 0.0;\r
+            target: "elm.swallow.content";\r
+            target: "padding_after_icon";\r
+            target: "icon_rect";\r
+            target: "bg";\r
+         }\r
+         program { name: "disable";\r
+            signal: "elm,state,disabled";\r
+            source: "elm";\r
+            action: STATE_SET "disabled" 0.0;\r
+            target: "button_image";\r
+            target: "disabler";\r
+            after: "disable_text";\r
+         }\r
+         program { name: "disable_text";\r
+            script {\r
+               new st[31];\r
+               new Float:vl;\r
+               get_state(PART:"elm.text", st, 30, vl);\r
+               if (!strcmp(st, "visible"))\r
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);\r
+               else\r
+                 set_state(PART:"elm.text", "disabled", 0.0);\r
+               set_int(button_state, BUTTON_STATE_DISABLED);\r
+            }\r
+         }\r
+         program { name: "enable";\r
+            signal: "elm,state,enabled";\r
+            source: "elm";\r
+            action: STATE_SET "default" 0.0;\r
+            target: "button_image";\r
+            target: "disabler";\r
+            after: "enable_text";\r
+         }\r
+         program { name: "enable_text";\r
+            script {\r
+               new st[31];\r
+               new Float:vl;\r
+               get_state(PART:"elm.text", st, 30, vl);\r
+               if (!strcmp(st, "disabled_visible"))\r
+                 set_state(PART:"elm.text", "visible", 0.0);\r
+               else\r
+                 set_state(PART:"elm.text", "default", 0.0);\r
+               set_int(button_state, BUTTON_STATE_ENABLED);\r
+            }\r
+         }\r
+         program { name: "focused";\r
+            //signal: "elm,action,focus";\r
+            //source: "elm";\r
+            action: STATE_SET "focused" 0.0;\r
+            target: "button_image";\r
+            target: "elm.text";\r
+         }\r
+         program { name: "unfocused";\r
+            //signal: "elm,action,unfocus";\r
+            //source: "elm";\r
+            action: STATE_SET "default" 0.0;\r
+            target: "button_image";\r
+            after: "unfocus_text";\r
+         }\r
+         program { name: "unfocus_text";\r
+            action: STATE_SET "visible" 0.0;\r
+            target: "elm.text";\r
+         }\r
+      }\r
+   }\r
diff --git a/res/edc/vp-button.edc b/res/edc/vp-button.edc
new file mode 100755 (executable)
index 0000000..d013cf2
--- /dev/null
@@ -0,0 +1,1069 @@
+#define BUTTON_STATE_ENABLED  0
+#define BUTTON_STATE_DISABLED 1
+
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_NORMAL_COLOR_INC 146 124 98 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_PRESSED_COLOR_INC 217 147 26 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_FOCUSED_COLOR_INC 217 147 26 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC 160 151 145 255
+
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC 36
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC 74
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4
+#define BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC 16 2
+#define BUTTON_NAVIBAR_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36
+#define BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0
+#define BUTTON_NAVIBAR_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0
+#define BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36
+#define BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38
+#define BUTTON_NAVIBAR_CENTER_TEXT_FONT_SIZE_INC 32
+#define BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC 24
+
+#define BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC 106 40
+#define BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC 36 32
+
+#define NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC 3 3 3 255
+#define NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255
+
+#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74
+#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 5 5 5 5
+#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 5 5
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 32
+
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 108 108 108 255
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 108 108 108 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 108 115 118 255
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/video/style1";
+      alias: "elm/button/base/video/text_only/style1";
+      alias: "elm/button/base/video/center";
+      alias: "elm/button/base/video/icon_and_text/center";
+      alias: "elm/button/base/video/nocontents/search_button";
+      alias: "elm/button/base/video/naviframe/title/default";
+      images {
+         image: "T01_title_btn.png" COMP;
+         image: "T01_title_btn_press.png" COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               image {
+                  normal: "T01_title_btn.png";
+                  border: BUTTON_TEXT_STYLE1_BG_BORDER_INC;
+                  border_scale: 1;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "T01_title_btn_press.png";
+               }
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "T01_title_btn.png";
+               }
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "T01_title_btn_press.png";
+               }
+            }
+         }
+         part { name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel2 {
+                  relative: 0.0 0.0;
+               }
+               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_BG_MIN_INC;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC;
+            }
+         }
+         part { name: "padding_right_bottom";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1 {
+                  relative: 1.0 1.0;
+               }
+               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            description { state: "visible" 0.0;
+               visible: 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+               relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "padding_after_icon";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: 0 0;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "padding_before_text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "padding_before_text";
+                  to_y: "padding_right_bottom";
+               }
+            }
+            description { state: "icononly" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+               align: 0.5 0.5;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_after_icon";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 128;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+               visible: 1;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+            }
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_after_icon";
+            target: "icon_rect";
+            target: "bg";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled", 0.0);
+               set_int(button_state, BUTTON_STATE_DISABLED);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "default", 0.0);
+               set_int(button_state, BUTTON_STATE_ENABLED);
+            }
+         }
+         program { name: "focused";
+            //signal: "elm,action,focus";
+            //source: "elm";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            //signal: "elm,action,unfocus";
+            //source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/video/naviframe/back_btn/default";
+       alias: "elm/button/base/video/naviframe/prev_btn/default";
+       alias: "elm/button/base/video/naviframe/end_btn/default";
+       //TODO: Remove this alias later
+       alias: "elm/button/base/video/navigationbar_prev_btn/default";
+       alias: "elm/button/base/video/navigationbar_backbutton/default";
+       alias: "elm/button/base/video/navigationbar_end_btn/default";
+       images {
+         image: "T01_btn_prev.png" COMP;
+
+      }
+      parts {
+         part { name: "button_image";
+            type: RECT;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part {name: "padding_right";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1 0;
+               min: 1 0;
+               rel1 { relative: 1 0.2; }
+               rel2 { relative: 1 0.8; }
+               fixed: 1 0;
+               color: NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC;
+            }
+         }
+         part {name: "padding_before_right";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1 0;
+               min: 1 0;
+               rel1 { relative: 0 0; to: "padding_right"; }
+               rel2 { relative: 0 1; to: "padding_right"; }
+               fixed: 1 0;
+               color: NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC;
+            }
+         }
+         part { name: "button_center_part";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC;
+               max: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC;
+               align: 0.5 0.5;
+               rel2 { relative: 0 1; to_x: "padding_before_right"; }
+               image {
+                  normal: "T01_btn_prev.png";
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T01_btn_prev.png";
+            }
+         }
+         part { name: "over1";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over2";
+            mouse_events: 1;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over1";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            target: "button_center_part";
+         }
+         program { name: "button_unclick";
+            signal: "mouse,up,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+            after: "button_unclick_anim";
+         }
+         program { name: "button_unclick_anim";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "button_center_part";
+         }
+         program { name: "button_unclick2";
+            signal: "mouse,clicked,1";
+            source: "over1";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disabler";
+            target: "button_image";
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disabler";
+            target: "button_image";
+         }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/naviframe_control/multiline";
+      alias: "elm/button/base/video/navigationbar_control/multiline";
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      images.image: "T01_title_btn.png" COMP;
+      images.image: "T01_title_btn_press.png" COMP;
+      styles{
+         style { name: "btn_multiline_navigationbar_controlbar_style";
+            base: "font=SLP:style=Medium font_size="BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC" align=center color=#ffffff wrap=mixed";
+            tag: "br" "\n";
+            tag: "ps" "ps";
+            tag: "tab" "\t";
+         }
+      }
+      parts {
+         part { name: "button_image";
+            type: IMAGE;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+               image.normal: "T01_title_btn.png";
+               image.border: BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T01_title_btn.png";
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T01_title_btn_press.png";
+            }
+         }
+         part {
+            name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+               }
+               min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part {
+            name: "padding_right_bottom";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1.relative: 1.0 1.0;
+               rel2.relative: 1.0 1.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part {
+            name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+         }
+         part {
+            name: "padding_icon_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: 0 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+           }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               visible: 1;
+               min: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC;
+               max: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+            }
+            description { state: "icononly" 0.0;
+               visible: 1;
+               min: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC;
+               max: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_icon_text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                   relative: 0.0 0.0;
+                   to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+               color: 255 255 255 255;
+               text {
+                  style: "btn_multiline_navigationbar_controlbar_style";
+                  min: 0 0;
+                  max: 0 1;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 80 0;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               color: 255 255 255 127;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if(get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "visible", 0.0);
+                 }
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "icononly", 0.0);
+                 }
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_icon_text";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_DISABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_ENABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "focused";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
diff --git a/res/edc/vp-chapter-view.edc b/res/edc/vp-chapter-view.edc
new file mode 100755 (executable)
index 0000000..6305934
--- /dev/null
@@ -0,0 +1,757 @@
+
+
+#define ITEM_BG_IMAGE "white/common/T01-2_popup_bg.png"
+#define ITEM_BG_IMAGE_BORDER 3 3 3 3
+
+#define ITEM_BG_COLOR 40 40 40 20
+#define ITEM_TEXT_BG_COLOR 0 0 0 255
+#define ITEM_TEXT_COLOR 255 255 255 255
+
+collections {
+       group {
+               images {
+                       image: ITEM_BG_IMAGE COMP;
+               }
+               name: "chapter";
+               parts {
+                       part {
+                               name: "chapter.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 0 0 0 255;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.01.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.016 0.01;}
+                                       rel2 { relative: 0.246 0.33;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.02.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.262 0.01;}
+                                       rel2 { relative: 0.492 0.33;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.03.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.508 0.01;}
+                                       rel2 { relative: 0.738 0.33;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.04.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.754 0.01;}
+                                       rel2 { relative: 0.984 0.33;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+
+
+                       part {
+                               name: "chapter.item.05.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.016 0.34;}
+                                       rel2 { relative: 0.246 0.66;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.06.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.262 0.34;}
+                                       rel2 { relative: 0.492 0.66;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.07.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.508 0.34;}
+                                       rel2 { relative: 0.738 0.66;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.08.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.754 0.34;}
+                                       rel2 { relative: 0.984 0.66;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+
+
+                       part {
+                               name: "chapter.item.09.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.016 0.67;}
+                                       rel2 { relative: 0.246 0.99;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.10.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.262 0.67;}
+                                       rel2 { relative: 0.492 0.99;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.11.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.508 0.67;}
+                                       rel2 { relative: 0.738 0.99;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.12.bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.754 0.67;}
+                                       rel2 { relative: 0.984 0.99;}
+                                       color: ITEM_BG_COLOR;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.01";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.016 0.01;}
+                                       rel2 { relative: 0.246 0.33;}
+                               }
+                       }
+                       part {
+                               name: "chapter.item.02";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.262 0.01;}
+                                       rel2 { relative: 0.492 0.33;}
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.03";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.508 0.01;}
+                                       rel2 { relative: 0.738 0.33;}
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.04";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.754 0.01;}
+                                       rel2 { relative: 0.984 0.33;}
+                               }
+                       }
+
+
+                       part {
+                               name: "chapter.item.05";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.016 0.34;}
+                                       rel2 { relative: 0.246 0.66;}
+                               }
+                       }
+                       part {
+                               name: "chapter.item.06";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.262 0.34;}
+                                       rel2 { relative: 0.492 0.66;}
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.07";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.508 0.34;}
+                                       rel2 { relative: 0.738 0.66;}
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.08";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.754 0.34;}
+                                       rel2 { relative: 0.984 0.66;}
+                               }
+                       }
+
+
+                       part {
+                               name: "chapter.item.09";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.016 0.67;}
+                                       rel2 { relative: 0.246 0.99;}
+                               }
+                       }
+                       part {
+                               name: "chapter.item.10";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.262 0.67;}
+                                       rel2 { relative: 0.492 0.99;}
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.11";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.508 0.67;}
+                                       rel2 { relative: 0.738 0.99;}
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.12";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.754 0.67;}
+                                       rel2 { relative: 0.984 0.99;}
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.01.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.01.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.01.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.02.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.02.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.02.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.03.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.03.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.03.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.04.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.04.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.04.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+
+
+                       part {
+                               name: "chapter.item.05.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.05.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.05.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.06.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.06.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.06.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.07.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.07.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.07.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.08.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.08.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.08.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+
+
+                       part {
+                               name: "chapter.item.09.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.09.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.09.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.10.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.10.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.10.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.11.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.11.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.11.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.12.num";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 1.0; to: "chapter.item.12.bg";}
+                                       rel2 { relative: 0.0 1.0; to: "chapter.item.12.bg";}
+                                       color: ITEM_TEXT_BG_COLOR;
+                               }
+                       }
+                       part {
+                               name: "chapter.item.01.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.01.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.01.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "01";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.02.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.02.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.02.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "02";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.03.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.03.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.03.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "03";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.04.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.04.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.04.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "04";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.05.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.05.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.05.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "05";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.06.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.06.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.06.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "06";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.07.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.07.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.07.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "07";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.08.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.08.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.08.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "08";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.09.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.09.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.09.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "09";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.10.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.10.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.10.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "10";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.11.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.11.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.11.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "11";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "chapter.item.12.num.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;  to: "chapter.item.12.num";}
+                                       rel2 { relative: 1.0 1.0;  to: "chapter.item.12.num";}
+                                       color: ITEM_TEXT_COLOR ;
+                                       text {
+                                               font: FONT_MEDIUM_TYPE;
+                                               text_class: "slp";
+                                               size: 25;
+                                               text: "12";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+               } /* parts */
+       } /* group */
+} /* collections */
diff --git a/res/edc/vp-check.edc b/res/edc/vp-check.edc
new file mode 100755 (executable)
index 0000000..6dc567e
--- /dev/null
@@ -0,0 +1,1318 @@
+#define CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC 42 42
+
+#define CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC        255 255 255 255
+#define CHECK_DEFAULT_TEXT_PRESSED_COLOR_INC      255 255 255 255
+#define CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC          136 136 136 136
+
+//////////////////////////////////////////////////////////
+//
+#define        GALLERY_EDC_IMAGE_CHECK_BG "T01_checkbox.png"
+#define        GALLERY_EDC_IMAGE_CHECK_BG_DIM "00_check_bg_dim.png"
+#define        GALLERY_EDC_IMAGE_CHECK_BG_CHECKING "T01_check.png"
+#define GALLERY_EDC_IMAGE_CHECK_ALBUM_BG "T01_checkbox.png"
+#define GALLERY_EDC_IMAGE_CHECK_GRID "T01_grid_select_check.png"
+#define GALLERY_EDC_IMAGE_CHECK_PINCH_GRID "00_grid_select_check.png"
+
+// Grid item background size W: 14+158+6; H: 24+158
+#define W               178
+#define H               182
+
+// Gap between bg and icon
+#define GAP_BG_L         14
+#define GAP_BG_R         6
+#define GAP_BG_T         24
+
+// Gap between icon and shadow
+#define GAP_ICON_L         3
+#define GAP_ICON_R         3
+#define GAP_ICON_T         0
+#define GAP_ICON_B         4
+
+// Shadow image size
+#define SHADOW_W               (W-GAP_BG_L-GAP_BG_R+GAP_ICON_L+GAP_ICON_R)
+#define SHADOW_H               (H-GAP_BG_T+GAP_ICON_B)
+
+// Gap between bg and shadow
+#define GAP_SHADOW_L         (GAP_BG_L-GAP_ICON_L)
+#define GAP_SHADOW_R         (GAP_BG_R-GAP_ICON_R)
+#define GAP_SHADOW_T         (GAP_BG_T-GAP_ICON_T)
+#define GAP_SHADOW_B         (0+GAP_ICON_B)
+
+
+
+#define ZOOMED_W               116 //6+104+6
+#define ZOOMED_H               110 //6+104
+
+#define ZOOMED_GAP_L         6
+#define ZOOMED_GAP_R         6
+#define ZOOMED_GAP_T         6
+#define ZOOMED_GAP_B         0
+//
+//////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////////////
+//
+// check default textblock style
+//
+///////////////////////////////////////////////////////////////////////////////////////
+       styles {
+               style { name: "check_label_textblock_style";
+                       base: "font=SLP:style=Roman font_size=32 color=#ffffff wrap=char";
+                       tag: "br" "\n";
+                       tag: "ps" "ps";
+                       tag: "hilight" "+ font=SLP:style=Bold";
+                       tag: "b" "+ font=SLP:style=Bold";
+                       tag: "whitecolor" "+ color=#ffffff";
+                       tag: "tab" "\t";
+               }
+       }
+
+#define CHECK_STATE_DEFAULT 0
+#define CHECK_STATE_VISIBLE 1
+#define CHECK_STATE_DISABLED_VISIBLE 2
+#define CHECK_STATE_DISABLED 3
+
+////////////////////////////////////////////////////////////////////////////////
+#define CHECK_STYLE_DEFAULT(style_name, image_bg, image_checking, min_width, min_height) \
+ group { name: "elm/check/base/"style_name; \
+      images { \
+         image: image_bg COMP; \
+         image: GALLERY_EDC_IMAGE_CHECK_BG_DIM COMP; \
+         image: image_checking COMP; \
+      } \
+      script { \
+         public check_state = CHECK_STATE_DEFAULT; \
+      } \
+      parts { \
+         part { name: "back_bg"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               rel2.relative: 0.0 1.0; \
+               align: 0 0.5; \
+               min: min_width min_height; \
+               fixed: 1 0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "bg"; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \
+               max: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \
+               fixed: 1 1; \
+               rel1.to: "back_bg"; \
+               rel2.to: "back_bg"; \
+               image.normal: image_bg; \
+               fill.smooth : 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: GALLERY_EDC_IMAGE_CHECK_BG_DIM; \
+               fill.smooth : 0; \
+            } \
+         } \
+         part { name: "check"; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               rel1.to: "bg"; \
+               rel2.to: "bg"; \
+               visible: 0; \
+               image.normal: image_checking; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+         part { name: "elm.swallow.content"; \
+            type: SWALLOW; \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               visible: 0; \
+               color: 255 255 255 255; \
+               align: 0.0 0.5; \
+               rel1 { \
+                  to_x: "bg"; \
+                  relative: 1.0 0.0; \
+                  offset: 1 1; \
+               } \
+               rel2 { \
+                  to_x: "bg"; \
+                  relative: 1.0 1.0; \
+                  offset: 2 -2; \
+               } \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+               aspect_preference: VERTICAL; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: 128 128 128 128; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               color: 128 128 128 128; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+            } \
+         } \
+         part { name: "elm.text"; \
+            type: TEXTBLOCK; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               fixed: 0 1; \
+               rel1 { \
+                  relative: 1.0 0.5; \
+                  offset: 1 1; \
+                  to_x: "elm.swallow.content"; \
+               } \
+               rel2 { \
+                  relative: 1.0 0.5; \
+                  offset: -2 -2; \
+               } \
+               align: 0.0 0.5; \
+               text { \
+                  style: "check_label_textblock_style"; \
+                  min: 0 0; \
+               } \
+               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \
+            } \
+         } \
+         part { name: "events1"; \
+            type: RECT; \
+            ignore_flags: ON_HOLD; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "events2"; \
+            type: RECT; \
+            repeat_events: 1; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "disabler"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+      } \
+      programs { \
+         program { name: "click"; \
+            signal: "mouse,clicked,1"; \
+            source: "events1"; \
+            action: SIGNAL_EMIT "elm,action,check,toggle" ""; \
+         } \
+         program { name: "check_on"; \
+            signal: "elm,state,check,on"; \
+            source: "elm"; \
+            script { \
+               set_int(check_state, CHECK_STATE_VISIBLE); \
+               set_state(PART:"check", "visible", 0.0); \
+            } \
+         } \
+         program { name: "check_off"; \
+            signal: "elm,state,check,off"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "check"; \
+            script { \
+               if (get_int(check_state) == CHECK_STATE_VISIBLE) \
+                 { \
+                    set_int(check_state, CHECK_STATE_DEFAULT); \
+                    set_state(PART:"check", "default", 0.0); \
+                 } \
+            } \
+         } \
+         program { name: "text_show"; \
+            signal: "elm,state,text,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "text_hide"; \
+            signal: "elm,state,text,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "icon_show"; \
+            signal: "elm,state,icon,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "icon_hide"; \
+            signal: "elm,state,icon,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "disable"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "disabler"; \
+            target: "bg"; \
+            after: "disable_text"; \
+         } \
+         program { name: "disable_text"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.text", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.text", "disabled", 0.0); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "disabled", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 { \
+                    set_state(PART:"check", "disabled_visible", 0.0); \
+                    set_int(check_state, CHECK_STATE_DISABLED_VISIBLE); \
+                 } \
+            } \
+         } \
+         program { name: "enable"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "disabler"; \
+            target: "bg"; \
+            after: "enable_text"; \
+         } \
+         program { name: "enable_text"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 set_state(PART:"elm.text", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.text", "default", 0.0); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "default", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 { \
+                    set_state(PART:"check", "visible", 0.0); \
+                    set_int(check_state, CHECK_STATE_VISIBLE); \
+                 } \
+               else \
+                 set_int(check_state, CHECK_STATE_DEFAULT); \
+            } \
+         } \
+      } \
+   }
+
+////////////////////////////////////////////////////////////////////////////////
+       CHECK_STYLE_DEFAULT("gallery/default", GALLERY_EDC_IMAGE_CHECK_BG, GALLERY_EDC_IMAGE_CHECK_BG_CHECKING, 42, 42)
+
+////////////////////////////////////////////////////////////////////////////////
+       CHECK_STYLE_DEFAULT("gallery/album", GALLERY_EDC_IMAGE_CHECK_ALBUM_BG, GALLERY_EDC_IMAGE_CHECK_BG_CHECKING, 42, 42)
+
+////////////////////////////////////////////////////////////////////////////////
+#define CHECK_STYLE_GRID(style_name, image_grid, width, height) \
+   group { name: "elm/check/base/"style_name; \
+      images.image: image_grid COMP; \
+      parts { \
+         part { name: "bg"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+            description { state: "pressed" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+         } \
+               part { name: "icon_bg_img"; \
+                       type: RECT; \
+                       mouse_events: 0; \
+                       scale : 1; \
+                       description { \
+                               color: 0 0 0 0; \
+                               rel1 { relative: GAP_SHADOW_L/W GAP_SHADOW_T/H; to: "bg"; } \
+                               rel2 { relative: (W-GAP_SHADOW_R-1)/W (H+GAP_SHADOW_B-1)/H; to: "bg"; } \
+                       } \
+               } \
+               part { name: "icon_bg"; \
+                       type: RECT; \
+                       description { state: "default" 0.0; \
+                               color: 0 0 0 0; \
+                               rel1 { relative: GAP_ICON_L/SHADOW_W GAP_ICON_T/SHADOW_H; to: "icon_bg_img"; } \
+                               rel2 { relative: (SHADOW_W-GAP_ICON_R+2)/SHADOW_W (SHADOW_H-GAP_ICON_B+1)/SHADOW_H; to: "icon_bg_img"; } \
+                       } \
+               } \
+         part { name: "bg2"; \
+            type: RECT; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               rel1.to: "icon_bg"; \
+               rel2.to: "icon_bg"; \
+               align: 0.5 0.5; \
+               min: width height; \
+               max: width height; \
+               color:  0 0 0 0; \
+            } \
+            description { state: "pressed" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+         } \
+         part { name: "selected_bg"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               rel1.to: "icon_bg"; \
+               rel2.to: "icon_bg"; \
+               color: 0 0 0 0; \
+               visible: 0; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               color: 0 0 0 153; \
+               visible: 1; \
+            } \
+         } \
+         part { name: "check"; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               rel1.to: "bg2"; \
+               rel2.to: "bg2"; \
+               visible: 0; \
+               image.normal: image_grid; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+            description { state: "pressed" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+         part { name: "elm.swallow.content"; \
+            type: SWALLOW; \
+            description { \
+               state: "default" 0.0; \
+               fixed: 1 0; \
+               visible: 0; \
+               color: 255 255 255 255; \
+               align: 0.0 0.5; \
+               rel1 { \
+                  to_x: "bg2"; \
+                  relative: 1.0 0.0; \
+                  offset: 1 1; \
+               } \
+               rel2 { \
+                  to_x: "bg2"; \
+                  relative: 1.0 1.0; \
+                  offset: 2 -2; \
+               } \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+               aspect_preference: VERTICAL; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: 128 128 128 128; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               color: 128 128 128 128; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+            } \
+         } \
+         part { name: "elm.text"; \
+            type: TEXTBLOCK; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               fixed: 0 1; \
+               rel1 { \
+                  relative: 1.0 0.5; \
+                  offset: 1 1; \
+                  to_x: "elm.swallow.content"; \
+               } \
+               rel2 { \
+                  relative: 1.0 0.5; \
+                  offset: -2 -2; \
+               } \
+               color: 255 255 255 255; \
+               align: 0.0 0.5; \
+               text { \
+                  style: "check_label_textblock_style"; \
+                  min: 0 0; \
+               } \
+               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \
+            } \
+         } \
+         part { name: "events"; \
+            type: RECT; \
+            ignore_flags: ON_HOLD; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "disabler"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+      } \
+      programs { \
+         program { name: "click"; \
+            signal: "mouse,up,1"; \
+            source: "events"; \
+            action: SIGNAL_EMIT "elm,action,check,toggle" ""; \
+            after: "bg_normal"; \
+         } \
+         program { name: "bg_normal"; \
+            script { \
+               set_state(PART:"bg", "default", 0.0); \
+               set_state(PART:"bg2", "default", 0.0); \
+            } \
+         } \
+         program { name: "mouseout"; \
+            signal: "mouse,out"; \
+            source: "events"; \
+            after: "bg_check_normal"; \
+         } \
+         program { name: "bg_check_normal"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "pressed")) \
+                 set_state(PART:"check", "visible", 0.0); \
+               set_state(PART:"bg", "default", 0.0); \
+               set_state(PART:"bg2", "default", 0.0); \
+            } \
+         } \
+         program { name: "pressed"; \
+            signal: "mouse,down,1"; \
+            source: "events"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"check", "pressed", 0.0); \
+               set_state(PART:"bg", "pressed", 0.0); \
+               set_state(PART:"bg2", "pressed", 0.0); \
+            } \
+         } \
+         program { name: "check_on"; \
+            signal: "elm,state,check,on"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "check"; \
+            target: "selected_bg"; \
+         } \
+         program { name: "check_off"; \
+            signal: "elm,state,check,off"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "check"; \
+            target: "selected_bg"; \
+         } \
+         program { name: "text_show"; \
+            signal: "elm,state,text,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "text_hide"; \
+            signal: "elm,state,text,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "icon_show"; \
+            signal: "elm,state,icon,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "icon_hide"; \
+            signal: "elm,state,icon,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "disable"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "disabler"; \
+            target: "bg"; \
+            target: "bg2"; \
+            after: "disable_text"; \
+         } \
+         program { name: "disable_text"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.text", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.text", "disabled", 0.0); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "disabled", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"check", "disabled_visible", 0.0); \
+            } \
+         } \
+         program { name: "enable"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "disabler"; \
+            target: "bg"; \
+            target: "bg2"; \
+            after: "enable_text"; \
+         } \
+         program { name: "enable_text"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 set_state(PART:"elm.text", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.text", "default", 0.0); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "default", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 set_state(PART:"check", "visible", 0.0); \
+            } \
+         } \
+      } \
+   }
+
+////////////////////////////////////////////////////////////////////////////////
+       CHECK_STYLE_GRID("gallery/grid", GALLERY_EDC_IMAGE_CHECK_GRID, 64, 64)
+
+////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/check/base/gallery/pinch/grid";
+      images.image: GALLERY_EDC_IMAGE_CHECK_PINCH_GRID COMP;
+      parts {
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+        part { name: "icon_bg";
+                type: RECT;
+                description {
+                    state: "default" 0.0;
+                    color: 0 0 0 0;
+                    rel1 { relative: ZOOMED_GAP_L/ZOOMED_W ZOOMED_GAP_T/ZOOMED_H; to: "bg"; }
+                    rel2 { relative: (ZOOMED_W-ZOOMED_GAP_R)/ZOOMED_W (ZOOMED_H-ZOOMED_GAP_B)/ZOOMED_H; to: "bg"; }
+                }
+        }
+         part { name: "bg2";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1.to: "icon_bg";
+               rel2.to: "icon_bg";
+               align: 0.5 0.5;
+               min: 40 40;
+               max: 40 40;
+               color:  0 0 0 0;
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "selected_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1.to: "icon_bg";
+               rel2.to: "icon_bg";
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 153;
+               visible: 1;
+            }
+         }
+         part { name: "check";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1.to: "bg2";
+               rel2.to: "bg2";
+               visible: 0;
+               image.normal: GALLERY_EDC_IMAGE_CHECK_PINCH_GRID;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               fixed: 1 0;
+               visible: 0;
+               color: 255 255 255 255;
+               align: 0.0 0.5;
+               rel1 {
+                  to_x: "bg2";
+                  relative: 1.0 0.0;
+                  offset: 1 1;
+               }
+               rel2 {
+                  to_x: "bg2";
+                  relative: 1.0 1.0;
+                  offset: 2 -2;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               fixed: 1 1;
+               visible: 1;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+               fixed: 1 1;
+               visible: 1;
+               aspect: 1.0 1.0;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               fixed: 0 1;
+               rel1 {
+                  relative: 1.0 0.5;
+                  offset: 1 1;
+                  to_x: "elm.swallow.content";
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -2 -2;
+               }
+               color: 255 255 255 255;
+               align: 0.0 0.5;
+               text {
+                  style: "check_label_textblock_style";
+                  min: 0 0;
+               }
+               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               text.min: 1 1;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               text.min: 1 1;
+               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC;
+            }
+         }
+         part { name: "events";
+            type: RECT;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "click";
+            signal: "mouse,up,1";
+            source: "events";
+            action: SIGNAL_EMIT "elm,action,check,toggle" "";
+            after: "bg_normal";
+         }
+         program { name: "bg_normal";
+            script {
+               set_state(PART:"bg", "default", 0.0);
+               set_state(PART:"bg2", "default", 0.0);
+            }
+         }
+         program { name: "mouseout";
+            signal: "mouse,out";
+            source: "events";
+            after: "bg_check_normal";
+         }
+         program { name: "bg_check_normal";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "pressed"))
+                 set_state(PART:"check", "visible", 0.0);
+               set_state(PART:"bg", "default", 0.0);
+               set_state(PART:"bg2", "default", 0.0);
+            }
+         }
+         program { name: "pressed";
+            signal: "mouse,down,1";
+            source: "events";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"check", "pressed", 0.0);
+               set_state(PART:"bg", "pressed", 0.0);
+               set_state(PART:"bg2", "pressed", 0.0);
+            }
+         }
+         program { name: "check_on";
+            signal: "elm,state,check,on";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "check";
+            target: "selected_bg";
+         }
+         program { name: "check_off";
+            signal: "elm,state,check,off";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "check";
+            target: "selected_bg";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.text";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disabler";
+            target: "bg";
+            target: "bg2";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled", 0.0);
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.swallow.content", "disabled", 0.0);
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"check", "disabled_visible", 0.0);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disabler";
+            target: "bg";
+            target: "bg2";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "default", 0.0);
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.swallow.content", "visible", 0.0);
+               else
+                 set_state(PART:"elm.swallow.content", "default", 0.0);
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"check", "visible", 0.0);
+            }
+         }
+      }
+   }
+
+////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/check/base/gallery/album/grid";
+      parts {
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "bg2";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               align: 0.5 0.5;
+               min: 40 40;
+               max: 40 40;
+               color:  0 0 0 0;
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "selected_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 153;
+               visible: 1;
+            }
+         }
+         part { name: "check";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1.to: "bg2";
+               rel2.to: "bg2";
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               fixed: 1 0;
+               visible: 0;
+               color: 255 255 255 255;
+               align: 0.0 0.5;
+               rel1 {
+                  to_x: "bg2";
+                  relative: 1.0 0.0;
+                  offset: 1 1;
+               }
+               rel2 {
+                  to_x: "bg2";
+                  relative: 1.0 1.0;
+                  offset: 2 -2;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               fixed: 1 1;
+               visible: 1;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+               fixed: 1 1;
+               visible: 1;
+               aspect: 1.0 1.0;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               fixed: 0 1;
+               rel1 {
+                  relative: 1.0 0.5;
+                  offset: 1 1;
+                  to_x: "elm.swallow.content";
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -2 -2;
+               }
+               color: 255 255 255 255;
+               align: 0.0 0.5;
+               text {
+                  style: "check_label_textblock_style";
+                  min: 0 0;
+               }
+               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               text.min: 1 1;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               text.min: 1 1;
+               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC;
+            }
+         }
+         part { name: "events";
+            type: RECT;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "click";
+            signal: "mouse,up,1";
+            source: "events";
+            action: SIGNAL_EMIT "elm,action,check,toggle" "";
+            after: "bg_normal";
+         }
+         program { name: "bg_normal";
+            script {
+               set_state(PART:"bg", "default", 0.0);
+               set_state(PART:"bg2", "default", 0.0);
+            }
+         }
+         program { name: "mouseout";
+            signal: "mouse,out";
+            source: "events";
+            after: "bg_check_normal";
+         }
+         program { name: "bg_check_normal";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "pressed"))
+                 set_state(PART:"check", "visible", 0.0);
+               set_state(PART:"bg", "default", 0.0);
+               set_state(PART:"bg2", "default", 0.0);
+            }
+         }
+         program { name: "pressed";
+            signal: "mouse,down,1";
+            source: "events";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"check", "pressed", 0.0);
+               set_state(PART:"bg", "pressed", 0.0);
+               set_state(PART:"bg2", "pressed", 0.0);
+            }
+         }
+         program { name: "check_on";
+            signal: "elm,state,check,on";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "check";
+            target: "selected_bg";
+         }
+         program { name: "check_off";
+            signal: "elm,state,check,off";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "check";
+            target: "selected_bg";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.text";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disabler";
+            target: "bg";
+            target: "bg2";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled", 0.0);
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.swallow.content", "disabled", 0.0);
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"check", "disabled_visible", 0.0);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disabler";
+            target: "bg";
+            target: "bg2";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "default", 0.0);
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.swallow.content", "visible", 0.0);
+               else
+                 set_state(PART:"elm.swallow.content", "default", 0.0);
+               get_state(PART:"check", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"check", "visible", 0.0);
+            }
+         }
+      }
+   }
+
+#undef CHECK_STATE_DEFAULT
+#undef CHECK_STATE_VISIBLE
+#undef CHECK_STATE_DISABLED_VISIBLE
+#undef CHECK_STATE_DISABLED
diff --git a/res/edc/vp-controlbar.edc b/res/edc/vp-controlbar.edc
new file mode 100755 (executable)
index 0000000..a89a419
--- /dev/null
@@ -0,0 +1,760 @@
+/*
+* Refer to nbeat-theme\themes\groups\controlbar.edc
+*/
+
+#define CONTROLBAR_LARGE_H             78              //Macros defined in file: nbeat.edc.
+#define CONTROLBAR_LARGE_LANDSCAPE_H           62
+#define CONTROLBAR_SMALL_H             65
+#define CONTROLBAR_SMALL_LANDSCAPE_H           50
+#define CONTROLBAR_W                   78
+
+#define CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC 22 22 22 255
+#define CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC 63 63 63 255
+
+
+       group{
+               name: "elm/controlbar/base/video/default";
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "bg_image";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "large" 0.0;
+                                       min: 0 CONTROLBAR_LARGE_H;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {relative: 0.0 1.0; offset: 0 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "small" 0.0;
+                                       min: 0 CONTROLBAR_SMALL_H;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {relative: 0.0 1.0; offset: 0 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "left" 0.0;
+                                       min: CONTROLBAR_W 0;
+                                       fixed: 1 0;
+                                       align: 0.0 0.5;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 0.0 1.0; offset: 0 -1;}
+                               }
+                               description{
+                                       state: "right" 0.0;
+                                       min: CONTROLBAR_W 0;
+                                       fixed: 1 0;
+                                       align: 1.0 0.5;
+                                       rel1 {relative: 1.0 0.0; offset: -1 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                       }
+                       part{
+                               name: "elm.swallow.items";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "bg_image";}
+                                       rel2 {relative: 1.0 1.0; to: "bg_image";}
+                               }
+                       }
+               }
+               programs{
+                       program{
+                               name: "default";
+                               signal: "elm,state,default";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "large";
+                               signal: "elm,state,large";
+                               source: "elm";
+                               action: STATE_SET "large" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "small";
+                               signal: "elm,state,small";
+                               source: "elm";
+                               action: STATE_SET "small" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "left";
+                               signal: "elm,state,left";
+                               source: "elm";
+                               action: STATE_SET "left" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "right";
+                               signal: "elm,state,right";
+                               source: "elm";
+                               action: STATE_SET "right" 0.0;
+                               target: "bg_image";
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/background/video/default";
+               images{
+                       image: "T01_toolbar_bg.png" COMP;
+               }
+               parts{
+                       part{
+                               name: "bg_image";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       image.normal: "T01_toolbar_bg.png";
+                                       color: 255 255 255 255;
+                               }
+                       }
+                       programs {
+                               program {
+                                       name: "tabbar_bg";
+                                       signal: "elm,state,tabbar";
+                                       source: "elm";
+                                       action: STATE_SET "tabbar" 0.0;
+                                       target: "bg_image";
+                               }
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/view/video/default";
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               mouse_events:1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "elm.swallow.view";
+                               type: SWALLOW;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "bg_rect";}
+                                       rel2 {relative: 1.0 1.0; to: "bg_rect";}
+                               }
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/item_bg/video/default";
+               images{
+                       image: "T01_toolbar_press.png" COMP;
+               }
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       min: 0 CONTROLBAR_SMALL_H;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "bg_img";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "toolbar_pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {relative: 0.0 0.07; offset: 3 0;}
+                                       rel2 {relative: 1.0 0.93; offset: -3 0;}
+                                       image.normal: "T01_toolbar_press.png";
+                                       image.border: 2 2 2 2;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "left_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 5;}
+                                       rel2 {relative: 0.0 1.0; offset: 1 -3;}
+                                       color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "right_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 1.0 0.0; offset: -1 5;}
+                                       rel2 {relative: 1.0 1.0; offset: 0 -3;}
+                                       color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "top_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 5 0;}
+                                       rel2 {relative: 1.0 0.0; offset: -5 1;}
+                                       color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "bottom_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 1.0; offset: 5 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -5 0;}
+                                       color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "item";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {to: "bg_rect";}
+                                       rel2 {to: "bg_rect";}
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "toolbar_pressed";
+                               signal: "elm,state,toolbar_pressed";
+                               source: "elm";
+                               action: STATE_SET "toolbar_pressed" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "unselected";
+                               signal: "elm,state,unselected";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "unpressed";
+                               signal: "elm,state,unpressed";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "left_line_show";
+                               signal: "elm,state,left_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "left_line";
+                       }
+                       program {
+                               name: "left_line_hide";
+                               signal: "elm,state,left_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "left_line";
+                       }
+                       program {
+                               name: "right_line_show";
+                               signal: "elm,state,right_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "right_line";
+                       }
+                       program {
+                               name: "right_line_hide";
+                               signal: "elm,state,right_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "right_line";
+                       }
+                       program {
+                               name: "top_line_show";
+                               signal: "elm,state,top_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "top_line";
+                       }
+                       program {
+                               name: "top_line_hide";
+                               signal: "elm,state,top_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "top_line";
+                       }
+                       program {
+                               name: "bottom_line_show";
+                               signal: "elm,state,bottom_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "bottom_line";
+                       }
+                       program {
+                               name: "bottom_line_hide";
+                               signal: "elm,state,bottom_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bottom_line";
+                       }
+               }
+       }
+
+
+       group{
+               name: "elm/controlbar/base/video/landscape/default";
+
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "bg_image";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "large" 0.0;
+                                       min: 0 CONTROLBAR_LARGE_LANDSCAPE_H;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {relative: 0.0 1.0; offset: 0 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "small" 0.0;
+                                       min: 0 CONTROLBAR_SMALL_LANDSCAPE_H;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {relative: 0.0 1.0; offset: 0 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "left" 0.0;
+                                       min: CONTROLBAR_W 0;
+                                       fixed: 1 0;
+                                       align: 0.0 0.5;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 0.0 1.0; offset: 0 -1;}
+                               }
+                               description{
+                                       state: "right" 0.0;
+                                       min: CONTROLBAR_W 0;
+                                       fixed: 1 0;
+                                       align: 1.0 0.5;
+                                       rel1 {relative: 1.0 0.0; offset: -1 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                       }
+                       part{
+                               name: "elm.swallow.items";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "bg_image";}
+                                       rel2 {relative: 1.0 1.0; to: "bg_image";}
+                               }
+                       }
+               }
+               programs{
+                       program{
+                               name: "default";
+                               signal: "elm,state,default";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "large";
+                               signal: "elm,state,large";
+                               source: "elm";
+                               action: STATE_SET "large" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "small";
+                               signal: "elm,state,small";
+                               source: "elm";
+                               action: STATE_SET "small" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "left";
+                               signal: "elm,state,left";
+                               source: "elm";
+                               action: STATE_SET "left" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "right";
+                               signal: "elm,state,right";
+                               source: "elm";
+                               action: STATE_SET "right" 0.0;
+                               target: "bg_image";
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/background/video/landscape/default";
+
+               images{
+                       image: "T01_toolbar_bg.png" COMP;
+               }
+
+               parts{
+                       part{
+                               name: "bg_image";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       image.normal: "T01_toolbar_bg.png";
+                                       color: 255 255 255 255;
+                               }
+                       }
+                       programs {
+                               program {
+                                       name: "tabbar_bg";
+                                       signal: "elm,state,tabbar";
+                                       source: "elm";
+                                       action: STATE_SET "tabbar" 0.0;
+                                       target: "bg_image";
+                               }
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/view/video/landscape/default";
+
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               mouse_events:1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "elm.swallow.view";
+                               type: SWALLOW;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "bg_rect";}
+                                       rel2 {relative: 1.0 1.0; to: "bg_rect";}
+                               }
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/item_bg/video/landscape/default";
+               images{
+                       image: "T01_toolbar_press.png" COMP;
+               }
+
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       min: 0 CONTROLBAR_SMALL_LANDSCAPE_H;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "bg_img";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "toolbar_pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {relative: 0.0 0.07; offset: 3 0;}
+                                       rel2 {relative: 1.0 0.93; offset: -3 0;}
+                                       image.normal: "T01_toolbar_press.png";
+                                       image.border: 2 2 2 2;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "left_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 5;}
+                                       rel2 {relative: 0.0 1.0; offset: 1 -3;}
+                                       color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "right_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 1.0 0.0; offset: -1 5;}
+                                       rel2 {relative: 1.0 1.0; offset: 0 -3;}
+                                       color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "top_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 5 0;}
+                                       rel2 {relative: 1.0 0.0; offset: -5 1;}
+                                       color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "bottom_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 1.0; offset: 5 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -5 0;}
+                                       color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "item";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {to: "bg_rect";}
+                                       rel2 {to: "bg_rect";}
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "toolbar_pressed";
+                               signal: "elm,state,toolbar_pressed";
+                               source: "elm";
+                               action: STATE_SET "toolbar_pressed" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "unselected";
+                               signal: "elm,state,unselected";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "unpressed";
+                               signal: "elm,state,unpressed";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "left_line_show";
+                               signal: "elm,state,left_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "left_line";
+                       }
+                       program {
+                               name: "left_line_hide";
+                               signal: "elm,state,left_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "left_line";
+                       }
+                       program {
+                               name: "right_line_show";
+                               signal: "elm,state,right_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "right_line";
+                       }
+                       program {
+                               name: "right_line_hide";
+                               signal: "elm,state,right_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "right_line";
+                       }
+                       program {
+                               name: "top_line_show";
+                               signal: "elm,state,top_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "top_line";
+                       }
+                       program {
+                               name: "top_line_hide";
+                               signal: "elm,state,top_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "top_line";
+                       }
+                       program {
+                               name: "bottom_line_show";
+                               signal: "elm,state,bottom_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "bottom_line";
+                       }
+                       program {
+                               name: "bottom_line_hide";
+                               signal: "elm,state,bottom_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bottom_line";
+                       }
+               }
+       }
+
diff --git a/res/edc/vp-ctxpopup.edc b/res/edc/vp-ctxpopup.edc
new file mode 100755 (executable)
index 0000000..24cdd9b
--- /dev/null
@@ -0,0 +1,1764 @@
+///////////////////////////////////////////////////////////////////////////////////////
+//
+// ctxpopup
+//
+///////////////////////////////////////////////////////////////////////////////////////
+
+#define CTXPOPUP_SHADOW_PADDING 10
+#define CTXPOPUP_FRAME_CORNER_SIZE 4 4
+#define CTXPOPUP_FONT_COLOR 0 0 0 255
+#define CTXPOPUP_CLICKED_FONT_COLOR 255 255 255 255
+#define CTXPOPUP_ITEM_DISABLED_COLOR 0 0 0 100
+#define CTXPOPUP_LIST_PADDING 10
+#define CTXPOPUP_LIST_SHADOW_PADDING 3
+
+#define CTXPOPUP_BUBBLE_BG_IMAGE "white/common/00_popup_bubble_bg.png"
+#define CTXPOPUP_BG_IMAGE "white/common/T01-2_popup_bg.png"
+#define CTXPOPUP_BUBBLE_BG_IMAGE_BORDER 13 13 13 13
+#define CTXPOPUP_BG_IMAGE_BORDER 3 3 3 3
+#define CTXPOPUP_BG_IMAGEEDITOR_BORDER 10 10 10 10
+#define CTXPOPUP_BG_COLOR_INC 22 27 30 165
+#define CTXPOPUP_BG_PRESS_COLOR_INC 42 137 194 255
+#define CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC 249 249 249 255
+#define CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC 249 249 249 255
+#define CTXPOPUP_SEPARATOR_COLOR_INC 200 200 200 255
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC 200 200 200 255
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC 1 0
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC 1 999999
+#define CTXPOPUP_VERTICAL_SEPARATOR_MIN_SIZE_INC 0 1
+#define CTXPOPUP_VERTICAL_SEPARATOR_MAX_SIZE_INC 999999 1
+#define CTXPOPUP_TP_BG_COLOR_INC 0 140 210 255
+#define CTXPOPUP_ITEM_TEXT_SIZE_INC 33
+#define CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC 33
+#define CTXPOPUP_ITEM_HEIGHT_INC 112
+#define CTXPOPUP_ITEM_ICON_INC 160 112
+#define CTXPOPUP_ICON_WIDTH_INC 64
+#define CTXPOPUP_ICON_HEIGHT_INC 64
+#define CTXPOPUP_ARROW_SIZE_INC 40 24
+#define CTXPOPUP_CONTENT_WIDTH_MAX_INC 630
+#define CTXPOPUP_ITEM_PADDING_INC 35
+#define CTXPOPUP_IE_ARROW_SIZE_INC 52
+#define CTXPOPUP_IE_FONT_SIZE_INC 40
+#define CTXPOPUP_IE_ITEM_PADDING_INC 22
+#define CTXPOPUP_IE_ITEM_HEIGHT_INC 75
+#define CTXPOPUP_IE_CONTENT_WIDTH_MAX_INC 720
+#define CTXPOPUP_IE_ICON_WIDTH_INC 60
+#define CTXPOPUP_IE_ICON_HEIGHT_INC 60
+#define CTXPOPUP_TP_ARROW_SIZE_INC 30
+#define CTXPOPUP_TP_HEIGHT_INC 106
+
+///////////////////////////////////////////////////////////////////////////////
+       group {
+               name: "elm/scroller/base/video/ctxpopup";
+               script {
+                       public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer;
+                       public timer0(val) {
+                               new v;
+                       v = get_int(sbvis_v);
+                       if (v) {
+                               v = get_int(sbalways_v);
+                               if(!v) {
+                                       emit("do-hide-vbar", "");
+                                       set_int(sbvis_v, 0);
+                               }
+                       }
+                       v = get_int(sbvis_h);
+                       if (v) {
+                               v = get_int(sbalways_h);
+                               if(!v) {
+                                       emit("do-hide-hbar", "");
+                                       set_int(sbvis_h, 0);
+                               }
+                       }
+                       set_int(sbvis_timer, 0);
+                       return 0;
+                       }
+               }
+               images {
+                       image: "white/common/01_scroller.png" COMP;
+               }
+               parts {
+                       part {
+                               name: "clipper";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.content";
+                               clip_to: "clipper";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       part {
+                               name: "sb_vbar_clip_master";
+                               type: RECT;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                               description {
+                                       state: "hidden" 0.0;
+                                       visible: 0;
+                                       color: 255 255 255 0;
+                               }
+                       }
+                       part {
+                               name: "sb_vbar_clip";
+                               clip_to:"sb_vbar_clip_master";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel2{ to:"clipper"; relative: 1.0 1.0;}
+                               }
+                               description {
+                                       state: "hidden" 0.0;
+                                       visible: 0;
+                                       color: 255 255 255 0;
+                               }
+                       }
+                       part {
+                               name: "sb_vbar";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       visible: 0;
+                                       align: 1.0 0.0;
+                                       rel1{ to:"clipper"; relative: 1.0 0.0; }
+                                       rel2{ to:"clipper"; relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "elm.dragable.vbar";
+                               clip_to: "sb_vbar_clip";
+                               mouse_events: 0;
+                               scale: 1;
+                               dragable {
+                                       x: 0 0 0;
+                                       y: 1 1 0;
+                                       confine: "sb_vbar";
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 14 32;
+                                       rel1 {
+                                               relative: 0.5  0.5;
+                                               to: "sb_vbar";
+                                       }
+                                       rel2 {
+                                               relative: 0.5  0.5;
+                                               to: "sb_vbar";
+                                       }
+                                       image {
+                                               normal: "white/common/01_scroller.png";
+                                               border: 0 0 6 6;
+                                               border_scale: 1;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "sb_hbar_clip_master";
+                               type: RECT;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                               description {
+                                       state: "hidden" 0.0;
+                                       visible: 0;
+                                       color: 255 255 255 0;
+                               }
+                       }
+                       part {
+                               name: "sb_hbar_clip";
+                               clip_to: "sb_hbar_clip_master";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel2{ to:"clipper"; relative: 1.0 1.0;}
+                               }
+                               description {
+                                       state: "hidden" 0.0;
+                                       visible: 0;
+                                       color: 255 255 255 0;
+                               }
+                       }
+                       part {
+                               name: "sb_hbar";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       visible: 0;
+                                       align: 0.0 1.0;
+                                       rel1 {to:"clipper"; relative: 0.0 1.0;}
+                                       rel2 {to:"clipper"; relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "elm.dragable.hbar";
+                               clip_to: "sb_hbar_clip";
+                               mouse_events: 0;
+                               scale: 1;
+                               dragable {
+                                       x: 1 1 0;
+                                       y: 0 0 0;
+                                       confine: "sb_hbar";
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 32 12;
+                                       rel1 {relative: 0.5  0.5; to: "sb_hbar";}
+                                       rel2 {relative: 0.5  0.5; to: "sb_hbar";}
+                                       image {
+                                               normal: "white/common/01_scroller.png";
+                                               border: 6 6 0 0;
+                                               border_scale: 1;
+                                       }
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "load";
+                               signal: "load";
+                               source: "";
+                               script {
+                                       set_state(PART:"sb_vbar_clip", "hidden", 0.0);
+                                       set_state(PART:"sb_hbar_clip", "hidden", 0.0);
+                                       set_int(sbvis_v, 0);
+                                       set_int(sbvis_h, 0);
+                                       set_int(sbalways_v, 0);
+                                       set_int(sbalways_h, 0);
+                                       set_int(sbvis_timer, 0);
+                               }
+                       }
+                       program {
+                               name: "vbar_show";
+                               signal: "elm,action,show,vbar";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "sb_vbar_clip_master";
+                       }
+                       program {
+                               name: "vbar_hide";
+                               signal: "elm,action,hide,vbar";
+                               source: "elm";
+                               action:  STATE_SET "hidden" 0.0;
+                               target: "sb_vbar_clip_master";
+                       }
+                       program {
+                               name: "vbar_show_always";
+                               signal: "elm,action,show_always,vbar";
+                               source: "elm";
+                               script {
+                                       new v;
+                                       v = get_int(sbvis_v);
+                                       v |= get_int(sbalways_v);
+                                       if (!v) {
+                                               set_int(sbalways_v, 1);
+                                               emit("do-show-vbar", "");
+                                               set_int(sbvis_v, 1);
+                                       }
+                               }
+                       }
+                       program {
+                               name: "vbar_show_notalways";
+                               signal: "elm,action,show_notalways,vbar";
+                               source: "elm";
+                               script {
+                                       new v;
+                                       v = get_int(sbalways_v);
+                                       if (v) {
+                                               set_int(sbalways_v, 0);
+                                               v = get_int(sbvis_v);
+                                               if (!v) {
+                                                       emit("do-hide-vbar", "");
+                                               set_int(sbvis_v, 0);
+                                               }
+                                       }
+                               }
+                       }
+                       program {
+                               name: "sb_vbar_show";
+                               signal: "do-show-vbar";
+                               source: "";
+                               action:  STATE_SET "default" 0.0;
+                               transition: LINEAR 1.0;
+                               target: "sb_vbar_clip";
+                       }
+                       program {
+                               name: "sb_vbar_hide";
+                               signal: "do-hide-vbar";
+                               source: "";
+                               action:  STATE_SET "hidden" 0.0;
+                               transition: LINEAR 1.0;
+                               target: "sb_vbar_clip";
+                       }
+                       program {
+                               name: "hbar_show";
+                               signal: "elm,action,show,hbar";
+                               source: "elm";
+                               action:  STATE_SET "default" 0.0;
+                               target: "sb_hbar_clip_master";
+                       }
+                       program {
+                               name: "hbar_hide";
+                               signal: "elm,action,hide,hbar";
+                               source: "elm";
+                               action:  STATE_SET "hidden" 0.0;
+                               target: "sb_hbar_clip_master";
+                       }
+                       program {
+                               name: "hbar_show_always";
+                               signal: "elm,action,show_always,hbar";
+                               source: "elm";
+                               script {
+                                       new v;
+                                       v = get_int(sbvis_h);
+                                       v |= get_int(sbalways_h);
+                                       if (!v) {
+                                               set_int(sbalways_h, 1);
+                                               emit("do-show-hbar", "");
+                                               set_int(sbvis_h, 1);
+                                       }
+                               }
+                       }
+                       program {
+                               name: "hbar_show_notalways";
+                               signal: "elm,action,show_notalways,hbar";
+                               source: "elm";
+                               script {
+                                       new v;
+                                       v = get_int(sbalways_h);
+                                       if (v) {
+                                               set_int(sbalways_h, 0);
+                                               v = get_int(sbvis_h);
+                                               if (!v) {
+                                                       emit("do-hide-hbar", "");
+                                                       set_int(sbvis_h, 0);
+                                               }
+                                       }
+                               }
+                       }
+                       program {
+                               name: "sb_hbar_show";
+                               signal: "do-show-hbar";
+                               source: "";
+                               action:  STATE_SET "default" 0.0;
+                               transition: LINEAR 1.0;
+                               target: "sb_hbar_clip";
+                       }
+                       program {
+                               name: "sb_hbar_hide";
+                               signal: "do-hide-hbar";
+                               source: "";
+                               action:  STATE_SET "hidden" 0.0;
+                               transition: LINEAR 1.0;
+                               target: "sb_hbar_clip";
+                       }
+                       program {
+                               name: "scroll";
+                               signal: "elm,action,scroll";
+                               source: "elm";
+                               action:  STATE_SET "default" 0.0;
+                               script {
+                                       new v;
+                                       v = get_int(sbvis_v);
+                                       v |= get_int(sbalways_v);
+                                       if (!v) {
+                                               emit("do-show-vbar", "");
+                                               set_int(sbvis_v, 1);
+                                       }
+                                       v = get_int(sbvis_h);
+                                       v |= get_int(sbalways_h);
+                                       if(!v) {
+                                               emit("do-show-hbar", "");
+                                               set_int(sbvis_h, 1);
+                                       }
+                                       v = get_int(sbvis_timer);
+                                       if (v > 0) cancel_timer(v);
+                                       v = timer(2.0, "timer0", 0);
+                                       set_int(sbvis_timer, v);
+                               }
+                       }
+               }
+       }
+///////////////////////////////////////////////////////////////////////////////
+       group {
+               name: "elm/ctxpopup/bg/video/pass_event";
+               alias: "elm/ctxpopup/bg/video/extended/entry/pass_event";
+               alias: "elm/ctxpopup/bg/video/extended/entry";
+               alias: "elm/ctxpopup/bg/video/timepicker";
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       visible: 0;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "show";
+                               signal: "elm,state,show";
+                               source: "elm";
+                               action: STATE_SET "visible" 0.0;
+                               target: "bg";
+                       }
+                       program {
+                               name: "hide";
+                               signal: "elm,state,hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg";
+                       }
+               }
+       }
+///////////////////////////////////////////////////////////////////////////////
+       group {
+               name: "elm/ctxpopup/bg/video/default";
+               parts {
+                       part {
+                               name: "bg";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       color: 0 0 0 0;
+                                       visible: 1;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name:   "clicked_event";
+                               signal: "mouse,clicked,1";
+                               source: "bg";
+                               action: SIGNAL_EMIT "elm,action,click" "";
+                       }
+                       program {
+                               name: "show";
+                               signal: "elm,state,show";
+                               source: "elm";
+                               action: STATE_SET "visible" 0.0;
+                               target: "bg";
+                       }
+                       program {
+                               name: "hide";
+                               signal: "elm,state,hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg";
+                       }
+               }
+       }
+
+       group {
+               name: "elm/ctxpopup/base/video/default";
+               images {
+                       image: CTXPOPUP_BUBBLE_BG_IMAGE COMP;
+                       image: CTXPOPUP_BG_IMAGE COMP;
+               }
+               parts {
+                       part {
+                               name:"frame_shadow_left_top_padding";
+                               type:RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       min: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING;
+                                       max: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING;
+                                       rel2 { relative: 0 0; }
+                                       align: 1 1;
+                                       fixed: 1 1;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name:"frame_shadow_right_bottom_padding";
+                               type:RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       min: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING;
+                                       max: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING;
+                                       rel1{relative: 1 1;}
+                                       align: 0 0;
+                                       fixed: 1 1;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "frame_shadow";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               clip_to: "ctxpopup_clip";
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {
+                                       relative: 0.2 0.2;
+                                               to:"frame_shadow_left_top_padding";
+                                       }
+                                       rel2 {
+                                               relative: 0.8 0.8;
+                                               to:"frame_shadow_right_bottom_padding";
+                                       }
+                                       image {
+                                               normal: CTXPOPUP_BUBBLE_BG_IMAGE;
+                                               border: CTXPOPUP_BUBBLE_BG_IMAGE_BORDER;
+                                               border_scale: 1;
+                                       }
+                               }
+                       }
+
+                       part { name: "arrow_area_left";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "ctxpopup_clip";
+                               description { state: "default" 0.0;
+                                       visible: 0;
+                                       min: 40 0;
+                                       fixed: 1 1;
+                                       align: 1 0.5;
+                                       rel1 {
+                                               relative: 0 1;
+                                               to_y: "ctxpopup_frame_left_top";
+                                       }
+                                       rel2 {
+                                               relative:0 0;
+                                               to:"ctxpopup_frame_left_bottom";
+                                       }
+                               }
+                       }
+                       part { name: "arrow_area_right";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "ctxpopup_clip";
+                               description { state: "default" 0.0;
+                                       visible: 0;
+                                       min: 40 0;
+                                       fixed: 1 1;
+                                       align: 0 0.5;
+                                       rel1 {
+                                               relative: 1 1;
+                                               to:"ctxpopup_frame_right_top";
+                                       }
+                                       rel2 {
+                                               relative: 1 0;
+                                               to_y: "ctxpopup_frame_right_bottom";
+                                       }
+                               }
+                       }
+                       part { name: "arrow_area_up";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "ctxpopup_clip";
+                               description { state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 40;
+                                       fixed: 1 1;
+                                       align: 0.5 1;
+                                       rel1 {
+                                               relative: 1 0;
+                                               to_x: "ctxpopup_frame_left_top";
+                                       }
+                                       rel2 {
+                                               relative: 0 0;
+                                               to:"ctxpopup_frame_right_top";
+                                       }
+                               }
+                       }
+                       part { name: "arrow_area_down";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "ctxpopup_clip";
+                               description { state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 40;
+                                       fixed: 1 1;
+                                       align: 0.5 0;
+                                       rel1 {
+                                               relative: 1 1;
+                                               to:"ctxpopup_frame_left_bottom";
+                                       }
+                                       rel2 {
+                                               relative: 0 1;
+                                               to_x: "ctxpopup_frame_right_bottom";
+                                       }
+                               }
+                       }
+                       part { name: "elm.swallow.arrow_up";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "ctxpopup_clip";
+                               dragable {
+                                       x: 1 1 0;
+                                       y: 1 1 0;
+                                       confine: "arrow_area_up";
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "elm.swallow.arrow_down";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "ctxpopup_clip";
+                               dragable {
+                                       x: 1 1 0;
+                                       y: 1 1 0;
+                                       confine: "arrow_area_down";
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "elm.swallow.arrow_left";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "ctxpopup_clip";
+                               dragable {
+                                       x: 1 1 0;
+                                       y: 1 1 0;
+                                       confine: "arrow_area_left";
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "elm.swallow.arrow_right";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "ctxpopup_clip";
+                               dragable {
+                                       x: 1 1 0;
+                                       y: 1 1 0;
+                                       confine: "arrow_area_right";
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "ctxpopup_frame_left_top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       visible: 0;
+                                       align: 0 0;
+                                       min: CTXPOPUP_FRAME_CORNER_SIZE;
+                                       max: CTXPOPUP_FRAME_CORNER_SIZE;
+                               }
+                       }
+
+                       part {
+                               name: "ctxpopup_frame_right_top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       visible: 0;
+                                       align: 1 0;
+                                       min: CTXPOPUP_FRAME_CORNER_SIZE;
+                                       max: CTXPOPUP_FRAME_CORNER_SIZE;
+                               }
+                       }
+
+                       part {
+                               name: "ctxpopup_frame_left_bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       visible: 0;
+                                       align: 0 1;
+                                       min: CTXPOPUP_FRAME_CORNER_SIZE;
+                                       max: CTXPOPUP_FRAME_CORNER_SIZE;
+                               }
+                       }
+
+                       part {
+                               name: "ctxpopup_frame_right_bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       visible: 0;
+                                       align: 1 1;
+                                       min: CTXPOPUP_FRAME_CORNER_SIZE;
+                                       max: CTXPOPUP_FRAME_CORNER_SIZE;
+                               }
+                       }
+                       part {
+                               name:"list_shadow_right_bottom_padding";
+                               type:RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       min: CTXPOPUP_LIST_SHADOW_PADDING CTXPOPUP_LIST_SHADOW_PADDING;
+                                       max: CTXPOPUP_LIST_SHADOW_PADDING CTXPOPUP_LIST_SHADOW_PADDING;
+                                       align: 0 0;
+                                       fixed: 1 1;
+                                       visible: 0;
+                                       rel1 {to:"elm.swallow.content";  relative: 1 1;}
+                               }
+                       }
+                       part {
+                               name:"content_left_top_padding";
+                               type:RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING;
+                                       max: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING;
+                                       align: 0 0;
+                                       fixed: 1 1;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name:"content_right_bottom_padding";
+                               type:RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       min: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING;
+                                       max: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING;
+                                       rel1 { relative: 1 1;}
+                                       rel2 { relative: 1 1;}
+                                       align: 1 1;
+                                       fixed: 1 1;
+                                       visible: 0;
+                               }
+                       }
+
+
+                       part {
+                               name: "frame_bg";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               clip_to: "ctxpopup_clip";
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 {to:"ctxpopup_frame_left_top";}
+                                       rel2 {to:"ctxpopup_frame_right_bottom";}
+                                       image {
+                                               normal: CTXPOPUP_BG_IMAGE;
+                                               border: CTXPOPUP_BG_IMAGE_BORDER;
+                                               border_scale: 1;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.content";
+                               type: SWALLOW;
+                               clip_to: "ctxpopup_clip";
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0 0;
+                                       rel1 {to:"ctxpopup_frame_left_top";  relative: 0.5 0.5;}
+                                       rel2 {to:"ctxpopup_frame_right_bottom";  relative: 0.5 0.5;}
+                               }
+                       }
+                       part { name: "ctxpopup_clip";
+                               type: RECT;
+                               description { state: "default" 0.0;
+                               color: 255 255 255 0;
+                               rel1 { to:"ctxpopup_frame_left_top"; relative: 0.5 0.5; }
+                               rel2 { to:"ctxpopup_frame_right_bottom"; relative: 0.5 0.5; }
+                               }
+                               description { state: "show_up" 0.0;
+                                       color: 255 255 255 0;
+                                       rel1 { to:"arrow_area_down"; relative: 0 1; }
+                                       rel2 { to:"arrow_area_down"; relative: 1 1; }
+                               }
+                               description { state: "show_left" 0.0;
+                                       color: 255 255 255 0;
+                                       rel1 { to:"arrow_area_right"; relative: 1 0; }
+                                       rel2 { to:"arrow_area_right"; relative: 1 1; }
+                               }
+                               description { state: "show_right" 0.0;
+                                       color: 255 255 255 0;
+                                       rel1 { to:"arrow_area_left"; relative: 0 0; }
+                                       rel2 { to:"arrow_area_left"; relative: 0 1; }
+                               }
+                               description { state: "show_down" 0.0;
+                                       color: 255 255 255 0;
+                                       rel1 { to:"arrow_area_up"; relative: 0 0; }
+                                       rel2 { to:"arrow_area_up"; relative: 1 0; }
+                               }
+                               description { state: "hide_up" 0.0;
+                                       color: 255 255 255 255;
+                                       rel1 { to:"arrow_area_down"; relative: 0 1; }
+                                       rel2 { to:"arrow_area_down"; relative: 1 1; }
+                               }
+                               description { state: "hide_left" 0.0;
+                                       color: 255 255 255 255;
+                                       rel1 { to:"arrow_area_right"; relative: 1 0; }
+                                       rel2 { to:"arrow_area_right"; relative: 1 1; }
+                               }
+                               description { state: "hide_right" 0.0;
+                                       color: 255 255 255 255;
+                                       rel1 { to:"arrow_area_left"; relative: 0 0; }
+                                       rel2 { to:"arrow_area_left"; relative: 0 1; }
+                               }
+                               description { state: "hide_down" 0.0;
+                                       color: 255 255 255 255;
+                                       rel1 { to:"arrow_area_up"; relative: 0 0; }
+                                       rel2 { to:"arrow_area_up"; relative: 1 0; }
+                               }
+                               description { state: "visible" 0.0;
+                                       color: 255 255 255 255;
+                                       rel1 { to_x:"arrow_area_left"; to_y:"arrow_area_up"; }
+                                       rel2 { to_x:"arrow_area_right"; to_y:"arrow_area_down"; }
+                               }
+                       }
+               }
+               programs {
+                       program { name: "show";
+                               signal: "elm,state,show";
+                               source: "elm";
+                               action: STATE_SET "visible" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                       }
+                       program { name: "show_up";
+                               signal: "elm,state,show,up";
+                               source: "elm";
+                               action: STATE_SET "show_up" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                       }
+                       program { name: "show_left";
+                               signal: "elm,state,show,left";
+                               source: "elm";
+                               action: STATE_SET "show_left" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                       }
+                       program { name: "show_right";
+                               signal: "elm,state,show,right";
+                               source: "elm";
+                               action: STATE_SET "show_right" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                       }
+                       program { name: "show_down";
+                               signal: "elm,state,show,down";
+                               source: "elm";
+                               action: STATE_SET "show_down" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                       }
+                       program { name: "hide_up";
+                               signal: "elm,state,hide,up";
+                               source: "elm";
+                               action: STATE_SET "hide_up" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                               after: "hide_finished";
+                       }
+                       program { name: "hide_left";
+                               signal: "elm,state,hide,left";
+                               source: "elm";
+                               action: STATE_SET "hide_left" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                               after: "hide_finished";
+                       }
+                       program { name: "hide_right";
+                               signal: "elm,state,hide,right";
+                               source: "elm";
+                               action: STATE_SET "hide_right" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                               after: "hide_finished";
+                       }
+                       program { name: "hide_down";
+                               signal: "elm,state,hide,down";
+                               source: "elm";
+                               action: STATE_SET "hide_down" 0.0;
+                               transition: LINEAR 0.25;
+                               target: "ctxpopup_clip";
+                               after: "hide_finished";
+                       }
+                       program { name: "hide_finished";
+                               action: SIGNAL_EMIT "elm,action,hide,finished" "";
+                       }
+               }
+       }
+
+///////////////////////////////////////////////////////////////////////////////
+       group { name: "elm/ctxpopup/arrow/video/default";
+               images {
+                       image: "white/common/00_popup_tail_left.png" COMP;
+                       image: "white/common/00_popup_tail_right.png" COMP;
+                       image: "white/common/00_popup_tail_top.png" COMP;
+                       image: "white/common/00_popup_tail_bottom.png" COMP;
+                       image: "white/common/T01-2_popup_arrow.png" COMP;
+               }
+               parts {
+                       part {
+                               name: "ctxpopup_arrow";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: CTXPOPUP_ARROW_SIZE_INC;
+                                       max: CTXPOPUP_ARROW_SIZE_INC;
+                                       fixed: 1 1;
+                                       visible: 0;
+                                       align: 0.5 0.5;
+                               }
+                               description {
+                                       state: "left" 0.0;
+                                       min: CTXPOPUP_ARROW_SIZE_INC;
+                                       max: CTXPOPUP_ARROW_SIZE_INC;
+                                       fixed: 1 1;
+                                       align: 1.0 0.5;
+                                       image {
+                                               normal: "white/common/00_popup_tail_left.png";
+                                       }
+                               }
+                               description {
+                                       state: "right" 0.0;
+                                       min: CTXPOPUP_ARROW_SIZE_INC;
+                                       max: CTXPOPUP_ARROW_SIZE_INC;
+                                       fixed: 1 1;
+                                       align: 0.0 0.5;
+                                       image {
+                                               normal: "white/common/00_popup_tail_right.png";
+                                       }
+                               }
+                               description {
+                                       state: "top" 0.0;
+                                       min: CTXPOPUP_ARROW_SIZE_INC;
+                                       max: CTXPOPUP_ARROW_SIZE_INC;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                                       image {
+                                               normal: "white/common/T01-2_popup_arrow.png";
+                                       }
+                               }
+                               description {
+                                       state: "bottom" 0.0;
+                                       min: CTXPOPUP_ARROW_SIZE_INC;
+                                       max: CTXPOPUP_ARROW_SIZE_INC;
+                                       fixed: 1 1;
+                                       align: 0.5 0.0;
+                                       image {
+                                               normal: "white/common/00_popup_tail_bottom.png";
+                                       }
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "enable_left_arrow";
+                               signal: "elm,state,left";
+                               source: "elm";
+                               action: STATE_SET "left" 0.0;
+                               target: "ctxpopup_arrow";
+                       }
+                       program {
+                               name: "enable_right_arrow";
+                               signal: "elm,state,right";
+                               source: "elm";
+                               action: STATE_SET "right" 0.0;
+                               target: "ctxpopup_arrow";
+                       }
+                       program {
+                               name: "enable_top_arrow";
+                               signal: "elm,state,top";
+                               source: "elm";
+                               action: STATE_SET "top" 0.0;
+                               target: "ctxpopup_arrow";
+                       }
+                       program {
+                               name: "enable_bottom_arrow";
+                               signal: "elm,state,bottom";
+                               source: "elm";
+                               action: STATE_SET "bottom" 0.0;
+                               target: "ctxpopup_arrow";
+                       }
+               }
+       }
+///////////////////////////////////////////////////////////////////////////////
+       group {
+               name: "elm/ctxpopup/text_style_item/video/default";
+               parts {
+                       part {
+                               name: "event_blocker";
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "bg";
+                               mouse_events: 0;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: CTXPOPUP_BG_COLOR_INC;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "clicked" 0.0;
+                                       color: CTXPOPUP_BG_PRESS_COLOR_INC;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "separator";
+                               mouse_events: 0;
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: CTXPOPUP_SEPARATOR_COLOR_INC;
+                                       align: 0.5 0;
+                                       min: 1 0;
+                                       max: 1 999999;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "horizontal" 0.0;
+                                       color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC;
+                                       align: 0 0.5;
+                                       min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC;
+                                       max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC;
+                                       visible: 1;
+                               }
+                       description {
+                                       state: "vertical" 0.0;
+                                       color: CTXPOPUP_SEPARATOR_COLOR_INC;
+                                       align: 0.5 0;
+                                       min: 0 1;
+                                       max: 999999 1;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "left_padding";
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 30 CTXPOPUP_ITEM_HEIGHT_INC;
+                                       max: 30 CTXPOPUP_ITEM_HEIGHT_INC;
+                                       align: 0 0.5;
+                                       fixed: 1 1;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "elm.text";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 1 CTXPOPUP_ITEM_HEIGHT_INC;
+                                       max: (CTXPOPUP_CONTENT_WIDTH_MAX_INC-2*CTXPOPUP_ITEM_PADDING_INC) CTXPOPUP_ITEM_HEIGHT_INC;
+                                       fixed: 0 1;
+                                       align: 0.5 0.5;
+                                       rel1 {relative: 1.0 0.0; to: "left_padding";}
+                                       rel2 {relative: 0.0 1.0; to: "right_padding";}
+                                       color: CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC;
+                                       text {
+                                               font: "SLP:style=Regular";
+                                               size: CTXPOPUP_ITEM_TEXT_SIZE_INC;
+                                               align: 0 0.5;
+                                               min: 1 1;
+                                               text_class: "list_item";
+                                       }
+                               }
+                               description {
+                                       state: "text_horizontal" 0.0;
+                                       inherit: "default" 0.0;
+                                       text {
+                                               size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC;
+                                               align: 0.5 0.5;
+                                               min: 1 1;
+                                       }
+                               }
+                               description {
+                                       state: "compress" 0.0;
+                                       inherit: "default" 0.0;
+                                       max: -1 -1;
+                                       text {
+                                               min: 0 1;
+                                       }
+                               }
+                               description {
+                                       state: "compress.text_horizontal" 0.0;
+                                       inherit: "default" 0.0;
+                                       max: -1 -1;
+                                       text {
+                                               size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC;
+                                               align: 0.5 0.5;
+                                               min: 0 1;
+                                       }
+                               }
+                               description {
+                                       state: "clicked" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC;
+                               }
+                               description {
+                                       state: "clicked.text_horizontal" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC;
+                                       text {
+                                               size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC;
+                                               align: 0.5 0.5;
+                                               min: 0 1;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "right_padding";
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 30 CTXPOPUP_ITEM_HEIGHT_INC;
+                                       max: 30 CTXPOPUP_ITEM_HEIGHT_INC;
+                                       fixed: 1 0;
+                                       align: 1.0 0.5;
+                               }
+                       }
+                       part {
+                               name: "over1";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               ignore_flags: ON_HOLD;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "over2";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "disclip";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       visible: 1;
+                                       color: CTXPOPUP_ITEM_DISABLED_COLOR;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "item_unclick";
+                               signal: "mouse,up,1";
+                               source: "over1";
+                               action: SIGNAL_EMIT "elm,action,click" "";
+                       }
+                       program {
+                               name: "disable";
+                               signal: "elm,state,disabled";
+                               source: "elm";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "disclip";
+                       }
+                       program {
+                               name: "enable";
+                               signal: "elm,state,enabled";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "disclip";
+                       }
+                       program {
+                               name: "default";
+                               signal: "elm,state,default";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "compress";
+                               signal: "elm,state,compress";
+                               source: "elm";
+                               script {
+                                       new st[31];
+                                       new Float:vl;
+                                       get_state(PART:"separator", st, 30, vl);
+                                       if (!strcmp(st, "horizontal"))
+                                               set_state(PART:"elm.text", "compress.text_horizontal", 0.0);
+                                       else
+                                               set_state(PART:"elm.text", "compress", 0.0);
+                               }
+                       }
+                       program {
+                               name: "vertical";
+                               signal: "elm,state,vertical";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "vertical", 0.0);
+                                       set_state(PART:"elm.text", "vertical", 0.0);
+                               }
+                       }
+                       program {
+                               name: "horizontal";
+                               signal: "elm,state,horizontal";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "horizontal", 0.0);
+                                       set_state(PART:"elm.text", "text_horizontal", 0.0);
+                               }
+                       }
+                       program {
+                               name: "text_horizontal";
+                               signal: "elm,state,text_horizontal";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "default", 0.0);
+                                       set_state(PART:"elm.text", "text_horizontal", 0.0);
+                               }
+                       }
+                       program {
+                               name: "item_click2";
+                               signal: "mouse,down,1";
+                               source: "over2";
+                               script {
+                                       new st[31];
+                                       new Float:vl;
+                                       get_state(PART:"separator", st, 30, vl);
+                                       if (!strcmp(st, "horizontal"))
+                                               set_state(PART:"elm.text", "clicked.text_horizontal", 0.0);
+                                       else
+                                               set_state(PART:"elm.text", "clicked", 0.0);
+                                       set_state(PART:"bg", "clicked", 0.0);
+                               }
+                       }
+                       program {
+                               name: "item_unclick2";
+                               signal: "mouse,up,1";
+                               source: "over2";
+                               script {
+                                       new st[31];
+                                       new Float:vl;
+                                       get_state(PART:"separator", st, 30, vl);
+                                       if (!strcmp(st, "horizontal"))
+                                               set_state(PART:"elm.text", "compress.text_horizontal", 0.0);
+                                       else
+                                               set_state(PART:"elm.text", "compress", 0.0);
+                                       set_state(PART:"bg", "default", 0.0);
+                               }
+                       }
+               }
+       }
+///////////////////////////////////////////////////////////////////////////////
+       group {
+               name: "elm/ctxpopup/icon_style_item/video/default";
+               parts {
+                       part {
+                               name: "event_blocker";
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "bg";
+                               scale: 1;
+                               mouse_events: 0;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: CTXPOPUP_BG_COLOR_INC;
+                                       visible: 0;
+                                       min: CTXPOPUP_ITEM_ICON_INC;
+                                       max: CTXPOPUP_ITEM_ICON_INC;
+                               }
+                               description {
+                                       state: "clicked" 0.0;
+                                       color: CTXPOPUP_BG_PRESS_COLOR_INC;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "left_top_padding";
+                               scale: 1;
+                               description {
+                                       min: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC;
+                                       max: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC;
+                                       visible: 0;
+                                       align: 0 0;
+                                       fixed: 1 1;
+                               }
+                       }
+                       part {
+                               name: "separator";
+                               mouse_events: 0;
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: CTXPOPUP_SEPARATOR_COLOR_INC;
+                                       align: 0.5 0;
+                                       min: 1 0;
+                                       max: 1 999999;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "horizontal" 0.0;
+                                       color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC;
+                                       align: 0 0.5;
+                                       min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC;
+                                       max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC;
+                                       visible: 1;
+                               }
+                       description {
+                                       state: "vertical" 0.0;
+                                       color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC;
+                                       align: 0.5 0;
+                                       min: CTXPOPUP_VERTICAL_SEPARATOR_MIN_SIZE_INC;
+                                       max: CTXPOPUP_VERTICAL_SEPARATOR_MAX_SIZE_INC;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (CTXPOPUP_ICON_WIDTH_INC - 10) (CTXPOPUP_ICON_HEIGHT_INC - 10);
+                                       max: (CTXPOPUP_ICON_WIDTH_INC - 10) (CTXPOPUP_ICON_HEIGHT_INC - 10);
+                                       align: 0.5 0.5;
+                                       aspect: 1.0 1.0;
+                                       rel1 { to: "left_top_padding"; relative: 1 1; }
+                                       rel2 { to: "right_bottom_padding"; relative: 0 0; }
+                               }
+                       }
+                       part {
+                               name: "right_bottom_padding";
+                               scale: 1;
+                               description {
+                                       min: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC;
+                                       max: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC;
+                                       visible: 0;
+                                       align: 1 1;
+                                       fixed: 1 1;
+                               }
+                       }
+                       part {
+                               name: "over1";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               ignore_flags: ON_HOLD;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "over2";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "disclip";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       visible: 1;
+                                       color: CTXPOPUP_ITEM_DISABLED_COLOR;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "default";
+                               signal: "elm,state,default";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "vertical";
+                               signal: "elm,state,vertical";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "vertical", 0.0);
+                               }
+                       }
+                       program {
+                               name: "horizontal";
+                               signal: "elm,state,horizontal";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "horizontal", 0.0);
+                               }
+                       }
+                       program {
+                               name: "item_unclick";
+                               signal: "mouse,up,1";
+                               source: "over1";
+                               action: SIGNAL_EMIT "elm,action,click" "";
+                       }
+                       program {
+                               name: "disable";
+                               signal: "elm,state,disabled";
+                               source: "elm";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "disclip";
+                       }
+                       program {
+                               name: "enable";
+                               signal: "elm,state,enabled";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "disclip";
+                       }
+                       program {
+                               name: "item_click2";
+                               signal: "mouse,down,1";
+                               source: "over2";
+                               script {
+                                       set_state(PART:"bg", "clicked", 0.0);
+                               }
+                       }
+                       program {
+                               name: "item_unclick2";
+                               signal: "mouse,up,1";
+                               source: "over2";
+                               script {
+                                       set_state(PART:"bg", "default", 0.0);
+                               }
+                       }
+               }
+       }
+///////////////////////////////////////////////////////////////////////////////
+       group {
+               name: "elm/ctxpopup/icon_text_style_item/video/default";
+               parts {
+                       part {
+                               name: "event_blocker";
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "bg";
+                               mouse_events: 0;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: CTXPOPUP_BG_COLOR_INC;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "clicked" 0.0;
+                                       color: CTXPOPUP_BG_PRESS_COLOR_INC;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "icon_left_padding";
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC;
+                                       max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC;
+                                       align: 0 0;
+                                       fixed: 1 1;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "separator";
+                               mouse_events: 0;
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: CTXPOPUP_SEPARATOR_COLOR_INC;
+                                       align: 0.5 0;
+                                       min: 1 0;
+                                       max: 1 999999;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "horizontal" 0.0;
+                                       color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC;
+                                       align: 0 0.5;
+                                       min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC;
+                                       max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC;
+                                       visible: 1;
+                               }
+                       description {
+                                       state: "vertical" 0.0;
+                                       color: CTXPOPUP_SEPARATOR_COLOR_INC;
+                                       align: 0.5 0;
+                                       min: 0 1;
+                                       max: 999999 1;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: CTXPOPUP_ICON_WIDTH_INC CTXPOPUP_ICON_HEIGHT_INC;
+                                       max: CTXPOPUP_ICON_WIDTH_INC CTXPOPUP_ICON_HEIGHT_INC;
+                                       align: 0 0.5;
+                                       aspect: 1.0 1.0;
+                                       rel1 { to:"icon_left_padding"; relative: 1 0; }
+                               }
+                       }
+                       part {
+                               name: "icon_right_padding";
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC;
+                                       max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC;
+                                       align: 0 0.5;
+                                       fixed: 1 1;
+                                       visible: 0;
+                                       rel1 { to:"elm.swallow.icon"; relative: 1 1; }
+                               }
+                       }
+                       part {
+                               name: "elm.text";
+                               type:  TEXT;
+                               mouse_events:  0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 1 CTXPOPUP_ITEM_HEIGHT_INC;
+                                       max: (CTXPOPUP_CONTENT_WIDTH_MAX_INC-(3*CTXPOPUP_ITEM_PADDING_INC)-CTXPOPUP_ICON_WIDTH_INC) CTXPOPUP_ITEM_HEIGHT_INC;
+                                       fixed: 0 1;
+                                       align: 0.5 0.5;
+                                       rel1 {relative: 1.0 0.0; to_x: "icon_right_padding";}
+                                       rel2 {relative: 0.0 1.0; to_x: "text_right_padding";}
+                                       color: CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC;
+                                       text {
+                                               font: "SLP:style=Roman";
+                                               size: CTXPOPUP_ITEM_TEXT_SIZE_INC;
+                                               align: 0.0 0.5;
+                                               min: 1 1;
+                                               text_class: "list_item";
+                                       }
+                               }
+                               description {
+                                       state: "compress" 0.0;
+                                       inherit: "default" 0.0;
+                                       max: -1 -1;
+                                       text {
+                                               min: 0 1;
+                                       }
+                               }
+                               description {
+                                       state: "clicked" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC;
+                               }
+                       }
+                       part {
+                               name: "text_right_padding";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC;
+                                       max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC;
+                                       fixed: 1 0;
+                                       align: 1.0 0.5;
+                       }
+                       }
+                       part {
+                               name: "over1";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               ignore_flags: ON_HOLD;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "over2";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "disclip";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       visible: 1;
+                                       color: CTXPOPUP_ITEM_DISABLED_COLOR;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "item_unclick";
+                               signal: "mouse,up,1";
+                               source: "over1";
+                               action: SIGNAL_EMIT "elm,action,click" "";
+                       }
+                       program {
+                               name: "disable";
+                               signal: "elm,state,disabled";
+                               source: "elm";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "disclip";
+                       }
+                       program {
+                               name: "enable";
+                               signal: "elm,state,enabled";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "disclip";
+                       }
+                       program {
+                               name: "default";
+                               signal: "elm,state,default";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "compress";
+                               signal: "elm,state,compress";
+                               source: "elm";
+                               action: STATE_SET "compress" 0.0;
+                               target: "elm.text";
+                       }
+                       program {
+                               name: "vertical";
+                               signal: "elm,state,vertical";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "vertical", 0.0);
+                               }
+                       }
+                       program {
+                               name: "horizontal";
+                               signal: "elm,state,horizontal";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"separator", "horizontal", 0.0);
+                               }
+                       }
+                       program {
+                               name: "item_click2";
+                               signal: "mouse,down,1";
+                               source: "over2";
+                               script {
+                                       set_state(PART:"elm.text", "clicked", 0.0);
+                                       set_state(PART:"bg", "clicked", 0.0);
+                               }
+                       }
+                       program {
+                               name: "item_unclick2";
+                               signal: "mouse,up,1";
+                               source: "over2";
+                               script {
+                                       set_state(PART:"elm.text", "compress", 0.0);
+                                       set_state(PART:"bg", "default", 0.0);
+                               }
+                       }
+               }
+       }
+
+
+
+
diff --git a/res/edc/vp-custom-winset-style.edc b/res/edc/vp-custom-winset-style.edc
new file mode 100755 (executable)
index 0000000..7e12a69
--- /dev/null
@@ -0,0 +1,12 @@
+#include "image_res.edc"
+
+collections {
+       #include "vp-button-white.edc"
+       #include "vp-controlbar.edc"
+       #include "custom/vp-naviframe-custom.edc"
+       #include "vp-layout.edc"
+       #include "vp-check.edc"
+       #include "vp-progressbar-list.edc"
+       #include "vp-ctxpopup.edc"
+       #include "vp-nocontents.edc"
+}
diff --git a/res/edc/vp-layout.edc b/res/edc/vp-layout.edc
new file mode 100755 (executable)
index 0000000..dff249c
--- /dev/null
@@ -0,0 +1,377 @@
+   /*************************************************/
+   /* elm_layout -> video style                     */
+   /*************************************************/
+
+group {
+       name: "elm/layout/application/video";
+       parts {
+               part {
+                       name: "elm.swallow.bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 1.0;}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.indicator";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 50;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 0.0; }
+                               color: 0 0 0 255;
+                               visible: 1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                               fixed: 0 1;
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.pixmap.bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 255;
+                               visible: 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+               name: "elm.swallow.pixmap";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.event";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       repeat_events : 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+               part {
+                       name: "elm.swallow.subtitle";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.content";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       repeat_events : 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to_y: "elm.swallow.indicator";
+                               rel1.relative: 0.0 1.0;
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.volume.top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 813;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 0.0; }
+                               color: 0 255 0 128;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 336;
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.volume";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               min: 616 104;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; }
+                               rel2 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; }
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.subtitle.sync";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+               part {
+                       name: "elm.swallow.controlbar";
+                       type: SWALLOW;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+       } /* parts */
+
+       programs {
+               program {
+                       signal: "signal.layout.pixmap.bg.show";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.pixmap.bg", "show", 0.0);
+                       }
+               }
+               program {
+                       signal: "signal.layout.pixmap.bg.hide";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.pixmap.bg", "default", 0.0);
+                       }
+               }
+               program {
+                       signal: "signal.layout.indicator.show";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.indicator", "default", 0.0);
+                       }
+               }
+               program {
+                       signal: "signal.layout.indicator.hide";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.indicator", "hide", 0.0);
+                       }
+               }
+               program {
+                       signal: "signal.volume.potrait.mode";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.volume.top", "default", 0.0);
+                       }
+               }
+               program {
+                       signal: "signal.volume.landscape.mode";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.volume.top", "landscape", 0.0);
+                       }
+               }
+
+       }
+} /* group */
+
+group {
+       name: "elm/layout/application/video_no_indicator";
+       parts {
+               part {
+                       name: "elm.swallow.bg";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 255;
+                       }
+               }
+               part {
+                       name: "elm.swallow.pixmap.bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 255;
+                               visible: 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+               name: "elm.swallow.pixmap";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.event";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       repeat_events : 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+               part {
+                       name: "elm.swallow.subtitle";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+               part {
+                       name: "elm.swallow.content";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       repeat_events : 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                       }
+               }
+               part {
+                       name: "elm.swallow.subtitle.sync";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+               part {
+                       name: "elm.swallow.controlbar";
+                       type: SWALLOW;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.volume.top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 813;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 0.0; }
+                               color: 0 255 0 128;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 336;
+                       }
+               }
+
+               part {
+                       name: "elm.swallow.volume";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               min: 616 104;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; }
+                               rel2 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; }
+                       }
+               }
+       } /* parts */
+
+       programs {
+               program {
+                       signal: "signal.layout.pixmap.bg.show";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.pixmap.bg", "show", 0.0);
+                       }
+               }
+               program {
+                       signal: "signal.layout.pixmap.bg.hide";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.pixmap.bg", "default", 0.0);
+                       }
+               }
+               program {
+                       signal: "signal.volume.potrait.mode";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.volume.top", "default", 0.0);
+                       }
+               }
+               program {
+                       signal: "signal.volume.landscape.mode";
+                       source: "*";
+                       script {
+                               set_state(PART:"elm.swallow.volume.top", "landscape", 0.0);
+                       }
+               }
+       }
+} /* group */
+
+
diff --git a/res/edc/vp-naviframe.edc b/res/edc/vp-naviframe.edc
new file mode 100755 (executable)
index 0000000..49bde21
--- /dev/null
@@ -0,0 +1,4830 @@
+#include "image_res.edc"
+
+#define NAVIFRAME_TITLE_H_INC_PORTRATE 90
+#define NAVIFRAME_TITLE_H_INC_LANDSCAPE 72
+
+#define NAVIFRAME_TITLE_H_INC 100
+#define NAVIFRAME_SEGMENT_TITLE_H_INC 136
+#define NAVIFRAME_OH_OPENED_H_INC 106
+#define NAVIFRAME_OH_CONTENT_H_INC 74
+#define NAVIFRAME_OH_PADDING_INC 16
+#define NAVIFRAME_OH_ARROW_SIZE_INC 19 12
+#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 196
+#define NAVIFRAME_PREV_BTN_W_INC 124
+#define NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 10
+#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 124 80
+#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144
+#define NAVIFRAME_TEXT_PADDING_INC 144
+#define NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 52
+#define NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 186
+#define NAVIFRAME_TITLE_SEGMENT_H_INC 74
+#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 28
+#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 50
+#define NAVIFRAME_TITLE_FONT_SIZE_INC 36
+#define NAVIFRAME_ICON_SIZE_INC 32 32
+#define NAVIFRAME_ICON_PADDING_INC 16 0
+#define NAVIFRAME_CONTROLBAR_BG_COLOR_INC 37 48 54 255
+#define NAVIFRAME_TITLE_TEXT_COLOR_INC 235 236 237 255
+#define NAVIFRAME_TITLE_BG_COLOR_INC 50 65 74 255
+#define NAVIFRAME_OH_BORDER_INC 0 0 4 0
+
+#define CONTROLBAR_LARGE_HEIGHT_INC 122
+#define CONTROLBAR_SMALL_HEIGHT_INC 102
+#define CONTROLBAR_WIDTH_INC 122
+
+
+#define NAVIFRAME_VIEW_TRANS_TIME 0.3
+
+   group { name:"elm/naviframe/base/video/default";
+      parts {
+         part { name: "base";
+            description { state: "default" 0.0;
+            }
+         }
+      }
+   }
+   group { name:"elm/naviframe/item/video/basic/default";
+      alias:"elm/naviframe/item/video/1line/default";
+      images {
+          image: "naviframe_optionheader.png" COMP;
+          image: "naviframe_optionheader_arrow.png" COMP;
+          image: "T01_title_bg.png" COMP;
+                 image: "T01_title_bg_h.png" COMP;
+      }
+      script {
+         public oh_show = 0;     //optionheader show/hide
+         public oh_close = 0;    //optionheader close/open
+         public cbar_bg = 0;     //Controlbar BG Show call count
+         public left_btn_visible = 0; //whether left btn is shown
+         public icon_visible = 0; //whether icon is shown
+         public right_btn_visible = 0; //whether right btn is shown
+         public more_btn_visible = 0; //whether more btn is shown
+         public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons.
+      }
+      parts {
+         part { name: "base";
+            type: RECT;
+            mouse_events:  0;
+            description { state: "default" 0.0;
+               visible: 0;
+            }
+            description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 0.0;
+               rel2.relative: 0.0 1.0;
+            }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 0.0;
+               rel2.relative: 2.0 1.0;
+            }
+         }
+         part { name: "title_bg";
+            type: IMAGE;                       // ORIGINAL - type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_TITLE_H_INC_PORTRATE;          // ORIGINAL - min: 1 NAVIFRAME_TITLE_H_INC
+               align: 0.0 0.0;
+               fixed: 0 1;
+               rel1 { relative: 0.0 0.0; to: "base"; }
+               rel2 { relative: 1.0 0.0; to: "base"; }
+               image { normal: "T01_title_bg.png"; }           // ORIGINAL - color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+            description { state: "landscape" 0.0;
+               inherit: "default" 0.0;
+               min: 1 NAVIFRAME_TITLE_H_INC_LANDSCAPE;
+               image { normal: "T01_title_bg_h.png"; }
+            }
+         }
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "title_bg"; }
+               rel2 { to: "title_bg"; }
+            }
+         }
+         part { name: "optionheader_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 0 1;
+               rel1.to: "title_bg";
+               rel1.relative: 0 1;
+               rel2.to: "title_bg";
+               visible: 0;
+               image { normal: "naviframe_optionheader.png";
+                  border: NAVIFRAME_OH_BORDER_INC;
+               }
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 1 NAVIFRAME_OH_OPENED_H_INC;
+               visible: 1;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "optionheader_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_bg"; }
+               rel2 { to: "optionheader_bg"; }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+               rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "optionheader_bottom_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.to_x: "base";
+               rel1.to_y: "optionheader_bg";
+               rel2.relative: 1.0 0.0;
+               rel2.to_x: "base";
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "padding_before_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_left_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "title_left_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_more_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_more_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+               visible: 0;
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               fixed: 1 0;
+               min: NAVIFRAME_ICON_PADDING_INC;
+               visible: 0;
+            }
+         }
+         part { name: "padding_center_text1";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+            description { state: "icon" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0;
+            }
+            description { state: "icon_left_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+            }
+         }
+         part { name: "padding_center_text2";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+         }
+         part { name: "elm.text.title";
+            type: TEXT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               text { font: "SLP:style=Medium";
+                  text_class: "slp_medium";
+                  size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  align: 0.5 0.5;
+               }
+               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+               align: 0.5 0.5;
+               fixed: 1 0;
+               rel1 { relative: 1.0 0.0; to: "padding_center_text1"; }
+               rel2 { relative: 0.0 1.0; to: "padding_center_text2"; }
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; }
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               align: 1.0 0.5;
+            }
+         }
+         part { name: "click_event_area";
+             ignore_flags: ON_HOLD;
+             repeat_events: 1;
+             description { state: "default" 0.0;
+                rel1 { to: "title_bg"; }
+                rel2 { to: "title_bg"; }
+             }
+         }
+         part { name: "title_left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; }
+            }
+         }
+         part { name: "title_right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               align: 1 0.5;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; }
+            }
+         }
+         part { name: "title_more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1 0.5;
+               rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; }
+            }
+         }
+         part { name: "optionheader_arrow";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: NAVIFRAME_OH_ARROW_SIZE_INC;
+               max: NAVIFRAME_OH_ARROW_SIZE_INC;
+               fixed: 1 1;
+               align: 0.5 0.0;
+               rel1 { relative: 0.0 1.025; to: "title_more_btn"; }
+               rel2 { relative: 1.0 1.025; to: "title_more_btn"; }
+               image.normal: "naviframe_optionheader_arrow.png";
+               color: 255 255 255 0;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               rel1 { to: "base"; }
+               rel2 { to: "base"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.5 0.5;
+               rel1.to: "elm.prev_btn_bg";
+               rel2.to: "elm.prev_btn_bg";
+            }
+         }
+         part { name: "controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+            }
+         }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_pushed";
+            signal: "elm,state,cur,pushed,internal";
+            source: "";
+            action: STATE_SET "left" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "pushed_finished";
+         }
+         program { name: "content_prev_popped";
+            signal: "elm,state,prev,popped,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_popped";
+            signal: "elm,state,cur,popped,internal";
+            source: "";
+            action: STATE_SET "right" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,popped,internal", "");
+            }
+         }
+         program { name: "visible";
+            signal: "elm,state,visible";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+         }
+         program { name: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            script {
+               set_state(PART:"title_bg", "default", 0.0);
+               if (get_int(oh_show) == 1) {
+                  if (get_int(oh_close) == 1) {
+                     emit("elm,state,optionheader,instant_close", "");
+                  }else {
+                     emit("elm,state,optionheader,instant_open", "");
+                  }
+               }
+               else
+                 set_state(PART:"optionheader_bg", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_bg";
+            target: "optionheader_bg";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "left_btn_show";
+            signal: "elm,state,title_left_btn,show";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 1);
+               if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+            }
+         }
+         program { name: "left_btn_hide";
+            signal: "elm,state,title_left_btn,hide";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_show";
+            signal: "elm,state,title_right_btn,show";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 1);
+               if (get_int(more_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_hide";
+            signal: "elm,state,title_right_btn,hide";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,title_more_btn,show";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 1);
+               if (get_int(right_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,title_more_btn,hide";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            script {
+               set_int(icon_visible, 1);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            script {
+               set_int(icon_visible, 0);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bg_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "optionheader_show";
+            signal: "elm,state,optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "default", 0.0);
+               set_state(PART:"optionheader_arrow", "default", 0.0);
+               set_int(oh_show, 0);
+            }
+         }
+         program { name: "optionheader_open";
+            signal: "elm,state,optionheader,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_close";
+            signal: "elm,state,optionheader,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_instant_open";
+            signal: "elm,state,optionheader,instant_open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_instant_close";
+            signal: "elm,state,optionheader,instant_close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_close_set";
+            signal: "elm,state,optionheader,close_set";
+            source: "";
+            script {
+               set_int(oh_close, 1);
+            }
+         }
+         program { name: "optionheader_open_set";
+            signal: "elm,state,optionheader,open_set";
+            source: "";
+            script {
+               set_int(oh_close, 0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+         program {
+            name: "title_portrate_mode";
+            signal: "signal.naviframe.portrate.mode";
+            source: "*";
+            action:  STATE_SET "default" 0.0;
+            target: "title_bg";
+         }
+         program {
+            name: "title_landscape_mode";
+            signal: "signal.naviframe.landscape.mode";
+            source: "*";
+            action:  STATE_SET "landscape" 0.0;
+            target: "title_bg";
+         }
+      }
+   }
+
+
+
+
+   group { name:"elm/naviframe/item/basic2/default";
+      alias:"elm/naviframe/item/video/2line/default";
+      images {
+         image: "naviframe_optionheader.png" COMP;
+         image: "naviframe_optionheader_arrow.png" COMP;
+      }
+      script {
+         public oh_show = 0;     //optionheader show/hide
+         public oh_close = 0;    //optionheader close/open
+         public cbar_bg = 0;     //Controlbar BG Show call count
+         public left_btn_visible = 0; //whether left btn is shown
+         public icon_visible = 0; //whether icon is shown
+         public right_btn_visible = 0; //whether right btn is shown
+         public more_btn_visible = 0; //whether more btn is shown
+         public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons.
+      }
+      parts {
+         part { name: "base";
+            type: RECT;
+            mouse_events:  0;
+            description { state: "default" 0.0;
+               visible: 0;
+            }
+            description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 0.0;
+               rel2.relative: 0.0 1.0;
+            }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 0.0;
+               rel2.relative: 2.0 1.0;
+            }
+         }
+         part { name: "title_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_TITLE_H_INC;
+               align: 0.0 0.0;
+               fixed: 0 1;
+               rel1 { relative: 0.0 0.0; to: "base"; }
+               rel2 { relative: 1.0 0.0; to: "base"; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "title_bg"; }
+               rel2 { to: "title_bg"; }
+            }
+         }
+         part { name: "optionheader_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 0 1;
+               rel1.to: "title_bg";
+               rel1.relative: 0 1;
+               rel2.to: "title_bg";
+               visible: 0;
+               image { normal: "naviframe_optionheader.png";
+                  border: NAVIFRAME_OH_BORDER_INC;
+               }
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 1 NAVIFRAME_OH_OPENED_DOUBLE_H_INC;
+               visible: 1;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "optionheader_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_bg"; }
+               rel2 { to: "optionheader_bg"; }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+               rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "optionheader.mid.padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "optionheader2";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader.mid.padding";}
+               rel2 { relative: 1.0 1.0; to: "optionheader.mid.padding";}
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "optionheader.bottom.padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader2"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader2"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.to_x: "base";
+               rel1.to_y: "optionheader_bg";
+               rel2.relative: 1.0 0.0;
+               rel2.to_x: "base";
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "padding_before_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_left_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "title_left_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_more_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_more_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+               visible: 0;
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               fixed: 1 0;
+               min: NAVIFRAME_ICON_PADDING_INC;
+               visible: 0;
+            }
+         }
+         part { name: "padding_center_text1";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+            description { state: "icon" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0;
+            }
+            description { state: "icon_left_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+            }
+         }
+         part { name: "padding_center_text2";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+         }
+         part { name: "elm.text.title";
+            type: TEXT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               text { font: "SLP:style=Medium";
+                  text_class: "slp_medium";
+                  size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  align: 0.5 0.5;
+               }
+               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+               align: 0.5 0.5;
+               fixed: 1 0;
+               rel1 { relative: 1.0 0.0; to: "padding_center_text1"; }
+               rel2 { relative: 0.0 1.0; to: "padding_center_text2"; }
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; }
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               align: 1.0 0.5;
+            }
+         }
+         part { name: "click_event_area";
+             ignore_flags: ON_HOLD;
+             repeat_events: 1;
+             description { state: "default" 0.0;
+                rel1 { to: "title_bg"; }
+                rel2 { to: "title_bg"; }
+             }
+         }
+         part { name: "title_left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; }
+            }
+         }
+         part { name: "title_right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               align: 1 0.5;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; }
+            }
+         }
+         part { name: "title_more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 0;
+               align: 1 0.5;
+               rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; }
+            }
+         }
+         part { name: "optionheader_arrow";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: NAVIFRAME_OH_ARROW_SIZE_INC;
+               max: NAVIFRAME_OH_ARROW_SIZE_INC;
+               fixed: 1 1;
+               align: 0.5 0.0;
+               rel1 { relative: 0.0 1.025; to: "title_more_btn"; }
+               rel2 { relative: 1.0 1.025; to: "title_more_btn"; }
+               image.normal: "naviframe_optionheader_arrow.png";
+               color: 255 255 255 0;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               rel1 { to: "base"; }
+               rel2 { to: "base"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.5 0.5;
+               rel1.to: "elm.prev_btn_bg";
+               rel2.to: "elm.prev_btn_bg";
+            }
+         }
+         part { name: "controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "controlbar_bg";
+               rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+            }
+         }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_pushed";
+            signal: "elm,state,cur,pushed,internal";
+            source: "";
+            action: STATE_SET "left" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "pushed_finished";
+         }
+         program { name: "content_prev_popped";
+            signal: "elm,state,prev,popped,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_popped";
+            signal: "elm,state,cur,popped,internal";
+            source: "";
+            action: STATE_SET "right" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,popped,internal", "");
+            }
+         }
+         program { name: "visible";
+            signal: "elm,state,visible";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+         }
+         program { name: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            script {
+               set_state(PART:"title_bg", "default", 0.0);
+               if (get_int(oh_show) == 1) {
+                  if (get_int(oh_close) == 1) {
+                     emit("elm,state,optionheader,instant_close", "");
+                  }else {
+                     emit("elm,state,optionheader,instant_open", "");
+                  }
+               }
+               else
+                 set_state(PART:"optionheader_bg", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_bg";
+            target: "optionheader_bg";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "left_btn_show";
+            signal: "elm,state,title_left_btn,show";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 1);
+               if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+            }
+         }
+         program { name: "left_btn_hide";
+            signal: "elm,state,title_left_btn,hide";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_show";
+            signal: "elm,state,title_right_btn,show";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 1);
+               if (get_int(more_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_hide";
+            signal: "elm,state,title_right_btn,hide";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,title_more_btn,show";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 1);
+               if (get_int(right_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,title_more_btn,hide";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            script {
+               set_int(icon_visible, 1);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            script {
+               set_int(icon_visible, 0);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bg_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "optionheader_show";
+            signal: "elm,state,optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "default", 0.0);
+               set_state(PART:"optionheader_arrow", "default", 0.0);
+               set_int(oh_show, 0);
+            }
+         }
+         program { name: "optionheader_open";
+            signal: "elm,state,optionheader,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_close";
+            signal: "elm,state,optionheader,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_instant_open";
+            signal: "elm,state,optionheader,instant_open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_instant_close";
+            signal: "elm,state,optionheader,instant_close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_close_set";
+            signal: "elm,state,optionheader,close_set";
+            source: "";
+            script {
+               set_int(oh_close, 1);
+            }
+         }
+         program { name: "optionheader_open_set";
+            signal: "elm,state,optionheader,open_set";
+            source: "";
+            script {
+               set_int(oh_close, 0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name: "elm/naviframe/item/segment/default";
+      script {
+         public cbar_bg = 0;     //Controlbar BG Show call count
+      }
+      parts {
+         part { name: "base";
+            type: RECT;
+            mouse_events:  0;
+            description { state: "default" 0.0;
+               visible: 0;
+            }
+            description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 0.0;
+               rel2.relative: 0.0 1.0;
+            }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 0.0;
+               rel2.relative: 2.0 1.0;
+            }
+         }
+         part { name: "title_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_SEGMENT_TITLE_H_INC;
+               align: 0.0 0.0;
+               fixed: 0 1;
+               rel1 { relative: 0.0 0.0; to: "base"; }
+               rel2 { relative: 1.0 0.0; to: "base"; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "title_bg"; }
+               rel2 { to: "title_bg"; }
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.to_x: "base";
+               rel1.to_y: "title_bg";
+               rel2.relative: 1.0 0.0;
+               rel2.to_x: "base";
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "padding_before_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "title_left_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+               visible: 0;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               fixed: 1 0;
+               min: NAVIFRAME_ICON_PADDING_INC;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.title";
+            type: TEXT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               text { font: "SLP:style=Medium";
+                      text_class: "slp_medium";
+                  size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  align: 0.5 0.5;
+               }
+               min: 0 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC;
+               max: 999999 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC;
+               fixed: 1 1;
+               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+               align: 0.5 0;
+               rel1.to: "padding_before_left_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "click_event_area";
+             ignore_flags: ON_HOLD;
+             repeat_events: 1;
+             description { state: "default" 0.0;
+                rel1 { to: "title_bg"; }
+                rel2 { to: "title_bg"; }
+             }
+         }
+         part { name: "title_left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0 0;
+               rel1.relative: 1.0 1.0;
+               rel1.to_x: "padding_before_left_btn";
+               rel1.to_y: "elm.text.title";
+               rel2.relative: 1.0 1.0;
+               rel2.to_x: "padding_before_left_btn";
+               rel2.to_y: "elm.text.title";
+            }
+         }
+         part { name: "title_right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               align: 1 0.0;
+               fixed: 1 1;
+               rel1.relative: 0.0 1.0;
+               rel1.to_x: "padding_after_right_btn";
+               rel1.to_y: "elm.text.title";
+               rel2.relative: 0.0 1.0;
+               rel2.to_x: "padding_after_right_btn";
+               rel2.to_y: "elm.text.title";
+            }
+         }
+         part { name: "segment2";
+            type: "SWALLOW";
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC;
+               max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1.to_y: "elm.text.title";
+               rel1.to_x: "title_bg";
+               rel1.relative: 0.28 1;
+               rel2.to_y: "elm.text.title";
+               rel2.to_x: "title_bg";
+               rel2.relative: 0.72 1;
+            }
+         }
+         part { name: "segment3";
+            type: "SWALLOW";
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC;
+               max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1.to_y: "elm.text.title";
+               rel1.relative: 0.2 1;
+               rel1.to_x: "title_bg";
+               rel2.to_y: "elm.text.title";
+               rel2.to_x: "title_bg";
+               rel2.relative: 0.8 1;
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               rel1 { to: "base"; }
+               rel2 { to: "base"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+            }
+         }
+        part { name: "elm.swallow.prev_btn";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              fixed: 1 1;
+              align: 0.5 0.5;
+              rel1.to: "elm.prev_btn_bg";
+              rel2.to: "elm.prev_btn_bg";
+           }
+        }
+        part { name: "controlbar";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              rel1.to: "controlbar_bg";
+              rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+           }
+        }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_pushed";
+            signal: "elm,state,cur,pushed,internal";
+            source: "";
+            action: STATE_SET "left" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "pushed_finished";
+         }
+         program { name: "content_prev_popped";
+            signal: "elm,state,prev,popped,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_popped";
+            signal: "elm,state,cur,popped,internal";
+            source: "";
+            action: STATE_SET "right" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,popped,internal", "");
+            }
+         }
+         program { name: "visible";
+            signal: "elm,state,visible";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+         }
+         program { name: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            target: "title_bg";
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_bg";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bg_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name: "elm/naviframe/item/tabbar/default";
+      script {
+         public cbar_bg = 0;     //Controlbar BG Show call count
+      }
+      parts {
+         part { name: "base";
+            type: RECT;
+            mouse_events:  0;
+            description { state: "default" 0.0;
+               visible: 0;
+            }
+            description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 0.0;
+               rel2.relative: 0.0 1.0;
+            }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 0.0;
+               rel2.relative: 2.0 1.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 0.0;
+               rel1.to: "base";
+               rel2.relative: 1.0 0.0;
+               rel2.to_x: "base";
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               rel1 { to: "base"; }
+               rel2 { to: "base"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+           type: RECT;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              min: 0 0;
+              fixed: 1 0;
+              align: 1.0 0.0;
+              rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+              rel2.to: "controlbar_bg";
+              visible: 0;
+           }
+           description { state: "visible" 0.0;
+              inherit: "default" 0.0;
+              min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+           }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.5 0.5;
+               rel1.to: "elm.prev_btn_bg";
+               rel2.to: "elm.prev_btn_bg";
+            }
+         }
+         part { name: "controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "controlbar_bg";
+               rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+            }
+         }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_pushed";
+            signal: "elm,state,cur,pushed,internal";
+            source: "";
+            action: STATE_SET "left" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "pushed_finished";
+         }
+         program { name: "content_prev_popped";
+            signal: "elm,state,prev,popped,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_popped";
+            signal: "elm,state,cur,popped,internal";
+            source: "";
+            action: STATE_SET "right" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,popped,internal", "");
+            }
+         }
+         program { name: "visible";
+            signal: "elm,state,visible";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bg_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name:"elm/naviframe/item/basic/instant/default";
+      alias:"elm/naviframe/item/video/1line/instant/default";
+      alias:"elm/naviframe/item/video/instant/default";
+      images {
+         image: "naviframe_optionheader.png" COMP;
+         image: "naviframe_optionheader_arrow.png" COMP;
+      }
+      script {
+         public oh_show = 0;     //optionheader show/hide
+         public oh_close = 0;    //optionheader close/open
+         public cbar_bg = 0;     //Controlbar BG Show call count
+         public left_btn_visible = 0; //whether left btn is shown
+         public icon_visible = 0; //whether icon is shown
+         public right_btn_visible = 0; //whether right btn is shown
+         public more_btn_visible = 0; //whether more btn is shown
+         public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons.
+      }
+      parts {
+         part { name: "title_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_TITLE_H_INC;
+               align: 0.0 0.0;
+               fixed: 0 1;
+               rel1 { relative: 0.0 0.0; }
+               rel2 { relative: 1.0 0.0; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+             }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "title_bg"; }
+               rel2 { to: "title_bg"; }
+            }
+         }
+         part { name: "optionheader_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 0 1;
+               rel1.to: "title_bg";
+               rel1.relative: 0 1;
+               rel2.to: "title_bg";
+               visible: 0;
+               image { normal: "naviframe_optionheader.png";
+                  border: NAVIFRAME_OH_BORDER_INC;
+               }
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 1 NAVIFRAME_OH_OPENED_H_INC;
+               visible: 1;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "optionheader_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_bg"; }
+               rel2 { to: "optionheader_bg"; }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+               rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "optionheader_bottom_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.to_y: "optionheader_bg";
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "padding_before_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_left_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "title_left_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_more_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_more_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+               visible: 0;
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               fixed: 1 0;
+               min: NAVIFRAME_ICON_PADDING_INC;
+               visible: 0;
+            }
+         }
+         part { name: "padding_center_text1";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+            description { state: "icon" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0;
+            }
+            description { state: "icon_left_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+            }
+         }
+         part { name: "padding_center_text2";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+         }
+         part { name: "elm.text.title";
+            type: TEXT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               text { font: "SLP:style=Medium";
+                  text_class: "slp_medium";
+                  size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  align: 0.5 0.5;
+               }
+               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+               align: 0.5 0.5;
+               fixed: 1 0;
+               rel1 { relative: 1.0 0.0; to: "padding_center_text1"; }
+               rel2 { relative: 0.0 1.0; to: "padding_center_text2"; }
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; }
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               align: 1.0 0.5;
+            }
+         }
+         part { name: "click_event_area";
+             ignore_flags: ON_HOLD;
+             repeat_events: 1;
+             description { state: "default" 0.0;
+                rel1 { to: "title_bg"; }
+                rel2 { to: "title_bg"; }
+             }
+         }
+         part { name: "title_left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; }
+            }
+         }
+         part { name: "title_right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               align: 1 0.5;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; }
+            }
+         }
+         part { name: "title_more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1 0.5;
+               rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; }
+            }
+         }
+         part { name: "optionheader_arrow";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: NAVIFRAME_OH_ARROW_SIZE_INC;
+               max: NAVIFRAME_OH_ARROW_SIZE_INC;
+               fixed: 1 1;
+               align: 0.5 0.0;
+               rel1 { relative: 0.0 1.025; to: "title_more_btn"; }
+               rel2 { relative: 1.0 1.025; to: "title_more_btn"; }
+               image.normal: "naviframe_optionheader_arrow.png";
+               color: 255 255 255 0;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+            }
+         }
+        part { name: "elm.swallow.prev_btn";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              fixed: 1 1;
+              align: 0.5 0.5;
+              rel1.to: "elm.prev_btn_bg";
+              rel2.to: "elm.prev_btn_bg";
+           }
+        }
+        part { name: "controlbar";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              rel1.to: "controlbar_bg";
+              rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+           }
+        }
+      }
+      programs {
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            after: "pushed_finished";
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            after: "popped_finished";
+         }
+         program { name: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            script {
+               set_state(PART:"title_bg", "default", 0.0);
+               if (get_int(oh_show) == 1) {
+                  if (get_int(oh_close) == 1) {
+                     emit("elm,state,optionheader,instant_close", "");
+                  }else {
+                     emit("elm,state,optionheader,instant_open", "");
+                  }
+               }
+               else
+                 set_state(PART:"optionheader_bg", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_bg";
+            target: "optionheader_bg";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "left_btn_show";
+            signal: "elm,state,title_left_btn,show";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 1);
+               if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+            }
+         }
+         program { name: "left_btn_hide";
+            signal: "elm,state,title_left_btn,hide";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_show";
+            signal: "elm,state,tltle_right_btn,show";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 1);
+               if (get_int(more_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_hide";
+            signal: "elm,state,title_right_btn,hide";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,title_more_btn,show";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 1);
+               if (get_int(right_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,title_more_btn,hide";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            script {
+               set_int(icon_visible, 1);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            script {
+               set_int(icon_visible, 0);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bg_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "optionheader_show";
+            signal: "elm,state,optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "default", 0.0);
+               set_state(PART:"optionheader_arrow", "default", 0.0);
+               set_int(oh_show, 0);
+            }
+         }
+         program { name: "optionheader_open";
+            signal: "elm,state,optionheader,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_close";
+            signal: "elm,state,optionheader,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_instant_open";
+            signal: "elm,state,optionheader,instant_open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_instant_close";
+            signal: "elm,state,optionheader,instant_close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_close_set";
+            signal: "elm,state,optionheader,close_set";
+            source: "";
+            script {
+               set_int(oh_close, 1);
+            }
+         }
+         program { name: "optionheader_open_set";
+            signal: "elm,state,optionheader,open_set";
+            source: "";
+            script {
+               set_int(oh_close, 0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name:"elm/naviframe/item/basic2/instant/default";
+      alias:"elm/naviframe/item/video/2line/instant/default";
+      alias:"elm/naviframe/item/video/instant2/default";
+      images {
+         image: "naviframe_optionheader.png" COMP;
+         image: "naviframe_optionheader_arrow.png" COMP;
+      }
+      script {
+         public oh_show = 0;     //optionheader show/hide
+         public oh_close = 0;    //optionheader close/open
+         public cbar_bg = 0;     //Controlbar BG Show call count
+         public left_btn_visible = 0; //whether left btn is shown
+         public icon_visible = 0; //whether icon is shown
+         public right_btn_visible = 0; //whether right btn is shown
+         public more_btn_visible = 0; //whether more btn is shown
+         public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons.
+      }
+      parts {
+         part { name: "title_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_TITLE_H_INC;
+               align: 0.0 0.0;
+               fixed: 0 1;
+               rel1 { relative: 0.0 0.0; }
+               rel2 { relative: 1.0 0.0; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "title_bg"; }
+               rel2 { to: "title_bg"; }
+            }
+         }
+         part { name: "optionheader_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 0 1;
+               rel1.to: "title_bg";
+               rel1.relative: 0 1;
+               rel2.to: "title_bg";
+               visible: 0;
+               image { normal: "naviframe_optionheader.png";
+                  border: NAVIFRAME_OH_BORDER_INC;
+               }
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 1 NAVIFRAME_OH_OPENED_DOUBLE_H_INC;
+               visible: 1;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "optionheader_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_bg"; }
+               rel2 { to: "optionheader_bg"; }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+               rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "optionheader.mid.padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "optionheader2";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader.mid.padding";}
+               rel2 { relative: 1.0 1.0; to: "optionheader.mid.padding";}
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "optionheader.bottom.padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader2"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader2"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.to_y: "optionheader_bg";
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "padding_before_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_left_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "title_left_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_more_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_more_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+               visible: 0;
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               fixed: 1 0;
+               min: NAVIFRAME_ICON_PADDING_INC;
+               visible: 0;
+            }
+         }
+       part { name: "padding_center_text1";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+            description { state: "icon" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0;
+            }
+            description { state: "icon_left_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+            }
+         }
+         part { name: "padding_center_text2";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+         }
+         part { name: "elm.text.title";
+            type: TEXT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               text { font: "SLP:style=Medium";
+                  text_class: "slp_medium";
+                  size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  align: 0.5 0.5;
+               }
+               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+               align: 0.5 0.5;
+               fixed: 1 0;
+               rel1 { relative: 1.0 0.0; to: "padding_center_text1"; }
+               rel2 { relative: 0.0 1.0; to: "padding_center_text2"; }
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; }
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               align: 1.0 0.5;
+            }
+         }
+         part { name: "click_event_area";
+             ignore_flags: ON_HOLD;
+             repeat_events: 1;
+             description { state: "default" 0.0;
+                rel1 { to: "title_bg"; }
+                rel2 { to: "title_bg"; }
+             }
+         }
+         part { name: "title_left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; }
+            }
+         }
+         part { name: "title_right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               align: 1 0.5;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; }
+            }
+         }
+         part { name: "title_more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 0;
+               align: 1 0.5;
+               rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; }
+            }
+         }
+         part { name: "optionheader_arrow";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: NAVIFRAME_OH_ARROW_SIZE_INC;
+               max: NAVIFRAME_OH_ARROW_SIZE_INC;
+               fixed: 1 1;
+               align: 0.5 0.0;
+               rel1 { relative: 0.0 1.025; to: "title_more_btn"; }
+               rel2 { relative: 1.0 1.025; to: "title_more_btn"; }
+               image.normal: "naviframe_optionheader_arrow.png";
+               color: 255 255 255 0;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+            }
+         }
+        part { name: "elm.swallow.prev_btn";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              fixed: 1 1;
+              align: 0.5 0.5;
+              rel1.to: "elm.prev_btn_bg";
+              rel2.to: "elm.prev_btn_bg";
+           }
+        }
+        part { name: "controlbar";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              rel1.to: "controlbar_bg";
+              rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+           }
+        }
+      }
+      programs {
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            after: "pushed_finished";
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            after: "popped_finished";
+         }
+         program { name: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            script {
+               set_state(PART:"title_bg", "default", 0.0);
+               if (get_int(oh_show) == 1) {
+                  if (get_int(oh_close) == 1) {
+                     emit("elm,state,optionheader,instant_close", "");
+                  }else {
+                     emit("elm,state,optionheader,instant_open", "");
+                  }
+               }
+               else
+                 set_state(PART:"optionheader_bg", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_bg";
+            target: "optionheader_bg";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "left_btn_show";
+            signal: "elm,state,title_left_btn,show";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 1);
+               if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+            }
+         }
+         program { name: "left_btn_hide";
+            signal: "elm,state,title_left_btn,hide";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_show";
+            signal: "elm,state,title_right_btn,show";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 1);
+               if (get_int(more_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_hide";
+            signal: "elm,state,title_right_btn,hide";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,title_more_btn,show";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 1);
+               if (get_int(right_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,title_more_btn,hide";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            script {
+               set_int(icon_visible, 1);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            script {
+               set_int(icon_visible, 0);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bg_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "optionheader_show";
+            signal: "elm,state,optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "default", 0.0);
+               set_state(PART:"optionheader_arrow", "default", 0.0);
+               set_int(oh_show, 0);
+            }
+         }
+         program { name: "optionheader_open";
+            signal: "elm,state,optionheader,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_close";
+            signal: "elm,state,optionheader,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_instant_open";
+            signal: "elm,state,optionheader,instant_open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_instant_close";
+            signal: "elm,state,optionheader,instant_close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_close_set";
+            signal: "elm,state,optionheader,close_set";
+            source: "";
+            script {
+               set_int(oh_close, 1);
+            }
+         }
+         program { name: "optionheader_open_set";
+            signal: "elm,state,optionheader,open_set";
+            source: "";
+            script {
+               set_int(oh_close, 0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name: "elm/naviframe/item/segment/instant/default";
+      script {
+         public cbar_bg = 0;     //Controlbar BG Show call count
+      }
+      parts {
+         part { name: "title_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_SEGMENT_TITLE_H_INC;
+               align: 0.0 0.0;
+               fixed: 0 1;
+               rel1 { relative: 0.0 0.0; }
+               rel2 { relative: 1.0 0.0; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "title_bg"; }
+               rel2 { to: "title_bg"; }
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.to_y: "title_bg";
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "padding_before_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "title_left_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+               visible: 0;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               fixed: 1 0;
+               min: NAVIFRAME_ICON_PADDING_INC;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.title";
+            type: TEXT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               text { font: "SLP:style=Medium";
+                  text_class: "slp_medium";
+                  size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  align: 0.5 0.5;
+               }
+               min: 0 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC;
+               max: 999999 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC;
+               fixed: 1 1;
+               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+               align: 0.5 0;
+               rel1.to: "padding_before_left_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "click_event_area";
+             ignore_flags: ON_HOLD;
+             repeat_events: 1;
+             description { state: "default" 0.0;
+                rel1 { to: "title_bg"; }
+                rel2 { to: "title_bg"; }
+             }
+         }
+         part { name: "title_left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0 0;
+               rel1.relative: 1.0 1.0;
+               rel1.to_x: "padding_before_left_btn";
+               rel1.to_y: "elm.text.title";
+               rel2.relative: 1.0 1.0;
+               rel2.to_x: "padding_before_left_btn";
+               rel2.to_y: "elm.text.title";
+            }
+         }
+         part { name: "title_right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               align: 1 0.0;
+               fixed: 1 1;
+               rel1.relative: 0.0 1.0;
+               rel1.to_x: "padding_after_right_btn";
+               rel1.to_y: "elm.text.title";
+               rel2.relative: 0.0 1.0;
+               rel2.to_x: "padding_after_right_btn";
+               rel2.to_y: "elm.text.title";
+            }
+         }
+         part { name: "segment2";
+            type: "SWALLOW";
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC;
+               max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1.to_y: "elm.text.title";
+               rel1.relative: 0.28 1;
+               rel2.to_y: "elm.text.title";
+               rel2.relative: 0.72 1;
+            }
+         }
+         part { name: "segment3";
+            type: "SWALLOW";
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC;
+               max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1.to_y: "elm.text.title";
+               rel1.relative: 0.2 1;
+               rel2.to_y: "elm.text.title";
+               rel2.relative: 0.8 1;
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+            }
+         }
+        part { name: "elm.swallow.prev_btn";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              fixed: 1 1;
+              align: 0.5 0.5;
+              rel1.to: "elm.prev_btn_bg";
+              rel2.to: "elm.prev_btn_bg";
+           }
+        }
+        part { name: "controlbar";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              rel1.to: "controlbar_bg";
+              rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+           }
+        }
+      }
+      programs {
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            after: "pushed_finished";
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            after: "popped_finished";
+         }
+         program { name: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            target: "title_clip";
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_clip";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bg_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name: "elm/naviframe/item/tabbar/instant/default";
+      script {
+         public cbar_bg = 0;     //Controlbar BG Show call count
+      }
+      parts {
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+            }
+         }
+        part { name: "elm.swallow.prev_btn";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              fixed: 1 1;
+              align: 0.5 0.5;
+              rel1.to: "elm.prev_btn_bg";
+              rel2.to: "elm.prev_btn_bg";
+           }
+        }
+        part { name: "controlbar";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              rel1.to: "controlbar_bg";
+              rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+           }
+        }
+      }
+      programs {
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            after: "pushed_finished";
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            after: "popped_finished";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bgp_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
diff --git a/res/edc/vp-naviframe_white.edc b/res/edc/vp-naviframe_white.edc
new file mode 100755 (executable)
index 0000000..059d987
--- /dev/null
@@ -0,0 +1,853 @@
+#define NAVIFRAME_TITLE_H_INC 108
+#define NAVIFRAME_SEGMENT_TITLE_H_INC 126
+#define NAVIFRAME_OH_OPENED_H_INC 114
+#define NAVIFRAME_OH_CONTENT_H_INC 72
+#define NAVIFRAME_OH_PADDING_INC 16
+#define NAVIFRAME_OH_SHADOW_INC 10
+#define NAVIFRAME_OH_ARROW_SIZE_INC 28 24
+#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 202
+#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 120 72
+#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144
+#define NAVIFRAME_TITLE_SEGMENT_H_INC 62
+#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 38
+#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 54
+#define NAVIFRAME_TITLE_FONT_SIZE_INC 52
+#define NAVIFRAME_ICON_SIZE_INC 32 32
+#define NAVIFRAME_PADDING_INC 16 0
+#define NAVIFRAME_ICON_PADDING_INC 64 0
+#define NAVIFRAME_TITLE_TEXT_COLOR_INC 249 249 249 255
+#define NAVIFRAME_SUBTITLE_TEXT_COLOR_INC 249 249 249 255
+#define NAVIFRAME_OH_BORDER_INC 1 1 5 1
+#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 200
+
+#define NAVIFRAME_VIEW_TRANS_TIME 0.3
+
+#define CONTROLBAR_LARGE_HEIGHT_INC 122
+#define CONTROLBAR_SMALL_HEIGHT_INC 114
+#define CONTROLBAR_WIDTH_INC 122
+
+
+group {
+       name:"elm/naviframe/base/video/default";
+       parts {
+               part {
+                       name: "base";
+                       description {
+                               state: "default" 0.0;
+                       }
+               }
+       }
+}
+
+group {
+       name:"elm/naviframe/item/video/basic/default";
+       alias:"elm/naviframe/item/video/1line/default";
+       images {
+               image: "white/common/00_winset_control_top_bg.png" COMP;
+               image: "white/common/00_winset_control_top_arrow.png" COMP;
+               image: "white/common/00_winset_title_line.png" COMP;
+               image: "white/common/00_winset_control_toolbar_bg.png" COMP;
+       }
+       script {
+               public oh_show = 0;     //optionheader show/hide
+               public oh_close = 0;    //optionheader close/open
+               public cbar_bg = 0;     //Controlbar BG Show call count
+       }
+       parts {
+               part {
+                       name: "base";
+                       type: RECT;
+                       mouse_events:  0;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "left" 0.0;
+                               inherit: "default" 0.0;
+                               rel1.relative: -1.0 0.0;
+                               rel2.relative: 0.0 1.0;
+                       }
+                       description {
+                               state: "right" 0.0;
+                               inherit: "default" 0.0;
+                               rel1.relative: 1.0 0.0;
+                               rel2.relative: 2.0 1.0;
+                       }
+               }
+               part {
+                       name: "title_bg";
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               min: 1 NAVIFRAME_TITLE_H_INC;
+                               align: 0.0 0.0;
+                               fixed: 0 1;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0; to: "base"; }
+                               rel2 { relative: 1.0 0.0; to: "base"; }
+                               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                               max: 0 0;
+                               fixed: 1 1;
+                       }
+               }
+               part {
+                       name: "title_clip";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { to: "title_bg"; }
+                               rel2 { to: "title_bg"; }
+                       }
+               }
+               part {
+                       name: "optionheader_bg";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 1 0;
+                               align: 0.5 0;
+                               fixed: 0 1;
+                               rel1.to: "title_bg";
+                               rel1.relative: 0 1;
+                               rel2.to: "title_bg";
+                               visible: 0;
+                               image {
+                                       normal: "white/common/00_winset_control_top_bg.png";
+                                       border: NAVIFRAME_OH_BORDER_INC;
+                               }
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               min: 1 NAVIFRAME_OH_OPENED_H_INC;
+                               visible: 1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                               max: 0 0;
+                               fixed: 1 1;
+                       }
+               }
+               part {
+                       name: "optionheader_clip";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { to: "optionheader_bg"; }
+                               rel2 { to: "optionheader_bg"; }
+                       }
+               }
+               part {
+                       name: "optionheader_top_padding";
+                       type: RECT;
+                       scale: 1;
+                       clip_to: "optionheader_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: 0 NAVIFRAME_OH_PADDING_INC;
+                               rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+                               rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "optionheader";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "optionheader_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: 0 NAVIFRAME_OH_CONTENT_H_INC;
+                               rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+                               rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "optionheader_bottom_padding";
+                       type: RECT;
+                       scale: 1;
+                       clip_to: "optionheader_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: 0 NAVIFRAME_OH_PADDING_INC;
+                               rel1 { relative: 0.0 1.0; to: "optionheader"; }
+                               rel2 { relative: 1.0 1.0; to: "optionheader"; }
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "optionheader_shadow";
+                       type: RECT;
+                       scale: 1;
+                       clip_to: "optionheader_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: 0 NAVIFRAME_OH_SHADOW_INC;
+                               rel1 { relative: 0.0 1.0; to: "optionheader_bottom_padding"; }
+                               rel2 { relative: 1.0 1.0; to: "optionheader_bottom_padding"; }
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.swallow.content";
+                       type: SWALLOW;
+                       scale: 1;
+                       repeat_events: 0;
+                       clip_to: "content_clip";
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               rel1.relative: 0.0 1.0;
+                               rel1.to_x: "base";
+                               rel1.to_y: "optionheader_bg";
+                               rel2.relative: 1.0 0.0;
+                               rel2.to_x: "base";
+                               rel2.to_y: "controlbar_bg";
+                       }
+               }
+               part {
+                       name: "content_clip";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to: "elm.swallow.content";
+                               rel2.to: "elm.swallow.content";
+                       }
+               }
+               part {
+                       name: "padding_center_text1";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_PADDING_INC;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+                               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+                               visible: 0;
+                       }
+                       description {
+                               state: "icon" 0.0;
+                               inherit: "default" 0.0;
+                               min: NAVIFRAME_ICON_PADDING_INC;
+                       }
+               }
+               part {
+                       name: "padding_center_text2";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_PADDING_INC;
+                               fixed: 1 0;
+                               align: 1.0 0.5;
+                               rel1 { relative: 0.0 0.0; to_x: "title_more_btn"; to_y: "title_bg"; }
+                               rel2 { relative: 0.0 1.0; to_x: "title_more_btn"; to_y: "title_bg"; }
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.text.title";
+                       type: TEXT;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               text {
+                                       font: "SLP:style=Medium";
+                                       size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+                                       min: 0 0;
+                                       max: 1 0;
+                                       align: 0.5 0.5;
+                                       text_class: "slp_medium";
+                               }
+                               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+                               align: 0.0 0.5;
+                               fixed: 1 0;
+                               rel1 { relative: 1.0 0.0; to: "padding_center_text1"; }
+                               rel2 { relative: 0.0 1.0; to: "padding_center_text2"; }
+                       }
+               }
+               part {
+                       name: "padding_before_text";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               align: 1.0 0.5;
+                               rel1 { relative: 0.0 0.0; to: "elm.text.title"; }
+                               rel2 { relative: 0.0 1.0; to: "elm.text.title"; }
+                               fixed: 1 0;
+                               min: NAVIFRAME_PADDING_INC;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.swallow.icon";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_ICON_SIZE_INC;
+                               fixed: 1 1;
+                               rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+                               rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+                               aspect: 1.0 1.0;
+                               aspect_preference: VERTICAL;
+                               align: 1.0 0.5;
+                       }
+               }
+               part {
+                       name: "click_event_area";
+                       ignore_flags: ON_HOLD;
+                       repeat_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { to: "title_bg"; }
+                               rel2 { to: "title_bg"; }
+                       }
+               }
+               part {
+                       name: "title_left_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+                               fixed: 1 1;
+                               align: 1 0.5;
+                               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+                               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+                       }
+               }
+               part {
+                       name: "left_btn_separator";
+                       type: IMAGE;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: 2 48;
+                               max: 2 48;
+                               fixed: 1 1;
+                               align: 1.0 0.5;
+                               rel1 { relative: 0.0 0.0; to: "title_left_btn"; }
+                               rel2 { relative: 0.0 1.0; to: "title_left_btn"; }
+                               image.normal: "white/common/00_winset_title_line.png";
+                               visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "title_right_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+                               align: 1 0.5;
+                               fixed: 1 1;
+                               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+                               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+                               }
+               }
+               part {
+                       name: "right_btn_separator";
+                       type: IMAGE;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: 2 48;
+                               max: 2 48;
+                               fixed: 1 1;
+                               align: 1.0 0.5;
+                               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+                               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+                               image.normal: "white/common/00_winset_title_line.png";
+                               visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "title_more_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description {
+                               state: "default" 0.0;
+                               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+                               fixed: 1 1;
+                               align: 1 0.5;
+                               rel1 { relative: 0.0 0.0; to: "title_left_btn"; }
+                               rel2 { relative: 0.0 1.0; to: "title_left_btn"; }
+                       }
+               }
+               part {
+                       name: "optionheader_arrow";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: NAVIFRAME_OH_ARROW_SIZE_INC;
+                               max: NAVIFRAME_OH_ARROW_SIZE_INC;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 1.1; to: "title_more_btn"; }
+                               rel2 { relative: 1.0 1.2; to: "title_more_btn"; }
+                               image.normal: "white/common/00_winset_control_top_arrow.png";
+                               color: 255 255 255 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                       }
+               }
+               part {
+                       name: "controlbar_bg";
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               max: 999999 0;
+                               fixed: 0 1;
+                               align: 0.0 1.0;
+                               visible: 0;
+                               rel1 { to: "base"; }
+                               rel2 { to: "base"; }
+                               image.normal: "white/common/00_winset_control_toolbar_bg.png";
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+                               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "controlbar_clip";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to: "controlbar_bg";
+                               rel2.to: "controlbar_bg";
+                       }
+               }
+               part {
+                       name: "elm.prev_btn_bg";
+                       type: RECT;
+                       scale: 1;
+                       clip_to: "controlbar_clip";
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               align: 1.0 0.0;
+                               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+                               rel2.to: "controlbar_bg";
+                               visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+                       }
+               }
+               part {
+                       name: "elm.swallow.prev_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "controlbar_clip";
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1.to: "elm.prev_btn_bg";
+                               rel2.to: "elm.prev_btn_bg";
+                       }
+               }
+               part {
+                       name: "controlbar";
+                       type: SWALLOW;
+                       scale: 1;
+                       clip_to: "controlbar_clip";
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1.to: "controlbar_bg";
+                               rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "content_new_pushed";
+                       signal: "elm,state,new,pushed,internal";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "base";
+                       transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+                       after: "show_finished";
+               }
+               program {
+                       name: "content_cur_pushed";
+                       signal: "elm,state,cur,pushed,internal";
+                       source: "";
+                       action: STATE_SET "left" 0.0;
+                       target: "base";
+                       transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+                       after: "pushed_finished";
+               }
+               program {
+                       name: "content_prev_popped";
+                       signal: "elm,state,prev,popped,internal";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "base";
+                       transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+                       after: "show_finished";
+               }
+               program {
+                       name: "content_cur_popped";
+                       signal: "elm,state,cur,popped,internal";
+                       source: "";
+                       action: STATE_SET "right" 0.0;
+                       target: "base";
+                       transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+                       after: "popped_finished";
+               }
+               program {
+                       name: "cur_pushed";
+                       signal: "elm,state,cur,pushed";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "default", 0.0);
+                               emit("elm,state,cur,pushed,internal", "");
+                       }
+               }
+               program {
+                       name: "new_pushed";
+                       signal: "elm,state,new,pushed";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "right", 0.0);
+                               emit("elm,state,new,pushed,internal", "");
+                       }
+               }
+               program {
+                       name: "prev_popped";
+                       signal: "elm,state,prev,popped";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "left", 0.0);
+                               emit("elm,state,prev,popped,internal", "");
+                       }
+               }
+               program {
+                       name: "cur_popped";
+                       signal: "elm,state,cur,popped";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "default", 0.0);
+                               emit("elm,state,cur,popped,internal", "");
+                       }
+               }
+               program {
+                       name: "visible";
+                       signal: "elm,state,visible";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "base";
+               }
+               program {
+                       name: "title_show";
+                       signal: "elm,state,title,show";
+                       source: "elm";
+                       script {
+                               set_state(PART:"title_bg", "default", 0.0);
+                               if (get_int(oh_show) == 1) {
+                                       if (get_int(oh_close) == 1) {
+                                               emit("elm,state,optionheader,instant_close", "");
+                                       }else {
+                                               emit("elm,state,optionheader,instant_open", "");
+                                       }
+                               }
+                               else
+                                       set_state(PART:"optionheader_bg", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "title_hide";
+                       signal: "elm,state,title,hide";
+                       source: "elm";
+                       action: STATE_SET "hide" 0.0;
+                       target: "title_bg";
+                       target: "optionheader_bg";
+               }
+               program {
+                       name: "prev_btn_show";
+                       signal: "elm,state,prev_btn,show";
+                       source: "elm";
+                       script {
+                               emit("elm,state,controlbar_bg,show", "elm");
+                               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+                       }
+               }
+               program {
+                       name: "prev_btn_hide";
+                       signal: "elm,state,prev_btn,hide";
+                       source: "elm";
+                       script {
+                               emit("elm,state,controlbar_bg,hide", "elm");
+                               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "icon_show";
+                       signal: "elm,state,icon,show";
+                       source: "elm";
+                       action: STATE_SET "icon" 0.0;
+                       target: "padding_center_text1";
+               }
+               program {
+                       name: "icon_hide";
+                       signal: "elm,state,icon,hide";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "padding_center_text1";
+               }
+               program {
+                       name: "left_btn_show";
+                       signal: "elm,state,title_left_btn,show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       target: "left_btn_separator";
+               }
+               program {
+                       name: "left_btn_hide";
+                       signal: "elm,state,title_left_btn,hide";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "left_btn_separator";
+               }
+               program {
+                       name: "right_btn_show";
+                       signal: "elm,state,title_right_btn,show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       target: "right_btn_separator";
+               }
+               program {
+               name: "right_btn_hide";
+               signal: "elm,state,title_right_btn,hide";
+               source: "elm";
+               action: STATE_SET "default" 0.0;
+               target: "right_btn_separator";
+               }
+               program {
+                       name: "controlbar_show";
+                       signal: "elm,state,controlbar,show";
+                       source: "elm";
+                       script {
+                               emit("elm,state,controlbar_bg,show", "elm");
+                       }
+               }
+               program {
+                       name: "controlbar_hide";
+                       signal: "elm,state,controlbar,hide";
+                       source: "elm";
+                       script {
+                               emit("elm,state,controlbar_bg,hide", "elm");
+                       }
+               }
+               program {
+                       name: "controlbar_bg_show";
+                       signal: "elm,state,controlbar_bg,show";
+                       source: "elm";
+                       script {
+                               set_state(PART:"controlbar_bg", "show", 0.0);
+                               set_int(cbar_bg, get_int(cbar_bg) + 1);
+                       }
+               }
+               program {
+                       name: "controlbar_bg_hide";
+                       signal: "elm,state,controlbar_bg,hide";
+                       source: "elm";
+                       script {
+                               set_int(cbar_bg, get_int(cbar_bg) - 1);
+                               if (get_int(cbar_bg) <= 0)
+                                       set_state(PART:"controlbar_bg", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "optionheader_show";
+                       signal: "elm,state,optionheader,show";
+                       source: "elm";
+                       script {
+                               set_state(PART:"optionheader_bg", "show", 0.0);
+                               set_state(PART:"optionheader_arrow", "show", 0.0);
+                               set_int(oh_show, 1);
+                       }
+               }
+               program {
+                       name: "optionheader_hide";
+                       signal: "elm,state,optionheader,hide";
+                       source: "elm";
+                       script {
+                               set_state(PART:"optionheader_bg", "default", 0.0);
+                               set_state(PART:"optionheader_arrow", "default", 0.0);
+                               set_int(oh_show, 0);
+                       }
+               }
+               program {
+               name: "optionheader_open";
+               signal: "elm,state,optionheader,open";
+               source: "";
+               action: STATE_SET "show" 0.0;
+               target: "optionheader_bg";
+               target: "optionheader_arrow";
+               transition: LINEAR 0.2;
+               after: "optionheader_open_set";
+               }
+               program {
+                       name: "optionheader_close";
+                       signal: "elm,state,optionheader,close";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "optionheader_bg";
+                       target: "optionheader_arrow";
+                       transition: LINEAR 0.2;
+                       after: "optionheader_close_set";
+               }
+               program {
+                       name: "optionheader_instant_open";
+                       signal: "elm,state,optionheader,instant_open";
+                       source: "";
+                       action: STATE_SET "show" 0.0;
+                       target: "optionheader_bg";
+                       target: "optionheader_arrow";
+                       after: "optionheader_open_set";
+               }
+               program {
+                       name: "optionheader_instant_close";
+                       signal: "elm,state,optionheader,instant_close";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "optionheader_bg";
+                       target: "optionheader_arrow";
+                       after: "optionheader_close_set";
+               }
+               program {
+                       name: "optionheader_close_set";
+                       signal: "elm,state,optionheader,close_set";
+                       source: "";
+                       script {
+                               set_int(oh_close, 1);
+                       }
+               }
+               program {
+                       name: "optionheader_open_set";
+                       signal: "elm,state,optionheader,open_set";
+                       source: "";
+                       script {
+                               set_int(oh_close, 0);
+                       }
+               }
+               program {
+                       name: "controlbar_open";
+                       signal: "elm,state,controlbar,open";
+                       source: "";
+                       action: STATE_SET "show" 0.0;
+                       target: "controlbar_bg";
+                       transition: LINEAR 0.2;
+               }
+               program {
+                       name: "controlbar_close";
+                       signal: "elm,state,controlbar,close";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "controlbar_bg";
+                       transition: LINEAR 0.2;
+               }
+               program {
+                       name: "controlbar_instant_open";
+                       signal: "elm,state,controlbar,instant_open";
+                       source: "";
+                       script {
+                               emit("elm,state,prev_btn,show", "elm");
+                               emit("elm,state,controlbar,show", "elm");
+                       }
+               }
+               program {
+                       name: "controlbar_instant_close";
+                       signal: "elm,state,controlbar,instant_close";
+                       source: "";
+                       script {
+                               emit("elm,state,prev_btn,hide", "elm");
+                               emit("elm,state,controlbar,hide", "elm");
+                       }
+               }
+               program {
+                       name: "show_finished";
+                       action: SIGNAL_EMIT "elm,action,show,finished" "";
+               }
+               program {
+                       name: "pushed_finished";
+                       action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+               }
+               program {
+                       name: "popped_finished";
+                       action: SIGNAL_EMIT "elm,action,popped,finished" "";
+               }
+               program {
+                       name: "title_clicked";
+                       signal: "mouse,clicked,1";
+                       source: "click_event_area";
+                       action: SIGNAL_EMIT "elm,action,title,clicked" "";
+               }
+       } /* programs */
+} /* group */
+
+
diff --git a/res/edc/vp-nocontents.edc b/res/edc/vp-nocontents.edc
new file mode 100755 (executable)
index 0000000..903694a
--- /dev/null
@@ -0,0 +1,72 @@
+#define NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC 32
+#define NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC 173 170 165 255
+
+   group {
+      name: "elm/layout/nocontents/video";
+      styles{
+         style { name: "nocontent_style";
+            base: "font=SLP:style=Roman text_class=slp font_size="NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC" align=center color=#ffffff wrap=word";
+            tag:  "br" "\n";
+            tag:  "hilight" "+ font=SLP:style=Bold text_class=slp";
+            tag:  "b" "+ font=SLP:style=Bold text_class=slp";
+            tag:  "tab" "\t";
+         }
+      }
+      images {
+         image: "T01_Nocontents_multimedia.png" COMP;
+      }
+      parts {
+         part { name: "bg";
+            scale: 1;
+            type: RECT;
+            description { state: "default" 0.0;
+               visible: 1;
+               rel1 { relative: 0.0 0.0;}
+               rel2 { relative: 1.0 1.0;}
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "nocontents.image";
+            description { state: "default" 0.0;
+               visible: 1;
+               align: 0.5 0.0;
+               rel1 { relative: 203/720 296/1016; to: "bg";}
+               rel2 { relative: (203+314)/720 (296+310)/1016; to: "bg";}
+               image {
+                  normal: "T01_Nocontents_multimedia.png";
+                  border: 1 1 1 1;
+                  border_scale: 1;
+               }
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+            }
+         }
+         part { name: "middle.padding";
+            scale: 1;
+            type: RECT;
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.5 0.0;
+               rel1 { relative: 0.0 1.0; to_y: "nocontents.image";}
+               rel2 { relative: 1.0 (296+310+54)/1016; to: "bg";}
+            }
+         }
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            description { state: "default" 0.0;
+               fixed: 0 1;
+               align: 0.5 0.0;
+               visible: 1;
+               rel1 { relative: 0.0 1.0; to_x: "bg"; to_y: "middle.padding";}
+               rel2 { relative: 1.0 1.0; to: "bg";}
+               color: NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC;
+               text {
+                  style: "nocontent_style";
+                  align: 0.5 0.5;
+                  min: 0 0;
+                  max: 0 1;
+               }
+            }
+         }
+      }
+   }
diff --git a/res/edc/vp-progressbar-list.edc b/res/edc/vp-progressbar-list.edc
new file mode 100755 (executable)
index 0000000..b9c9041
--- /dev/null
@@ -0,0 +1,584 @@
+#define PROGRESSBAR_TITLE_FONT_SIZE_INC 28
+#define PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC 20
+
+#define PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC          0 0 0 255
+#define PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC          224 224 224 255
+#define PROGRESSBAR_LIST_PROCESS_WIDTH_INC 66
+#define PROGRESSBAR_LIST_PROCESS_HEIGHT_INC 66
+#define PROGRESSBAR_LIST_PROCESS_SMALL_INC 35
+#define PROGRESSBAR_LIST_PROCESS_SMALL_IMAGE "32x32"
+#define PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC 8
+
+#define        GALLERY_EDC_IMAGE_LIST_PROGRESS_BG                                      "00_winset_list_progress_bg.png"
+#define        GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR                                     "T01_video_list_progress_bar.png"
+
+   group { name: "elm/progressbar/horizontal/video/list_progress";
+      images {
+         image: GALLERY_EDC_IMAGE_LIST_PROGRESS_BG COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR COMP;
+      }
+      parts {
+         part { name: "elm.padding.left";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 0 0;
+               }
+               color: 0 0 0 0;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "elm.padding.right";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset:   0   0;
+               }
+               color: 0 0 0 0;
+               align: 1.0 0.0;
+            }
+         }
+         part { name: "elm.background.progressbar";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to_x: "elm.padding.left";
+                  relative: 1.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  to_x: "elm.padding.right";
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+               }
+            }
+         }
+         part { name: "elm.swallow.bar";
+            mouse_events: 0;
+            scale: 1;
+            type: SWALLOW;
+            description {
+               min: 1 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC;
+               max: 99999 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC;
+               state: "default" 0.0;
+               rel1 {
+                  to: "elm.background.progressbar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.background.progressbar";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  offset: 0 0;
+                  to_y: "elm.background.progressbar";
+               }
+               rel2 {
+                  offset: 0 -1;
+                  relative: 0.0 1.0;
+                  to_y: "elm.background.progressbar";
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel2.offset: 4 -1;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to_x: "elm.swallow.content";
+               rel1.relative: 1.0 0.0;
+               rel2.to_x: "elm.swallow.content";
+               rel2.relative: 1.0 1.0;
+               color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  text_class: "slp";
+                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
+                  min: 0 0;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "background";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "elm.background.progressbar";
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+               image {
+                  normal: GALLERY_EDC_IMAGE_LIST_PROGRESS_BG;
+                  border: 0 0 1 1;
+               }
+            }
+         }
+         part { name: "elm.text.status";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               visible: 0;
+               rel1 {
+                  to: "background";
+                  relative: 0.5 0.5;
+               }
+               rel2 {
+                  to: "background";
+                  relative: 0.5 0.5;
+               }
+               text {
+                  font: "SLP:style=Medium";
+                  text_class: "slp";
+                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
+                  min: 0 0;
+                  align: 0.5 0.0;
+               }
+               color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "elm.progress.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "elm.background.progressbar";
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 1;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to_y: "elm.swallow.bar";
+                  to_x: "elm.cur.progressbar";
+                  offset: -1 -1;
+               }
+               image {
+                  normal: GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR;
+                  border: 0 0 1 1;
+               }
+            }
+            description {
+               state: "invert" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to_y: "elm.swallow.bar";
+                  to_x: "elm.cur.progressbar";
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+            }
+            description {
+               state: "state_begin" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 0.1 1.0;
+               }
+            }
+            description {
+               state: "state_end" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.9 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part { name: "text-bar";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "progress-rect";
+            //effect: SOFT_SHADOW;
+            scale: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               fixed: 1 1;
+               visible: 0;
+               rel1.to: "elm.text.status";
+               rel1.offset: -1 -1;
+               rel2.to: "elm.text.status";
+               text {
+                  text_source: "elm.text.status";
+                  font: "SLP:style=Medium";
+                  text_class: "slp";
+                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
+                  min: 0 0;
+                  align: 0.0 0.0;
+               }
+               color: PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "elm.cur.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            dragable {
+               confine: "background";
+               x: 1 1 1;
+               y: 0 0 0;
+            }
+            description { state: "default" 0.0;
+               min: 0 28;
+               fixed: 1 1;
+               visible: 0;
+               rel1 {
+                  to: "background";
+                  relative: 0 0;
+               }
+               rel2.to: "background";
+           }
+         }
+         part { name: "progress-rect";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1.to: "elm.progress.progressbar";
+               rel2.to: "elm.progress.progressbar";
+            }
+         }
+      }
+      programs {
+         program { name: "label_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+         program { name: "label_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.text";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "units_show";
+            signal: "elm,state,units,visible";
+            source: "elm";
+            action:  STATE_SET "show" 0.0;
+            target: "text-bar";
+            target: "elm.text.status";
+         }
+         program { name: "units_hide";
+            signal: "elm,state,units,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "text-bar";
+            target: "elm.text.status";
+         }
+         program { name: "slide_to_end";
+            action:  STATE_SET "state_end" 0.0;
+            transition: LINEAR 0.5;
+            target: "elm.progress.progressbar";
+            after: "slide_to_begin";
+         }
+         program { name: "slide_to_begin";
+            signal: "elm,state,slide,begin";
+            action: STATE_SET "state_begin" 0.0;
+            target: "elm.progress.progressbar";
+            transition: LINEAR 0.5;
+            after: "slide_to_end";
+         }
+         program { name: "start_pulse";
+            signal: "elm,state,pulse,start";
+            source: "elm";
+           // after: "slide_to_end";
+         }
+         program { name: "stop_pulse";
+            signal: "elm,state,pulse,stop";
+            source: "elm";
+            action: ACTION_STOP;
+            target: "slide_to_begin";
+            target: "slide_to_end";
+            target: "start_pulse";
+            //after: "state_pulse";
+         }
+         program { name: "state_pulse";
+            signal: "elm,state,pulse";
+            source: "elm";
+            action: STATE_SET "state_begin" 0.0;
+            target: "elm.progress.progressbar";
+            after: "units_hide";
+         }
+         program { name: "state_fraction";
+            signal: "elm,state,fraction";
+            source: "elm";
+            action: ACTION_STOP;
+            target: "slide_to_begin";
+            target: "slide_to_end";
+            target: "start_pulse";
+            action: STATE_SET "default" 0.0;
+            target: "elm.progress.progressbar";
+         }
+         program { name: "set_invert_on";
+            signal: "elm,state,inverted,on";
+            source: "elm";
+            action:  STATE_SET "invert" 0.0;
+            target: "elm.progress.progressbar";
+         }
+         program { name: "set_invert_off";
+            signal: "elm,state,inverted,off";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.progress.progressbar";
+         }
+      }
+   }
+
+
+/*
+#define PROGRESS_BG_DESC( param_num ) \
+   description { state: "pulse" 0.#param_num; \
+      inherit: "default" 0.0; \
+      image { \
+         normal: GALLERY_EDC_IMAGE_LIST_PROCESS_##param_num; \
+      } \
+   }
+
+#define   PROGRESSING_DELAY    0.03
+
+   group { name: "elm/progressbar/horizontal/gallery/list_process";
+      images {
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_01 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_02 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_03 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_04 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_05 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_06 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_07 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_08 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_09 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_10 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_11 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_12 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_13 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_14 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_15 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_16 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_17 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_18 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_19 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_20 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_21 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_22 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_23 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_24 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_25 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_26 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_27 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_28 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_29 COMP;
+         image: GALLERY_EDC_IMAGE_LIST_PROCESS_30 COMP;
+      }
+      parts {
+         part { name: "elm.background.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            type: RECT;
+            description {
+               state: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.bar";
+            mouse_events: 0;
+            scale: 1;
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               visible: 0;
+            }
+         }
+         part { name: "background";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "elm.background.progressbar";
+            description {
+               state: "default" 0.0;
+               min: PROGRESSBAR_LIST_PROCESS_WIDTH_INC PROGRESSBAR_LIST_PROCESS_HEIGHT_INC;
+               max: PROGRESSBAR_LIST_PROCESS_WIDTH_INC PROGRESSBAR_LIST_PROCESS_HEIGHT_INC;
+               visible: 1;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               image {
+                  normal: GALLERY_EDC_IMAGE_LIST_PROCESS_01;
+               }
+            }
+            description { state: "pulse" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: GALLERY_EDC_IMAGE_LIST_PROCESS_01;
+               }
+            }
+            PROGRESS_BG_DESC( 01 )
+            PROGRESS_BG_DESC( 02 )
+            PROGRESS_BG_DESC( 03 )
+            PROGRESS_BG_DESC( 04 )
+            PROGRESS_BG_DESC( 05 )
+            PROGRESS_BG_DESC( 06 )
+            PROGRESS_BG_DESC( 07 )
+            PROGRESS_BG_DESC( 08 )
+            PROGRESS_BG_DESC( 09 )
+            PROGRESS_BG_DESC( 10 )
+            PROGRESS_BG_DESC( 11 )
+            PROGRESS_BG_DESC( 12 )
+            PROGRESS_BG_DESC( 13 )
+            PROGRESS_BG_DESC( 14 )
+            PROGRESS_BG_DESC( 15 )
+            PROGRESS_BG_DESC( 16 )
+            PROGRESS_BG_DESC( 17 )
+            PROGRESS_BG_DESC( 18 )
+            PROGRESS_BG_DESC( 19 )
+            PROGRESS_BG_DESC( 20 )
+            PROGRESS_BG_DESC( 21 )
+            PROGRESS_BG_DESC( 22 )
+            PROGRESS_BG_DESC( 23 )
+            PROGRESS_BG_DESC( 24 )
+            PROGRESS_BG_DESC( 25 )
+            PROGRESS_BG_DESC( 26 )
+            PROGRESS_BG_DESC( 27 )
+            PROGRESS_BG_DESC( 28 )
+            PROGRESS_BG_DESC( 29 )
+            PROGRESS_BG_DESC( 30 )
+         }
+      }
+      script {
+         public pulse_state;
+      }
+      programs {
+         program { name: "continue_pulse";
+            script {
+               new Float:state;
+               state = get_float(pulse_state);
+               set_state(PART:"background", "pulse", state);
+               state += 0.01;
+               if( state > 0.30 )
+                  state = 0.01;
+               set_float(pulse_state, state);
+            }
+               after: "delay";
+         }
+         program { name: "delay";
+            action: STATE_SET "pulse" 0.10;
+            target: "background";
+            in: PROGRESSING_DELAY 0.0;
+            after: "continue_pulse";
+         }
+         program { name: "start_pulse";
+            signal: "elm,state,pulse,start";
+            source: "elm";
+            script {
+               set_float(pulse_state, 0.0);
+            }
+            after: "continue_pulse";
+         }
+         program { name: "stop_pulse";
+            signal: "elm,state,pulse,stop";
+            source: "elm";
+            action: ACTION_STOP;
+            target: "continue_pulse";
+            target: "delay";
+            target: "start_pulse";
+            after: "init_pulse";
+         }
+         program { name: "init_pulse";
+            action: STATE_SET "default" 0.0;
+            target: "background";
+         }
+      }
+   }
+*/
diff --git a/res/edc/vp-speedbox-popup.edc b/res/edc/vp-speedbox-popup.edc
new file mode 100644 (file)
index 0000000..fe751fb
--- /dev/null
@@ -0,0 +1,314 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define SPEED_BOX_BG_COLOR 0 0 0 77
+#define SPEED_BOX_PRESS_BG_COLOR 42 137 194 255
+#define SPEED_BOX_LINE_COLOR 153 153 153 178
+
+collections {
+       group {
+               name: "speedbox";
+               parts {
+                       part {
+                               name: "speedbox.bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       image {normal: "white/common/T01-2_popup_bg.png"; border: 10 10 10 10;}
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "speedbox.step.1";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 112 99;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.5 1.0; to: "speedbox.bg";}
+                                       rel2 { relative: 0.5 1.0; to: "speedbox.bg";}
+                                       color: SPEED_BOX_BG_COLOR;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "focus" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       color: SPEED_BOX_PRESS_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "speedbox.step.2";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 112 99;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.5 0.0; to: "speedbox.step.1";}
+                                       rel2 { relative: 0.5 0.0; to: "speedbox.step.1";}
+                                       color: SPEED_BOX_BG_COLOR;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "focus" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       color: SPEED_BOX_PRESS_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "speedbox.step.3";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 112 99;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.5 0.0; to: "speedbox.step.2";}
+                                       rel2 { relative: 0.5 0.0; to: "speedbox.step.2";}
+                                       color: SPEED_BOX_BG_COLOR;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "focus" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       color: SPEED_BOX_PRESS_BG_COLOR;
+                               }
+                       }
+
+                       part {
+                               name: "speedbox.step.1.line";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 110 1;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.5 0.0; to: "speedbox.step.1";}
+                                       rel2 { relative: 0.5 0.0; to: "speedbox.step.1";}
+                                       color: SPEED_BOX_LINE_COLOR;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "speedbox.step.2.line";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 110 1;
+                                       fixed: 1 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.5 0.0; to: "speedbox.step.2";}
+                                       rel2 { relative: 0.5 0.0; to: "speedbox.step.2";}
+                                       color: SPEED_BOX_LINE_COLOR;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "speedbox.step.1.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "speedbox.step.1";}
+                                       rel2 { relative: 1.0 1.0; to: "speedbox.step.1";}
+                                       color: FONT_PLAYBACK_SPEED_BTN_COLOR;
+                                       text {
+                                               font: FONT_PLAYBACK_SPEED_FONT;
+                                               text_class: FONT_PLAYBACK_SPEED_CLASS;
+                                               size: FONT_PLAYBACK_SPEED_BTN_SIZE;
+                                               text: "x2";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "speedbox.step.2.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "speedbox.step.2";}
+                                       rel2 { relative: 1.0 1.0; to: "speedbox.step.2";}
+                                       color: FONT_PLAYBACK_SPEED_BTN_COLOR;
+                                       text {
+                                               font: FONT_PLAYBACK_SPEED_FONT;
+                                               text_class: FONT_PLAYBACK_SPEED_CLASS;
+                                               size: FONT_PLAYBACK_SPEED_BTN_SIZE;
+                                               text: "x3";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "speedbox.step.3.txt";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "speedbox.step.3";}
+                                       rel2 { relative: 1.0 1.0; to: "speedbox.step.3";}
+                                       color: FONT_PLAYBACK_SPEED_BTN_COLOR;
+                                       text {
+                                               font: FONT_PLAYBACK_SPEED_FONT;
+                                               text_class: FONT_PLAYBACK_SPEED_CLASS;
+                                               size: FONT_PLAYBACK_SPEED_BTN_SIZE;
+                                               text: "x4";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+               } /* parts */
+               programs {
+                       program {
+                               signal: "signal.speedbox.visible.on";
+                               source: "*";
+                               after: "set.speedbox.visible.on";
+                       }
+
+                       program {
+                               signal: "signal.speedbox.visible.off";
+                               source: "*";
+                               after: "set.speedbox.visible.off";
+                       }
+
+                       program {
+                               name: "set.speedbox.visible.on";
+                               source: "*";
+                               action: STATE_SET "show" 0.0;
+
+                               target: "speedbox.bg";
+                               target: "speedbox.step.1";
+                               target: "speedbox.step.2";
+                               target: "speedbox.step.3";
+                               target: "speedbox.step.1.line";
+                               target: "speedbox.step.2.line";
+                               target: "speedbox.step.1.txt";
+                               target: "speedbox.step.2.txt";
+                               target: "speedbox.step.3.txt";
+                       }
+
+                       program {
+                               name: "set.speedbox.visible.off";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+
+                               target: "speedbox.bg";
+                               target: "speedbox.step.1";
+                               target: "speedbox.step.2";
+                               target: "speedbox.step.3";
+                               target: "speedbox.step.1.line";
+                               target: "speedbox.step.2.line";
+                               target: "speedbox.step.1.txt";
+                               target: "speedbox.step.2.txt";
+                               target: "speedbox.step.3.txt";
+                       }
+                       program {
+                               signal: "signal.speedbox.set.mode.1";
+                               source: "*";
+                               script {
+                                       set_state(PART:"speedbox.step.1", "focus", 0.0);
+                                       set_state(PART:"speedbox.step.2", "show", 0.0);
+                                       set_state(PART:"speedbox.step.3", "show", 0.0);
+                               }
+                       }
+                       program {
+                               signal: "signal.speedbox.set.mode.2";
+                               source: "*";
+                               script {
+                                       set_state(PART:"speedbox.step.1", "show", 0.0);
+                                       set_state(PART:"speedbox.step.2", "focus", 0.0);
+                                       set_state(PART:"speedbox.step.3", "show", 0.0);
+                               }
+                       }
+                       program {
+                               signal: "signal.speedbox.set.mode.3";
+                               source: "*";
+                               script {
+                                       set_state(PART:"speedbox.step.1", "show", 0.0);
+                                       set_state(PART:"speedbox.step.2", "show", 0.0);
+                                       set_state(PART:"speedbox.step.3", "focus", 0.0);
+                               }
+                       }
+
+               } /* programs */
+       } /* groups */
+} /* collections */
diff --git a/res/edc/vp-toolbar.edc b/res/edc/vp-toolbar.edc
new file mode 100755 (executable)
index 0000000..0a937fb
--- /dev/null
@@ -0,0 +1,1733 @@
+#define ITEM_STATE_ENABLED 0
+#define ITEM_STATE_DISABLED 1
+
+group { name: "elm/toolbar/base/default";
+   images {
+      image: "00_winset_control_toolbar_bg.png" COMP;
+   }
+   parts {
+      part { name: "base";
+         mouse_events: 1;
+         description { state: "default" 0.0;
+            image.normal: "00_winset_control_toolbar_bg.png";
+         }
+      }
+      part { name: "clipper";
+         type: RECT;
+         mouse_events: 0;
+         description {
+            state: "default" 0.0;
+            rel1 {
+               to: "base";
+               offset: 2 2;
+            }
+            rel2 {
+               to: "base";
+               offset: -3 -3;
+            }
+         }
+      }
+      part { name: "elm.swallow.content";
+         clip_to: "clipper";
+         type: SWALLOW;
+         description {
+            state: "default" 0.0;
+            rel1.to: "clipper";
+            rel2.to: "clipper";
+         }
+      }
+      part { name: "event";
+         type: RECT;
+         mouse_events: 1;
+         repeat_events: 1;
+         description { state: "default" 0.0;
+            color: 0 0 0 0;
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/item/default";
+   images {
+      image: "00_winset_toolbar_press.png" COMP;
+   }
+   styles{
+      style { name: "toolbar_style";
+         base: "font=SLP:style=Medium font_size="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC" align=center color="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC" wrap=mixed ellipsis=1 text_class=slp";
+         tag: "br" "\n";
+         tag: "ps" "ps";
+         tag: "hilight" "+ font=SLP:style=Bold";
+         tag: "b" "+ font=SLP:style=Bold";
+         tag: "tab" "\t";
+      }
+   }
+
+   data.item: "transition_animation_on" "1";
+   script {
+      public item_state = ITEM_STATE_ENABLED;
+   }
+   parts {
+      part { name: "bg";
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            visible: 0;
+            color: 255 255 255 0;
+            rel1 {
+               relative: 0.0 0.0;
+               offset: 4 4;
+            }
+            rel2 {
+               relative: 1.0 1.0;
+               offset: -5 -5;
+            }
+            image {
+               normal: "00_winset_toolbar_press.png";
+               border: 3 3 3 3;
+            }
+            image.middle: SOLID;
+            fill.smooth: 0;
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: 255 255 255 255;
+         }
+         description { state: "disabled" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+            color: 255 255 255 0;
+         }
+      }
+      part { name: "padding_left_top";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            align: 0.0 0.0;
+            rel2.relative: 0.0 0.0;
+            min: 10 8;
+            fixed: 1 1;
+            visible: 1;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "padding_right_bottom";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            align: 1.0 1.0;
+            rel1.relative: 1.0 1.0;
+            min: 10 5;
+            fixed: 1 1;
+            visible: 1;
+            color: 0 0 0 0;
+         }
+      }
+      part {
+         name: "icon_rect";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            min: 0 0;
+            fixed: 0 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_left_top";
+            }
+            align: 0.5 0.0;
+            color: 0 0 0 0;
+         }
+         description { state: "visible" 0.0;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            fixed: 0 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_left_top";
+            }
+            align: 0.5 0.0;
+            color: 0 0 0 0;
+         }
+         description { state: "icononly" 0.0;
+            inherit: "default" 0.0;
+         }
+      }
+      part { name: "padding_after_icon";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0; //when only icon or no icon is there
+            align: 0.0 0.0;
+            rel1 {
+               relative: 0.0 1.0;
+               to: "icon_rect";
+            }
+            rel2.to: "icon_rect";
+            fixed: 0 1;
+            min: 0 0;
+            color: 0 0 0 0;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+         }
+         description { state: "icononly" 0.0;
+            inherit: "default" 0.0;
+         }
+      }
+      part { name: "padding_before_text";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0; //when only icon or no icon is there
+            align: 0.5 1.0;
+            rel1 {
+               relative: 1.0 0.0;
+               to_x: "padding_left_top";
+               to_y: "elm.text";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_right_bottom";
+               to_y: "elm.text";
+            }
+            fixed: 0 1;
+            min: 0 0;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "elm.swallow.icon";
+         type: SWALLOW;
+         scale: 1;
+         clip_to: "elm.icon.clipper";
+         description { state: "default" 0.0;
+            visible: 0;
+            align: 0.5 0.0;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_left_top";
+            }
+            fixed: 0 1;
+         }
+         description { state: "visible" 0.0;
+            fixed: 0 1;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_before_text";
+            }
+            aspect: 1.0 1.0;
+            aspect_preference: HORIZONTAL;
+         }
+         description { state: "icononly" 0.0;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to: "padding_right_bottom";
+            }
+            aspect: 1.0 1.0;
+            aspect_preference: HORIZONTAL;
+         }
+      }
+      part { name: "elm.swallow.icon_new";
+         type: SWALLOW;
+         scale: 1;
+         clip_to: "elm.icon_new.clipper";
+         description { state: "default" 0.0;
+            visible: 0;
+            align: 0.5 0.0;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_left_top";
+            }
+            fixed: 0 1;
+         }
+         description { state: "visible" 0.0;
+            fixed: 0 1;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_before_text";
+            }
+            aspect: 1.0 1.0;
+            aspect_preference: HORIZONTAL;
+         }
+         description { state: "icononly" 0.0;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to: "padding_right_bottom";
+            }
+            aspect: 1.0 1.0;
+            aspect_preference: HORIZONTAL;
+         }
+      }
+      part { name: "elm.text";
+         type: TEXTBLOCK;
+         mouse_events: 0;
+         scale: 1;
+         clip_to: "elm.text.clipper";
+         description { state: "default" 0.0;
+            visible: 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "padding_left_top";
+               to_y: "padding_after_icon";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to: "padding_right_bottom";
+            }
+            color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC;
+            fixed: 1 1;
+            text {
+               style: "toolbar_style";
+               min: 0 1;
+            }
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "clicked" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+      }
+      part { name: "elm.text_new";
+         type: TEXTBLOCK;
+         mouse_events: 0;
+         scale: 1;
+         clip_to: "elm.text_new.clipper";
+         description { state: "default" 0.0;
+            visible: 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "padding_left_top";
+               to_y: "padding_after_icon";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to: "padding_right_bottom";
+            }
+            color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC;
+            fixed: 1 1;
+            text {
+               style: "toolbar_style";
+               min: 0 1;
+            }
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "clicked" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+      }
+      part { name: "elm.text.clipper";
+         type: RECT;
+         description { state: "default" 0.0;
+            color: 255 255 255 255;
+         }
+         description { state: "animation" 0.0;
+            color: 255 255 255 0;
+         }
+         description { state: "disabled" 0.0;
+            color: 255 255 255 153;
+         }
+      }
+      part { name: "elm.text_new.clipper";
+         type: RECT;
+         description { state: "default" 0.0;
+            color: 255 255 255 0;
+         }
+         description { state: "animation" 0.0;
+            color: 255 255 255 255;
+         }
+         description { state: "disabled" 0.0;
+            color: 255 255 255 153;
+         }
+      }
+      part { name: "elm.icon.clipper";
+         type: RECT;
+         description { state: "default" 0.0;
+            color: 255 255 255 255;
+         }
+         description { state: "animation" 0.0;
+            color: 255 255 255 0;
+         }
+         description { state: "disabled" 0.0;
+            color: 255 255 255 153;
+         }
+      }
+      part { name: "elm.icon_new.clipper";
+         type: RECT;
+         description { state: "default" 0.0;
+            color: 255 255 255 0;
+         }
+         description { state: "animation" 0.0;
+            color: 255 255 255 255;
+         }
+         description { state: "disabled" 0.0;
+            color: 255 255 255 153;
+         }
+      }
+      part { name: "event";
+         type: RECT;
+         mouse_events: 1;
+         ignore_flags: ON_HOLD;
+         description { state: "default" 0.0;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "event2";
+         type: RECT;
+         mouse_events: 1;
+         repeat_events: 1;
+         description { state: "default" 0.0;
+            color: 0 0 0 0;
+         }
+      }
+   }
+   programs {
+      program { name: "pressed";
+         signal:  "mouse,down,1";
+         source:  "event";
+         script {
+            if (get_int(item_state) != ITEM_STATE_DISABLED)
+              set_state(PART:"bg", "selected", 0.0);
+         }
+         transition: LINEAR 0.2;
+      }
+      program { name: "unpressed";
+         signal:  "mouse,up,1";
+         source:  "event2";
+         action:  STATE_SET "default" 0.0;
+         target:  "bg";
+         transition: LINEAR 0.1;
+      }
+      program { name: "go";
+         signal:  "mouse,up,1";
+         source:  "event";
+         action:  SIGNAL_EMIT "elm,action,click" "elm";
+      }
+      program { name: "mouse,in";
+         signal:  "mouse,in";
+         source:  "event";
+         action:  SIGNAL_EMIT "elm,mouse,in" "elm";
+      }
+      program { name: "mouse,out";
+         signal:  "mouse,out";
+         source:  "event";
+         action:  SIGNAL_EMIT "elm,mouse,out" "elm";
+      }
+      program { name: "disable";
+         signal: "elm,state,disabled";
+         source: "elm";
+         script {
+            set_int(item_state, ITEM_STATE_DISABLED);
+            set_state(PART:"bg", "disabled", 0.0);
+            set_state(PART:"elm.text.clipper", "disabled", 0.0);
+            set_state(PART:"elm.icon.clipper", "disabled", 0.0);
+            run_program(PROGRAM:"label_set,animation,done");
+            run_program(PROGRAM:"icon_set,animation,done");
+         }
+      }
+      program { name: "enable";
+         signal: "elm,state,enabled";
+         source: "elm";
+         script {
+            set_int(item_state, ITEM_STATE_ENABLED);
+            set_state(PART:"bg", "default", 0.0);
+            set_state(PART:"elm.text.clipper", "default", 0.0);
+            set_state(PART:"elm.icon.clipper", "default", 0.0);
+            run_program(PROGRAM:"label_set,animation,done");
+            run_program(PROGRAM:"icon_set,animation,done");
+         }
+      }
+      program { name: "label_set,animation,forward";
+         signal: "elm,state,label_set,forward";
+         source: "elm";
+         after: "label_set,animation";
+      }
+      program { name: "label_set,animation,backward";
+         signal: "elm,state,label_set,backward";
+         source: "elm";
+         after: "label_set,animation";
+      }
+      program { name: "label_set,animation";
+         signal: "elm,state,label_set";
+         source: "elm";
+         action: STATE_SET "animation" 0.0;
+         target: "elm.text.clipper";
+         target: "elm.text_new.clipper";
+         transition: LINEAR 0.2;
+         after: "label_set,animation,done";
+      }
+      program { name: "label_set,animation,done";
+         action: SIGNAL_EMIT "elm,state,label_set,done" "elm";
+      }
+      program { name: "label,reset";
+         signal: "elm,state,label,reset";
+         source: "elm";
+         script {
+            set_state(PART:"elm.text_new.clipper", "default", 0.0);
+            if (get_int(item_state) != ITEM_STATE_DISABLED)
+              set_state(PART:"elm.text.clipper", "default", 0.0);
+            else
+              set_state(PART:"elm.text.clipper", "disabled", 0.0);
+         }
+      }
+      program { name: "icon_set,animation,forward";
+         signal: "elm,state,icon_set,forward";
+         source: "elm";
+         after: "icon_set,animation";
+      }
+      program { name: "icon_set,animation,backward";
+         signal: "elm,state,icon_set,backward";
+         source: "elm";
+         after: "icon_set,animation";
+      }
+      program { name: "icon_set,animation";
+         signal: "elm,state,icon_set";
+         source: "elm";
+         action: STATE_SET "animation" 0.0;
+         target: "elm.icon.clipper";
+         target: "elm.icon_new.clipper";
+         transition: LINEAR 0.2;
+         after: "icon_set,animation,done";
+      }
+      program { name: "icon_set,animation,done";
+         action: SIGNAL_EMIT "elm,state,icon_set,done" "elm";
+      }
+      program { name: "icon,reset";
+         signal: "elm,state,icon,reset";
+         source: "elm";
+         script {
+            set_state(PART:"elm.icon_new.clipper", "default", 0.0);
+            if (get_int(item_state) != ITEM_STATE_DISABLED)
+              set_state(PART:"elm.icon.clipper", "default", 0.0);
+            else
+              set_state(PART:"elm.icon.clipper", "disabled", 0.0);
+         }
+      }
+      program { name: "text_show";
+         signal: "elm,state,text,visible";
+         source: "elm";
+         script {
+            new st[31];
+            new Float:vl;
+            get_state(PART:"elm.swallow.icon", st, 30, vl);
+            if (!strcmp(st, "icononly"))
+              {
+                 set_state(PART:"elm.swallow.icon", "visible", 0.0);
+                 set_state(PART:"icon_rect", "visible", 0.0);
+                 set_state(PART:"padding_after_icon", "visible", 0.0);
+              }
+            set_state(PART:"elm.text", "visible", 0.0);
+         }
+      }
+      program { name: "text_hide";
+         signal: "elm,state,text,hidden";
+         source: "elm";
+         script {
+            new st[31];
+            new Float:vl;
+            get_state(PART:"elm.swallow.icon", st, 30, vl);
+            if (!strcmp(st, "visible"))
+              {
+                 set_state(PART:"elm.swallow.icon", "icononly", 0.0);
+                 set_state(PART:"icon_rect", "icononly", 0.0);
+                 set_state(PART:"padding_after_icon", "icononly", 0.0);
+              }
+            set_state(PART:"elm.text", "default", 0.0);
+         }
+      }
+      program { name: "icon_show";
+         signal: "elm,state,icon,visible";
+         source: "elm";
+         script {
+            new st[31];
+            new Float:vl;
+            get_state(PART:"elm.text", st, 30, vl);
+            if (!strcmp(st, "visible"))
+              {
+                 set_state(PART:"elm.swallow.icon", "visible", 0.0);
+                 set_state(PART:"icon_rect", "visible", 0.0);
+                 set_state(PART:"padding_after_icon", "visible", 0.0);
+              }
+            else
+              {
+                 set_state(PART:"elm.swallow.icon", "icononly", 0.0);
+                 set_state(PART:"icon_rect", "icononly", 0.0);
+                 set_state(PART:"padding_after_icon", "icononly", 0.0);
+              }
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/item/item_horizontal";
+   inherit: "elm/toolbar/item/default";
+   script {
+      public item_state = ITEM_STATE_ENABLED;
+   }
+   parts {
+      part { name: "icon_rect";
+         description { state: "default" 0.0;
+            fixed: 1 0;
+            align: 0.0 0.5;
+         }
+         description { state: "visible" 0.0;
+            fixed: 1 0;
+            rel2 {
+               relative: 1.0 0.0;
+               to_x: "padding_left_top";
+               to_y: "padding_right_bottom";
+            }
+            align: 0.0 0.5;
+         }
+      }
+      part { name: "padding_after_icon";
+         description { state: "default" 0.0; //when only icon or no icon is there
+            rel1.relative: 1.0 0.0;
+            fixed: 1 1;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            min: 6 0;
+         }
+      }
+      part { name: "padding_before_text";
+         description { state: "default" 0.0; //when only icon or no icon is there
+            align: 1.0 0.5;
+            rel1 {
+               relative: 0.0 1.0;
+               to_x: "elm.text";
+               to_y: "padding_left_top";
+            }
+            rel2 {
+               to_x: "elm.text";
+               to_y: "padding_right_bottom";
+            }
+            fixed: 1 0;
+            min: 6 0;
+         }
+      }
+      part { name: "elm.swallow.icon";
+         description { state: "default" 0.0;
+            align: 0.0 0.5;
+            rel2 {
+               relative: 1.0 0.0;
+               to_x: "padding_left_top";
+               to_y: "padding_right_bottom";
+            }
+            fixed: 1 0;
+         }
+         description { state: "visible" 0.0;
+            fixed: 1 0;
+            align: 1.0 0.5;
+            rel1 {
+               relative: 0.0 1.0;
+               to_x: "padding_before_text";
+               to_y: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_before_text";
+               to_y: "padding_right_bottom";
+            }
+            aspect_preference: VERTICAL;
+         }
+         description { state: "icononly" 0.0;
+            aspect_preference: VERTICAL;
+         }
+      }
+      part { name: "elm.swallow.icon_new";
+         description { state: "default" 0.0;
+            align: 0.0 0.5;
+            rel2 {
+               relative: 1.0 0.0;
+               to_x: "padding_left_top";
+               to_y: "padding_right_bottom";
+            }
+            fixed: 1 0;
+         }
+         description { state: "visible" 0.0;
+            fixed: 1 0;
+            align: 1.0 0.5;
+            rel1 {
+               relative: 0.0 1.0;
+               to_x: "padding_before_text";
+               to_y: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_before_text";
+               to_y: "padding_right_bottom";
+            }
+            aspect_preference: VERTICAL;
+         }
+         description { state: "icononly" 0.0;
+            aspect_preference: VERTICAL;
+         }
+      }
+      part { name: "elm.text";
+         type: TEXTBLOCK;
+         description { state: "default" 0.0;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "padding_after_icon";
+               to_y: "padding_left_top";
+            }
+            text {
+               style: "toolbar_style";
+               min: 1 0;
+            }
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "clicked" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+      }
+      part { name: "elm.text_new";
+         type: TEXTBLOCK;
+         description { state: "default" 0.0;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "padding_after_icon";
+               to_y: "padding_left_top";
+            }
+            text {
+               style: "toolbar_style";
+               min: 1 0;
+            }
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "clicked" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/separator/default";
+   parts {
+      part { name: "base";
+         type: RECT;
+         description { state: "default" 0.0;
+            min: 3 1;
+            max: 3 9999;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "separator_left";
+         type: RECT;
+         description { state: "default" 0.0;
+            min: 1 1;
+            max: 1 9999;
+            fixed: 1 1;
+            rel1 {
+                relative: 0.0 0.1;
+                offset: 0 0;
+            }
+            rel2 {
+                relative: 0.0 0.9;
+                offset: 1 0;
+            }
+            color: TOOLBAR_ITEM_SEPARATOR_LEFT_COLOR_INC;
+         }
+      }
+      part { name: "separator_middle";
+         type: RECT;
+         description { state: "default" 0.0;
+            min: 1 1;
+            max: 1 9999;
+            fixed: 1 1;
+            rel1 {
+                relative: 1.0 0.0;
+                offset: 0 0;
+                to: "separator_left";
+            }
+            rel2 {
+                relative: 1.0 1.0;
+                offset: 1 -1;
+                to: "separator_left";
+            }
+            color: TOOLBAR_ITEM_SEPARATOR_MIDDLE_COLOR_INC;
+         }
+      }
+      part { name: "separator_right";
+         type: RECT;
+         description { state: "default" 0.0;
+            min: 1 1;
+            max: 1 9999;
+            fixed: 1 1;
+            rel1 {
+                relative: 1.0 0.0;
+                offset: 0 0;
+                to: "separator_middle";
+            }
+            rel2 {
+                relative: 1.0 1.0;
+                offset: 1 -1;
+                to: "separator_middle";
+            }
+            color: TOOLBAR_ITEM_SEPARATOR_RIGHT_COLOR_INC;
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/object/default";
+   parts {
+      part { name: "elm.swallow.object"; // object group
+         type: SWALLOW;
+         description {
+             state: "default" 0.0;
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/base/tabbar";
+   alias: "elm/toolbar/base/tabbar/item_horizontal";
+   images {
+      image: "00_winset_control_tabbar_bg_top.png" COMP;
+   }
+
+   parts {
+      part { name: "base";
+         mouse_events: 1;
+         description { state: "default" 0.0;
+            image.normal: "00_winset_control_tabbar_bg_top.png";
+         }
+      }
+      part { name: "clipper";
+         type: RECT;
+         mouse_events: 0;
+         description {
+            state: "default" 0.0;
+            rel1 {
+               to: "base";
+               offset: 2 2;
+            }
+            rel2 {
+               to: "base";
+               offset: -3 -3;
+            }
+         }
+      }
+      part { name: "elm.swallow.content";
+         clip_to: "clipper";
+         type: SWALLOW;
+         description {
+            state: "default" 0.0;
+            rel1.to: "clipper";
+            rel2.to: "clipper";
+         }
+      }
+      part { name: "event";
+         type: RECT;
+         mouse_events: 1;
+         repeat_events: 1;
+         description { state: "default" 0.0;
+            color: 0 0 0 0;
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/item/tabbar";
+   images {
+      image: "00_winset_tabbar_focus.png" COMP;
+   }
+
+   data.item: "transition_animation_on" "1";
+   script {
+      public item_state = ITEM_STATE_ENABLED;
+   }
+   parts {
+      part { name: "bg";
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            visible: 0;
+            color: 255 255 255 0;
+            image {
+               normal: "00_winset_tabbar_focus.png";
+            }
+            image.middle: SOLID;
+            fill.smooth: 0;
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: 255 255 255 255;
+         }
+         description { state: "disabled" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+            color: 255 255 255 0;
+         }
+      }
+      part { name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel2.relative: 0.0 0.0;
+               min: 10 8;
+               fixed: 1 1;
+               visible: 1;
+               color: 0 0 0 0;
+            }
+         }
+      part { name: "padding_right_bottom";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            align: 1.0 1.0;
+            rel1.relative: 1.0 1.0;
+            min: 10 5;
+            fixed: 1 1;
+            visible: 1;
+            color: 0 0 0 0;
+         }
+      }
+      part {
+         name: "icon_rect";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            min: 0 0;
+            fixed: 0 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_left_top";
+            }
+            align: 0.5 0.0;
+            color: 0 0 0 0;
+         }
+         description { state: "visible" 0.0;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            fixed: 0 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_left_top";
+            }
+            align: 0.5 0.0;
+            color: 0 0 0 0;
+         }
+         description { state: "icononly" 0.0;
+            inherit: "default" 0.0;
+         }
+      }
+      part { name: "padding_after_icon";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0; //when only icon or no icon is there
+            align: 0.0 0.0;
+            rel1 {
+               relative: 0.0 1.0;
+               to: "icon_rect";
+            }
+            rel2.to: "icon_rect";
+            fixed: 0 1;
+            min: 0 0;
+            color: 0 0 0 0;
+         }
+         description { state: "visible" 0.0;
+            align: 0.0 0.0;
+            rel1 {
+               relative: 0.0 1.0;
+               to: "icon_rect";
+            }
+            rel2.to: "icon_rect";
+            fixed: 0 1;
+            min: 0 0;
+            color: 0 0 0 0;
+         }
+         description { state: "icononly" 0.0;
+            inherit: "default" 0.0;
+         }
+      }
+      part { name: "padding_before_text";
+         type: RECT;
+         scale: 1;
+         mouse_events: 0;
+         description { state: "default" 0.0; //when only icon or no icon is there
+            align: 0.5 1.0;
+            rel1 {
+               relative: 1.0 0.0;
+               to_x: "padding_left_top";
+               to_y: "elm.text";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_right_bottom";
+               to_y: "elm.text";
+            }
+            fixed: 0 1;
+            min: 0 0;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "elm.swallow.icon";
+         type: SWALLOW;
+         scale: 1;
+         clip_to: "elm.icon.clipper";
+         description { state: "default" 0.0;
+            visible: 0;
+            align: 0.5 0.0;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_left_top";
+            }
+            fixed: 0 1;
+         }
+         description { state: "visible" 0.0;
+            fixed: 0 1;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_before_text";
+            }
+            aspect: 1.0 1.0;
+            aspect_preference: HORIZONTAL;
+         }
+         description { state: "icononly" 0.0;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to: "padding_right_bottom";
+            }
+            aspect: 1.0 1.0;
+            aspect_preference: HORIZONTAL;
+         }
+      }
+      part { name: "elm.swallow.icon_new";
+         type: SWALLOW;
+         scale: 1;
+         clip_to: "elm.icon_new.clipper";
+         description { state: "default" 0.0;
+            visible: 0;
+            align: 0.5 0.0;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_left_top";
+            }
+            fixed: 0 1;
+         }
+         description { state: "visible" 0.0;
+            fixed: 0 1;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_right_bottom";
+               to_y: "padding_before_text";
+            }
+            aspect: 1.0 1.0;
+            aspect_preference: HORIZONTAL;
+         }
+         description { state: "icononly" 0.0;
+            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;
+            rel1 {
+               relative: 1.0 1.0;
+               to: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to: "padding_right_bottom";
+            }
+            aspect: 1.0 1.0;
+            aspect_preference: HORIZONTAL;
+         }
+      }
+      part { name: "elm.text";
+         type: TEXTBLOCK;
+         mouse_events: 0;
+         scale: 1;
+         clip_to: "elm.text.clipper";
+         description { state: "default" 0.0;
+            visible: 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "padding_left_top";
+               to_y: "padding_after_icon";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to: "padding_right_bottom";
+            }
+            color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC;
+            fixed: 1 1;
+            text {
+               style: "toolbar_style";
+               min: 0 1;
+            }
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "clicked" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+      }
+      part { name: "elm.text_new";
+         type: TEXTBLOCK;
+         mouse_events: 0;
+         scale: 1;
+         clip_to: "elm.text_new.clipper";
+         description { state: "default" 0.0;
+            visible: 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "padding_left_top";
+               to_y: "padding_after_icon";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to: "padding_right_bottom";
+            }
+            color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC;
+            fixed: 1 1;
+            text {
+               style: "toolbar_style";
+               min: 0 1;
+            }
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "clicked" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+      }
+      part { name: "elm.text.clipper";
+         type: RECT;
+         description { state: "default" 0.0;
+            color: 255 255 255 255;
+         }
+         description { state: "animation" 0.0;
+            color: 255 255 255 0;
+         }
+         description { state: "disabled" 0.0;
+            color: 255 255 255 153;
+         }
+      }
+      part { name: "elm.text_new.clipper";
+         type: RECT;
+         description { state: "default" 0.0;
+            color: 255 255 255 0;
+         }
+         description { state: "animation" 0.0;
+            color: 255 255 255 255;
+         }
+         description { state: "disabled" 0.0;
+            color: 255 255 255 153;
+         }
+      }
+      part { name: "elm.icon.clipper";
+         type: RECT;
+         description { state: "default" 0.0;
+            color: 255 255 255 255;
+         }
+         description { state: "animation" 0.0;
+            color: 255 255 255 0;
+         }
+         description { state: "disabled" 0.0;
+            color: 255 255 255 153;
+         }
+      }
+      part { name: "elm.icon_new.clipper";
+         type: RECT;
+         description { state: "default" 0.0;
+            color: 255 255 255 0;
+         }
+         description { state: "animation" 0.0;
+            color: 255 255 255 255;
+         }
+         description { state: "disabled" 0.0;
+            color: 255 255 255 153;
+         }
+      }
+      part { name: "event";
+         type: RECT;
+         mouse_events: 1;
+         ignore_flags: ON_HOLD;
+         description { state: "default" 0.0;
+            color: 0 0 0 0;
+         }
+      }
+   }
+   programs {
+      program { name: "go_active";
+         signal:  "elm,state,selected";
+         source:  "elm";
+         action:  STATE_SET "selected" 0.0;
+         target:  "bg";
+         transition: LINEAR 0.2;
+      }
+      program { name: "go_passive";
+         signal:  "elm,state,unselected";
+         source:  "elm";
+         action:  STATE_SET "default" 0.0;
+         target:  "bg";
+         transition: LINEAR 0.1;
+      }/*
+         program { name: "pressed";
+         signal:  "mouse,down,1";
+         source:  "event";
+         action:  STATE_SET "selected" 0.0;
+         target:  "bg";
+         target:  "elm.text";
+         target:  "elm.text_new";
+         transition: LINEAR 0.2;
+      }
+      program { name: "unpressed";
+         signal:  "mouse,up,1";
+         source:  "event";
+         action:  STATE_SET "default" 0.0;
+         target:  "bg";
+         target:  "elm.text";
+         target:  "elm.text_new";
+         transition: LINEAR 0.1;
+      }*/
+      program { name: "go";
+         signal:  "mouse,up,1";
+         source:  "event";
+         action:  SIGNAL_EMIT "elm,action,click" "elm";
+      }
+      program { name: "mouse,in";
+         signal:  "mouse,in";
+         source:  "event";
+         action:  SIGNAL_EMIT "elm,mouse,in" "elm";
+      }
+      program { name: "mouse,out";
+         signal:  "mouse,out";
+         source:  "event";
+         action:  SIGNAL_EMIT "elm,mouse,out" "elm";
+      }
+      program { name: "disable";
+         signal: "elm,state,disabled";
+         source: "elm";
+         script {
+            set_int(item_state, ITEM_STATE_DISABLED);
+            set_state(PART:"bg", "disabled", 0.0);
+            set_state(PART:"elm.text.clipper", "disabled", 0.0);
+            set_state(PART:"elm.icon.clipper", "disabled", 0.0);
+            run_program(PROGRAM:"label_set,animation,done");
+            run_program(PROGRAM:"icon_set,animation,done");
+         }
+      }
+      program { name: "enable";
+         signal: "elm,state,enabled";
+         source: "elm";
+         script {
+            set_int(item_state, ITEM_STATE_ENABLED);
+            set_state(PART:"bg", "default", 0.0);
+            set_state(PART:"elm.text.clipper", "default", 0.0);
+            set_state(PART:"elm.icon.clipper", "default", 0.0);
+            run_program(PROGRAM:"label_set,animation,done");
+            run_program(PROGRAM:"icon_set,animation,done");
+         }
+      }
+      program { name: "label_set,animation,forward";
+         signal: "elm,state,label_set,forward";
+         source: "elm";
+         after: "label_set,animation";
+      }
+      program { name: "label_set,animation,backward";
+         signal: "elm,state,label_set,backward";
+         source: "elm";
+         after: "label_set,animation";
+      }
+      program { name: "label_set,animation";
+         signal: "elm,state,label_set";
+         source: "elm";
+         action: STATE_SET "animation" 0.0;
+         target: "elm.text.clipper";
+         target: "elm.text_new.clipper";
+         transition: LINEAR 0.2;
+         after: "label_set,animation,done";
+      }
+      program { name: "label_set,animation,done";
+         action: SIGNAL_EMIT "elm,state,label_set,done" "elm";
+      }
+      program { name: "label,reset";
+         signal: "elm,state,label,reset";
+         source: "elm";
+         script {
+            set_state(PART:"elm.text_new.clipper", "default", 0.0);
+            if (get_int(item_state) != ITEM_STATE_DISABLED)
+              set_state(PART:"elm.text.clipper", "default", 0.0);
+            else
+              set_state(PART:"elm.text.clipper", "disabled", 0.0);
+         }
+      }
+      program { name: "icon_set,animation,forward";
+         signal: "elm,state,icon_set,forward";
+         source: "elm";
+         after: "icon_set,animation";
+      }
+      program { name: "icon_set,animation,backward";
+         signal: "elm,state,icon_set,backward";
+         source: "elm";
+         after: "icon_set,animation";
+      }
+      program { name: "icon_set,animation";
+         signal: "elm,state,icon_set";
+         source: "elm";
+         action: STATE_SET "animation" 0.0;
+         target: "elm.icon.clipper";
+         target: "elm.icon_new.clipper";
+         transition: LINEAR 0.2;
+         after: "icon_set,animation,done";
+      }
+      program { name: "icon_set,animation,done";
+         action: SIGNAL_EMIT "elm,state,icon_set,done" "elm";
+      }
+      program { name: "icon,reset";
+         signal: "elm,state,icon,reset";
+         source: "elm";
+         script {
+            set_state(PART:"elm.icon_new.clipper", "default", 0.0);
+            if (get_int(item_state) != ITEM_STATE_DISABLED)
+              set_state(PART:"elm.icon.clipper", "default", 0.0);
+            else
+              set_state(PART:"elm.icon.clipper", "disabled", 0.0);
+         }
+      }
+      program { name: "text_show";
+         signal: "elm,state,text,visible";
+         source: "elm";
+         script {
+            new st[31];
+            new Float:vl;
+            get_state(PART:"elm.swallow.icon", st, 30, vl);
+            if (!strcmp(st, "icononly"))
+              {
+                 set_state(PART:"elm.swallow.icon", "visible", 0.0);
+                 set_state(PART:"icon_rect", "visible", 0.0);
+                 set_state(PART:"padding_after_icon", "visible", 0.0);
+              }
+            set_state(PART:"elm.text", "visible", 0.0);
+         }
+      }
+      program { name: "text_hide";
+         signal: "elm,state,text,hidden";
+         source: "elm";
+         script {
+            new st[31];
+            new Float:vl;
+            get_state(PART:"elm.swallow.icon", st, 30, vl);
+            if (!strcmp(st, "visible"))
+              {
+                 set_state(PART:"elm.swallow.icon", "icononly", 0.0);
+                 set_state(PART:"icon_rect", "icononly", 0.0);
+                 set_state(PART:"padding_after_icon", "icononly", 0.0);
+              }
+            set_state(PART:"elm.text", "default", 0.0);
+         }
+      }
+      program { name: "icon_show";
+         signal: "elm,state,icon,visible";
+         source: "elm";
+         script {
+            new st[31];
+            new Float:vl;
+            get_state(PART:"elm.text", st, 30, vl);
+            if (!strcmp(st, "visible"))
+              {
+                 set_state(PART:"elm.swallow.icon", "visible", 0.0);
+                 set_state(PART:"icon_rect", "visible", 0.0);
+                 set_state(PART:"padding_after_icon", "visible", 0.0);
+              }
+            else
+              {
+                 set_state(PART:"elm.swallow.icon", "icononly", 0.0);
+                 set_state(PART:"icon_rect", "icononly", 0.0);
+                 set_state(PART:"padding_after_icon", "icononly", 0.0);
+              }
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/item/tabbar/item_horizontal";
+   inherit: "elm/toolbar/item/tabbar";
+   script {
+      public item_state = ITEM_STATE_ENABLED;
+   }
+   parts {
+      part { name: "icon_rect";
+         description { state: "default" 0.0;
+            fixed: 1 0;
+            align: 0.0 0.5;
+         }
+         description { state: "visible" 0.0;
+            fixed: 1 0;
+            rel2 {
+               relative: 1.0 0.0;
+               to_x: "padding_left_top";
+               to_y: "padding_right_bottom";
+            }
+            align: 0.0 0.5;
+         }
+      }
+      part { name: "padding_after_icon";
+         description { state: "default" 0.0; //when only icon or no icon is there
+            rel1.relative: 1.0 0.0;
+            fixed: 1 1;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            min: 6 0;
+         }
+      }
+      part { name: "padding_before_text";
+         description { state: "default" 0.0; //when only icon or no icon is there
+            align: 1.0 0.5;
+            rel1 {
+               relative: 0.0 1.0;
+               to_x: "elm.text";
+               to_y: "padding_left_top";
+            }
+            rel2 {
+               to_x: "elm.text";
+               to_y: "padding_right_bottom";
+            }
+            fixed: 1 0;
+            min: 6 0;
+         }
+      }
+      part { name: "elm.swallow.icon";
+         description { state: "default" 0.0;
+            align: 0.0 0.5;
+            rel2 {
+               relative: 1.0 0.0;
+               to_x: "padding_left_top";
+               to_y: "padding_right_bottom";
+            }
+            fixed: 1 0;
+         }
+         description { state: "visible" 0.0;
+            fixed: 1 0;
+            align: 1.0 0.5;
+            rel1 {
+               relative: 0.0 1.0;
+               to_x: "padding_before_text";
+               to_y: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_before_text";
+               to_y: "padding_right_bottom";
+            }
+            aspect_preference: VERTICAL;
+         }
+         description { state: "icononly" 0.0;
+            aspect_preference: VERTICAL;
+         }
+      }
+      part { name: "elm.swallow.icon_new";
+         description { state: "default" 0.0;
+            align: 0.0 0.5;
+            rel2 {
+               relative: 1.0 0.0;
+               to_x: "padding_left_top";
+               to_y: "padding_right_bottom";
+            }
+            fixed: 1 0;
+         }
+         description { state: "visible" 0.0;
+            fixed: 1 0;
+            align: 1.0 0.5;
+            rel1 {
+               relative: 0.0 1.0;
+               to_x: "padding_before_text";
+               to_y: "padding_left_top";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "padding_before_text";
+               to_y: "padding_right_bottom";
+            }
+            aspect_preference: VERTICAL;
+         }
+         description { state: "icononly" 0.0;
+            aspect_preference: VERTICAL;
+         }
+      }
+      part { name: "elm.text";
+         type: TEXTBLOCK;
+         description { state: "default" 0.0;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "padding_after_icon";
+               to_y: "padding_left_top";
+            }
+            text {
+               style: "toolbar_style";
+               min: 1 0;
+            }
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "clicked" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+      }
+      part { name: "elm.text_new";
+         type: TEXTBLOCK;
+         description { state: "default" 0.0;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "padding_after_icon";
+               to_y: "padding_left_top";
+            }
+            text {
+               style: "toolbar_style";
+               min: 1 0;
+            }
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description { state: "clicked" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/base/naviframe";
+   parts {
+      part { name: "base";
+         mouse_events: 1;
+         description { state: "default" 0.0;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "clipper";
+         type: RECT;
+         mouse_events: 0;
+         description {
+            state: "default" 0.0;
+            rel1 {
+               to: "base";
+               offset: 2 2;
+            }
+            rel2 {
+               to: "base";
+               offset: -3 -3;
+            }
+         }
+      }
+      part { name: "elm.swallow.content";
+         clip_to: "clipper";
+         type: SWALLOW;
+         description {
+            state: "default" 0.0;
+            rel1.to: "clipper";
+            rel2.to: "clipper";
+         }
+      }
+      part { name: "event";
+         type: RECT;
+         mouse_events: 1;
+         repeat_events: 1;
+         description { state: "default" 0.0;
+            color: 0 0 0 0;
+         }
+      }
+   }
+}
+
+group { name: "elm/toolbar/object/naviframe";
+   parts {
+      part { name: "elm.swallow.object"; // object group
+         type: SWALLOW;
+         description {
+             state: "default" 0.0;
+                        rel1.offset: 5 0;
+                        rel2.offset: -6 -1;
+         }
+      }
+   }
+}
+
diff --git a/res/edc/vp-volume-popup.edc b/res/edc/vp-volume-popup.edc
new file mode 100644 (file)
index 0000000..6229e06
--- /dev/null
@@ -0,0 +1,318 @@
+#include "image_res.edc"\r
+\r
+#define BG_WIDTH 126\r
+\r
+collections {\r
+       group {\r
+               name: "volume";\r
+               parts {\r\r
+                       part    {\r
+                               name: "volume.bg";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                                       color: 0 0 0 128;\r
+                               }\r
+                       }\r
+\r
+                       part    {\r
+                               name: "volume.left";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 10 0;\r
+                                       fixed: 1 0;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0; }\r
+                                       rel2 { relative: 0.0 1.0; }\r
+                                       color: 255 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part    {\r
+                               name: "volume.right";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 10 0;\r
+                                       fixed: 1 0;\r
+                                       align: 1.0 0.0;\r
+                                       rel1 { relative: 1.0 0.0; }\r
+                                       rel2 { relative: 1.0 1.0; }\r
+                                       color: 255 0 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part    {\r
+                               name: "volume.icon.1";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 1.0 0.5; to_x: "volume.left"; }\r
+                                       rel2 { relative: 1.0 0.5; to_x: "volume.left"; }\r
+                                       image { normal: "volume/T01-2_volume_icon_01.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                       }\r
+\r
+                       part    {\r
+                               name: "volume.icon.2";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 1.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to_x: "volume.right"; }\r
+                                       rel2 { relative: 0.0 0.5; to_x: "volume.right"; }\r
+                                       image { normal: "volume/T01-2_volume_icon_02.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                       }\r
+\r
+                       part    {\r
+                               name: "volume.icon.1.right";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 6 0;\r
+                                       fixed: 1 0;\r
+                                       align: 0.0 0.0;\r
+                                       rel1 { relative: 1.0 0.0; to_x: "volume.icon.1"; }\r
+                                       rel2 { relative: 1.0 1.0; to_x: "volume.icon.1"; }\r
+                                       color: 0 255 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part    {\r
+                               name: "volume.icon.2.left";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 0;\r
+                                       min: 6 0;\r
+                                       fixed: 1 0;\r
+                                       align: 1.0 0.0;\r
+                                       rel1 { relative: 0.0 0.0;  to_x: "volume.icon.2"; }\r
+                                       rel2 { relative: 0.0 1.0;  to_x: "volume.icon.2"; }\r
+                                       color: 0 255 0 255;\r
+                               }\r
+                       }\r
+\r
+                       part    {\r
+                               name: "volume.icon.handle.start";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 1.0 0.5; to_x: "volume.icon.1.right"; }\r
+                                       rel2 { relative: 1.0 0.5; to_x: "volume.icon.1.right"; }\r
+                                       image { normal: "volume/T01-2_player_volume_handle.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                       }\r
+\r
+                       part    {\r
+                               name: "volume.icon.handle.end";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 1.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to_x: "volume.icon.2.left"; }\r
+                                       rel2 { relative: 0.0 0.5; to_x: "volume.icon.2.left"; }\r
+                                       image { normal: "volume/T01-2_player_volume_handle.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "volume.txt.start";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.0; to: "volume.icon.handle.start";}\r
+                                       rel2 { relative: 1.0 1.0; to: "volume.icon.handle.start";}\r
+                                       color: 42 137 194 255;\r
+                                       text {\r
+                                               font: FONT_BOLD_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 38;\r
+                                               text: "0";\r
+                                               align: 0.5 0.5;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "volume.txt.end";\r
+                               type: TEXT;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.0; to: "volume.icon.handle.end";}\r
+                                       rel2 { relative: 1.0 1.0; to: "volume.icon.handle.end";}\r
+                                       color: 42 137 194 255;\r
+                                       text {\r
+                                               font: FONT_BOLD_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 38;\r
+                                               text: "15";\r
+                                               align: 0.5 0.5;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "volume.progress.bg";\r
+                               type: IMAGE;\r
+                               scale: 1;\r
+                               mouse_events: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 0 8;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 1.0 0.5; to_x: "volume.icon.handle.start"; }\r
+                                       rel2 { relative: 0.0 0.5; to_x: "volume.icon.handle.end"; }\r
+                                       image { normal: "volume/T01-2_player_progress_bg.png"; }\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "volume.progress.bar";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       state: "default" 0.0;\r
+                                       min: 0 8;\r
+                                       fixed: 0 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to_x: "volume.progress.bg"; }\r
+                                       rel2 { relative: 1.0 0.5; to_x: "volume.progress.drag"; }\r
+                                       image { normal: "volume/T01-2_player_progress_bar.png"; }\r
+                               }\r
+                       }\r
+\r
+                       part { name: "volume.progress.confine.rect";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       visible: 1;\r
+                                       rel1 { relative: 0.0 0.0;  to_x: "volume.progress.bg";  }\r
+                                       rel2 { relative: 1.0 1.0;  to_x: "volume.progress.bg";  }\r
+                                       color: 255 255 255 0;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "volume.progress.circle";\r
+                               type: IMAGE;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.5 0.5; to_x: volume.progress.drag; }\r
+                                       rel2 { relative: 0.5 0.5; to_x: volume.progress.drag; }\r
+                                       image { normal: "volume/T01-2_player_volume_handle_press.png"; }\r
+                                       color: 255 255 255 255;\r
+                               }\r
+                       }\r
+\r
+                       part {\r
+                               name: "volume.progress.circle.txt";\r
+                               type: TEXT;\r
+                               mouse_events: 0;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 0.5 0.5;\r
+                                       rel1 { relative: 0.0 0.0; to: "volume.progress.circle";}\r
+                                       rel2 { relative: 1.0 1.0; to: "volume.progress.circle";}\r
+                                       color: 255 255 255 255;\r
+                                       text {\r
+                                               font: FONT_BOLD_TYPE;\r
+                                               text_class: "slp";\r
+                                               size: 38;\r
+                                               text: "12";\r
+                                               align: 0.5 0.5;\r
+                                       }\r
+                               }\r
+                       }\r
+                       part {\r
+                               name: "volume.progress.drag";\r
+                               type: RECT;\r
+                               mouse_events: 1;\r
+                               scale: 1;\r
+                               description {\r
+                                       state: "default" 0.0;\r
+                                       min: 58 58;\r
+                                       fixed: 1 1;\r
+                                       align: 0.0 0.5;\r
+                                       rel1 { relative: 0.0 0.5; to: "volume.progress.bg"; }\r
+                                       rel2 { relative: 1.0 0.5; to: "volume.progress.bg"; }\r
+                                       color: 255 255 255 0;\r
+                               }\r
+                               dragable {\r
+                                       confine: "volume.progress.confine.rect";\r
+                                       x: 1 1 1;\r
+                               }\r
+                       }\r
+               } /* parts */\r
+//             programs {\r
+\r
+//             } /* programs */\r
+       } /* group */\r
+}\r
+\r
diff --git a/res/edc/vp_font.edc b/res/edc/vp_font.edc
new file mode 100755 (executable)
index 0000000..560bbbf
--- /dev/null
@@ -0,0 +1,28 @@
+#define FONT_BOLD_TYPE                 "SLP:style=Bold"
+#define FONT_MEDIUM_TYPE                       "SLP:style=Medium"
+#define FONT_REGULAR_TYPE              "SLP:style=Regular"
+#define FONT_ROMAN_TYPE                        "SLP:style=Roman"
+
+#define FONT_COLOR                             255 255 255 255
+
+#define FONT_START_COLOR               255 255 255 255
+#define FONT_END_COLOR                 142 142 142 255
+#define FONT_TRIM_START_COLOR  56 56 56 255
+#define FONT_TRIM_END_COLOR            255 255 255 255
+#define FONT_BOOKMARK_TITLE            249 249 249 255
+
+#define FONT_PLAYBACK_SPEED_COLOR              255 255 255 255
+#define FONT_PLAYBACK_SPEED_BTN_COLOR  255 255 255 255
+
+#define FONT_PLAYBACK_SPEED_SIZE       90
+#define FONT_PLAYBACK_SPEED_BTN_SIZE   36
+
+#define FONT_PLAYBACK_SPEED_FONT       FONT_REGULAR_TYPE
+#define FONT_PLAYBACK_SPEED_BTN_FONT   FONT_REGULAR_TYPE
+
+#define FONT_PLAYBACK_SPEED_CLASS      "slp"
+#define FONT_PLAYBACK_SPEED_BTN_CLASS  "slp"
+
+
+#define TITLE_FONT_SIZE                28
+#define TEXT_TRIM_SIZE         25
\ No newline at end of file
diff --git a/res/images/00_Option_header_bt.png b/res/images/00_Option_header_bt.png
new file mode 100755 (executable)
index 0000000..659fc23
Binary files /dev/null and b/res/images/00_Option_header_bt.png differ
diff --git a/res/images/00_Option_header_bt_dim.png b/res/images/00_Option_header_bt_dim.png
new file mode 100755 (executable)
index 0000000..3fb76e2
Binary files /dev/null and b/res/images/00_Option_header_bt_dim.png differ
diff --git a/res/images/00_Option_header_bt_press.png b/res/images/00_Option_header_bt_press.png
new file mode 100755 (executable)
index 0000000..8a05504
Binary files /dev/null and b/res/images/00_Option_header_bt_press.png differ
diff --git a/res/images/00_button_01_normal.png b/res/images/00_button_01_normal.png
new file mode 100755 (executable)
index 0000000..fd06c1c
Binary files /dev/null and b/res/images/00_button_01_normal.png differ
diff --git a/res/images/00_button_01_normal_dim.png b/res/images/00_button_01_normal_dim.png
new file mode 100755 (executable)
index 0000000..7bb54fc
Binary files /dev/null and b/res/images/00_button_01_normal_dim.png differ
diff --git a/res/images/00_button_01_normal_press.png b/res/images/00_button_01_normal_press.png
new file mode 100755 (executable)
index 0000000..829554a
Binary files /dev/null and b/res/images/00_button_01_normal_press.png differ
diff --git a/res/images/00_check_bg_dim.png b/res/images/00_check_bg_dim.png
new file mode 100755 (executable)
index 0000000..d95649c
Binary files /dev/null and b/res/images/00_check_bg_dim.png differ
diff --git a/res/images/00_grid_select_check.png b/res/images/00_grid_select_check.png
new file mode 100755 (executable)
index 0000000..4385567
Binary files /dev/null and b/res/images/00_grid_select_check.png differ
diff --git a/res/images/00_sweep_list_bg.png b/res/images/00_sweep_list_bg.png
new file mode 100755 (executable)
index 0000000..1606042
Binary files /dev/null and b/res/images/00_sweep_list_bg.png differ
diff --git a/res/images/00_winset_btn_prev.png b/res/images/00_winset_btn_prev.png
new file mode 100755 (executable)
index 0000000..15b43b0
Binary files /dev/null and b/res/images/00_winset_btn_prev.png differ
diff --git a/res/images/00_winset_btn_prev_press.png b/res/images/00_winset_btn_prev_press.png
new file mode 100755 (executable)
index 0000000..1ffbb0b
Binary files /dev/null and b/res/images/00_winset_btn_prev_press.png differ
diff --git a/res/images/00_winset_control_top_arrow.png b/res/images/00_winset_control_top_arrow.png
new file mode 100755 (executable)
index 0000000..9f31c89
Binary files /dev/null and b/res/images/00_winset_control_top_arrow.png differ
diff --git a/res/images/00_winset_list_progress_bg.png b/res/images/00_winset_list_progress_bg.png
new file mode 100755 (executable)
index 0000000..5e83560
Binary files /dev/null and b/res/images/00_winset_list_progress_bg.png differ
diff --git a/res/images/00_winset_thumbs_bg.png b/res/images/00_winset_thumbs_bg.png
new file mode 100755 (executable)
index 0000000..6226c90
Binary files /dev/null and b/res/images/00_winset_thumbs_bg.png differ
diff --git a/res/images/00_winset_thumbs_focus_bg.png b/res/images/00_winset_thumbs_focus_bg.png
new file mode 100755 (executable)
index 0000000..4f7d66f
Binary files /dev/null and b/res/images/00_winset_thumbs_focus_bg.png differ
diff --git a/res/images/00_winset_thumbs_loading_bg.png b/res/images/00_winset_thumbs_loading_bg.png
new file mode 100755 (executable)
index 0000000..0472430
Binary files /dev/null and b/res/images/00_winset_thumbs_loading_bg.png differ
diff --git a/res/images/01_controlbar_icon_delete.png b/res/images/01_controlbar_icon_delete.png
new file mode 100755 (executable)
index 0000000..07e2898
Binary files /dev/null and b/res/images/01_controlbar_icon_delete.png differ
diff --git a/res/images/01_controlbar_icon_set_as.png b/res/images/01_controlbar_icon_set_as.png
new file mode 100755 (executable)
index 0000000..3f5a68f
Binary files /dev/null and b/res/images/01_controlbar_icon_set_as.png differ
diff --git a/res/images/01_controlbar_icon_share.png b/res/images/01_controlbar_icon_share.png
new file mode 100755 (executable)
index 0000000..76ef1ce
Binary files /dev/null and b/res/images/01_controlbar_icon_share.png differ
diff --git a/res/images/01_header_icon_add.png b/res/images/01_header_icon_add.png
new file mode 100755 (executable)
index 0000000..43c4984
Binary files /dev/null and b/res/images/01_header_icon_add.png differ
diff --git a/res/images/01_header_icon_cancel.png b/res/images/01_header_icon_cancel.png
new file mode 100755 (executable)
index 0000000..4fb54c3
Binary files /dev/null and b/res/images/01_header_icon_cancel.png differ
diff --git a/res/images/01_header_icon_others.png b/res/images/01_header_icon_others.png
new file mode 100755 (executable)
index 0000000..4fc9dfa
Binary files /dev/null and b/res/images/01_header_icon_others.png differ
diff --git a/res/images/12_music_player_sound_path.png b/res/images/12_music_player_sound_path.png
new file mode 100755 (executable)
index 0000000..771ebb8
Binary files /dev/null and b/res/images/12_music_player_sound_path.png differ
diff --git a/res/images/DM_Gallery_Increase.png b/res/images/DM_Gallery_Increase.png
new file mode 100755 (executable)
index 0000000..fdf6231
Binary files /dev/null and b/res/images/DM_Gallery_Increase.png differ
diff --git a/res/images/T01-2_hold_icon_lock.png b/res/images/T01-2_hold_icon_lock.png
new file mode 100755 (executable)
index 0000000..8e34351
Binary files /dev/null and b/res/images/T01-2_hold_icon_lock.png differ
diff --git a/res/images/T01-2_icon_toolbar_cancel.png b/res/images/T01-2_icon_toolbar_cancel.png
new file mode 100755 (executable)
index 0000000..5cb7824
Binary files /dev/null and b/res/images/T01-2_icon_toolbar_cancel.png differ
diff --git a/res/images/T01_Image_Look.png b/res/images/T01_Image_Look.png
new file mode 100755 (executable)
index 0000000..5ecda87
Binary files /dev/null and b/res/images/T01_Image_Look.png differ
diff --git a/res/images/T01_Nocontents_multimedia.png b/res/images/T01_Nocontents_multimedia.png
new file mode 100755 (executable)
index 0000000..a59046f
Binary files /dev/null and b/res/images/T01_Nocontents_multimedia.png differ
diff --git a/res/images/T01_Option_header_bt.png b/res/images/T01_Option_header_bt.png
new file mode 100755 (executable)
index 0000000..94b1e2f
Binary files /dev/null and b/res/images/T01_Option_header_bt.png differ
diff --git a/res/images/T01_Option_header_bt_press.png b/res/images/T01_Option_header_bt_press.png
new file mode 100755 (executable)
index 0000000..17331c1
Binary files /dev/null and b/res/images/T01_Option_header_bt_press.png differ
diff --git a/res/images/T01_Trim_handle_beginning.png b/res/images/T01_Trim_handle_beginning.png
new file mode 100755 (executable)
index 0000000..859aa3e
Binary files /dev/null and b/res/images/T01_Trim_handle_beginning.png differ
diff --git a/res/images/T01_Trim_handle_ending.png b/res/images/T01_Trim_handle_ending.png
new file mode 100755 (executable)
index 0000000..adf7c82
Binary files /dev/null and b/res/images/T01_Trim_handle_ending.png differ
diff --git a/res/images/T01_back.png b/res/images/T01_back.png
new file mode 100755 (executable)
index 0000000..73d57a5
Binary files /dev/null and b/res/images/T01_back.png differ
diff --git a/res/images/T01_btn_prev.png b/res/images/T01_btn_prev.png
new file mode 100755 (executable)
index 0000000..ccaf337
Binary files /dev/null and b/res/images/T01_btn_prev.png differ
diff --git a/res/images/T01_check.png b/res/images/T01_check.png
new file mode 100755 (executable)
index 0000000..d5057e4
Binary files /dev/null and b/res/images/T01_check.png differ
diff --git a/res/images/T01_checkbox.png b/res/images/T01_checkbox.png
new file mode 100755 (executable)
index 0000000..61dc76a
Binary files /dev/null and b/res/images/T01_checkbox.png differ
diff --git a/res/images/T01_control_icon_detail.png b/res/images/T01_control_icon_detail.png
new file mode 100755 (executable)
index 0000000..e82b44d
Binary files /dev/null and b/res/images/T01_control_icon_detail.png differ
diff --git a/res/images/T01_control_icon_fullscreen.png b/res/images/T01_control_icon_fullscreen.png
new file mode 100755 (executable)
index 0000000..7fa140f
Binary files /dev/null and b/res/images/T01_control_icon_fullscreen.png differ
diff --git a/res/images/T01_control_icon_reduce.png b/res/images/T01_control_icon_reduce.png
new file mode 100755 (executable)
index 0000000..fbdb906
Binary files /dev/null and b/res/images/T01_control_icon_reduce.png differ
diff --git a/res/images/T01_control_top_arrow.png b/res/images/T01_control_top_arrow.png
new file mode 100755 (executable)
index 0000000..3f2ee50
Binary files /dev/null and b/res/images/T01_control_top_arrow.png differ
diff --git a/res/images/T01_control_top_bg.png b/res/images/T01_control_top_bg.png
new file mode 100755 (executable)
index 0000000..e7b5045
Binary files /dev/null and b/res/images/T01_control_top_bg.png differ
diff --git a/res/images/T01_controlbar_icon_cancel.png b/res/images/T01_controlbar_icon_cancel.png
new file mode 100755 (executable)
index 0000000..5cb7824
Binary files /dev/null and b/res/images/T01_controlbar_icon_cancel.png differ
diff --git a/res/images/T01_controlbar_icon_done.png b/res/images/T01_controlbar_icon_done.png
new file mode 100755 (executable)
index 0000000..46304a4
Binary files /dev/null and b/res/images/T01_controlbar_icon_done.png differ
diff --git a/res/images/T01_controller_btn.png b/res/images/T01_controller_btn.png
new file mode 100755 (executable)
index 0000000..4db7a11
Binary files /dev/null and b/res/images/T01_controller_btn.png differ
diff --git a/res/images/T01_controller_btn_press.png b/res/images/T01_controller_btn_press.png
new file mode 100755 (executable)
index 0000000..4069b0f
Binary files /dev/null and b/res/images/T01_controller_btn_press.png differ
diff --git a/res/images/T01_grid_select_check.png b/res/images/T01_grid_select_check.png
new file mode 100755 (executable)
index 0000000..f131f47
Binary files /dev/null and b/res/images/T01_grid_select_check.png differ
diff --git a/res/images/T01_icon_expand.png b/res/images/T01_icon_expand.png
new file mode 100755 (executable)
index 0000000..ba1158e
Binary files /dev/null and b/res/images/T01_icon_expand.png differ
diff --git a/res/images/T01_icon_reduce.png b/res/images/T01_icon_reduce.png
new file mode 100755 (executable)
index 0000000..7e80daa
Binary files /dev/null and b/res/images/T01_icon_reduce.png differ
diff --git a/res/images/T01_icon_soundPath.png b/res/images/T01_icon_soundPath.png
new file mode 100755 (executable)
index 0000000..79e0cda
Binary files /dev/null and b/res/images/T01_icon_soundPath.png differ
diff --git a/res/images/T01_icon_soundPath_h.png b/res/images/T01_icon_soundPath_h.png
new file mode 100755 (executable)
index 0000000..ad3b1d4
Binary files /dev/null and b/res/images/T01_icon_soundPath_h.png differ
diff --git a/res/images/T01_icon_soundPath_press.png b/res/images/T01_icon_soundPath_press.png
new file mode 100755 (executable)
index 0000000..9fcc466
Binary files /dev/null and b/res/images/T01_icon_soundPath_press.png differ
diff --git a/res/images/T01_player_progress_bar.png b/res/images/T01_player_progress_bar.png
new file mode 100755 (executable)
index 0000000..2f25452
Binary files /dev/null and b/res/images/T01_player_progress_bar.png differ
diff --git a/res/images/T01_player_progress_bg.png b/res/images/T01_player_progress_bg.png
new file mode 100755 (executable)
index 0000000..58d94cc
Binary files /dev/null and b/res/images/T01_player_progress_bg.png differ
diff --git a/res/images/T01_player_progress_point.png b/res/images/T01_player_progress_point.png
new file mode 100755 (executable)
index 0000000..0e8c5c5
Binary files /dev/null and b/res/images/T01_player_progress_point.png differ
diff --git a/res/images/T01_sound_path.png b/res/images/T01_sound_path.png
new file mode 100755 (executable)
index 0000000..d4f3843
Binary files /dev/null and b/res/images/T01_sound_path.png differ
diff --git a/res/images/T01_title_bg.png b/res/images/T01_title_bg.png
new file mode 100755 (executable)
index 0000000..039da67
Binary files /dev/null and b/res/images/T01_title_bg.png differ
diff --git a/res/images/T01_title_bg_h.png b/res/images/T01_title_bg_h.png
new file mode 100755 (executable)
index 0000000..7d0cec4
Binary files /dev/null and b/res/images/T01_title_bg_h.png differ
diff --git a/res/images/T01_title_btn.png b/res/images/T01_title_btn.png
new file mode 100755 (executable)
index 0000000..20c31f1
Binary files /dev/null and b/res/images/T01_title_btn.png differ
diff --git a/res/images/T01_title_btn_press.png b/res/images/T01_title_btn_press.png
new file mode 100755 (executable)
index 0000000..49861ed
Binary files /dev/null and b/res/images/T01_title_btn_press.png differ
diff --git a/res/images/T01_toolbar_bg.png b/res/images/T01_toolbar_bg.png
new file mode 100755 (executable)
index 0000000..e02c6c6
Binary files /dev/null and b/res/images/T01_toolbar_bg.png differ
diff --git a/res/images/T01_toolbar_press.png b/res/images/T01_toolbar_press.png
new file mode 100755 (executable)
index 0000000..851583e
Binary files /dev/null and b/res/images/T01_toolbar_press.png differ
diff --git a/res/images/T01_video_list_progress_bar.png b/res/images/T01_video_list_progress_bar.png
new file mode 100755 (executable)
index 0000000..cc9c1bc
Binary files /dev/null and b/res/images/T01_video_list_progress_bar.png differ
diff --git a/res/images/adjustment/T01-2_controller_progress_handle.png b/res/images/adjustment/T01-2_controller_progress_handle.png
new file mode 100755 (executable)
index 0000000..fc80139
Binary files /dev/null and b/res/images/adjustment/T01-2_controller_progress_handle.png differ
diff --git a/res/images/adjustment/T01-2_controller_progress_handle_press.png b/res/images/adjustment/T01-2_controller_progress_handle_press.png
new file mode 100755 (executable)
index 0000000..d14c5f6
Binary files /dev/null and b/res/images/adjustment/T01-2_controller_progress_handle_press.png differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_bg.png b/res/images/adjustment/T01-2_fine_adjustment_bg.png
new file mode 100755 (executable)
index 0000000..40efe0e
Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_bg.png differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png b/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png
new file mode 100755 (executable)
index 0000000..b088e8a
Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png b/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png
new file mode 100755 (executable)
index 0000000..34240ab
Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png b/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png
new file mode 100755 (executable)
index 0000000..b4c6def
Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png b/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png
new file mode 100755 (executable)
index 0000000..b8fa147
Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png differ
diff --git a/res/images/bookmark/T01-2_bookmark_thumbnail.png b/res/images/bookmark/T01-2_bookmark_thumbnail.png
new file mode 100755 (executable)
index 0000000..2d4a8ca
Binary files /dev/null and b/res/images/bookmark/T01-2_bookmark_thumbnail.png differ
diff --git a/res/images/bookmark/T01-2_btn_bookmark.png b/res/images/bookmark/T01-2_btn_bookmark.png
new file mode 100755 (executable)
index 0000000..13fa60a
Binary files /dev/null and b/res/images/bookmark/T01-2_btn_bookmark.png differ
diff --git a/res/images/bookmark/T01-2_btn_bookmark_press.png b/res/images/bookmark/T01-2_btn_bookmark_press.png
new file mode 100755 (executable)
index 0000000..34ef87f
Binary files /dev/null and b/res/images/bookmark/T01-2_btn_bookmark_press.png differ
diff --git a/res/images/bookmark/T01-2_btn_remove_bookmark.png b/res/images/bookmark/T01-2_btn_remove_bookmark.png
new file mode 100755 (executable)
index 0000000..a040031
Binary files /dev/null and b/res/images/bookmark/T01-2_btn_remove_bookmark.png differ
diff --git a/res/images/bookmark/T01-2_btn_remove_bookmark_press.png b/res/images/bookmark/T01-2_btn_remove_bookmark_press.png
new file mode 100755 (executable)
index 0000000..812f6f0
Binary files /dev/null and b/res/images/bookmark/T01-2_btn_remove_bookmark_press.png differ
diff --git a/res/images/bookmark/T01-2_function_tray.png b/res/images/bookmark/T01-2_function_tray.png
new file mode 100755 (executable)
index 0000000..2df684b
Binary files /dev/null and b/res/images/bookmark/T01-2_function_tray.png differ
diff --git a/res/images/bookmark/T01-2_icon_thumbnail_bg.png b/res/images/bookmark/T01-2_icon_thumbnail_bg.png
new file mode 100755 (executable)
index 0000000..b5692d1
Binary files /dev/null and b/res/images/bookmark/T01-2_icon_thumbnail_bg.png differ
diff --git a/res/images/com.samsung.video-player.png b/res/images/com.samsung.video-player.png
new file mode 100644 (file)
index 0000000..0cc2384
Binary files /dev/null and b/res/images/com.samsung.video-player.png differ
diff --git a/res/images/com.samsung.video-player.png_old b/res/images/com.samsung.video-player.png_old
new file mode 100755 (executable)
index 0000000..aa8b191
Binary files /dev/null and b/res/images/com.samsung.video-player.png_old differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_01.png b/res/images/desktop/controlbar/DM_Key screen_icon_01.png
new file mode 100755 (executable)
index 0000000..89e94e7
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_01.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_02.png b/res/images/desktop/controlbar/DM_Key screen_icon_02.png
new file mode 100755 (executable)
index 0000000..06e41d4
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_02.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_03.png b/res/images/desktop/controlbar/DM_Key screen_icon_03.png
new file mode 100755 (executable)
index 0000000..919801c
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_03.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_ff.png b/res/images/desktop/controlbar/DM_Key screen_icon_ff.png
new file mode 100755 (executable)
index 0000000..4bc3885
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_ff.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png
new file mode 100755 (executable)
index 0000000..c5b9e8f
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_pause.png b/res/images/desktop/controlbar/DM_Key screen_icon_pause.png
new file mode 100644 (file)
index 0000000..28a8872
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_pause.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png
new file mode 100644 (file)
index 0000000..37609ad
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_play.png b/res/images/desktop/controlbar/DM_Key screen_icon_play.png
new file mode 100755 (executable)
index 0000000..9bf836d
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_play.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png
new file mode 100755 (executable)
index 0000000..e9e9583
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_rew.png b/res/images/desktop/controlbar/DM_Key screen_icon_rew.png
new file mode 100755 (executable)
index 0000000..1140a01
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_rew.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png
new file mode 100755 (executable)
index 0000000..306af4e
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_volume.png b/res/images/desktop/controlbar/DM_Key screen_icon_volume.png
new file mode 100755 (executable)
index 0000000..8d2fe43
Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_volume.png differ
diff --git a/res/images/desktop/winset/T01-2_controller_progress_bar.png b/res/images/desktop/winset/T01-2_controller_progress_bar.png
new file mode 100755 (executable)
index 0000000..03f54cf
Binary files /dev/null and b/res/images/desktop/winset/T01-2_controller_progress_bar.png differ
diff --git a/res/images/desktop/winset/T01-2_controller_progress_bg.png b/res/images/desktop/winset/T01-2_controller_progress_bg.png
new file mode 100755 (executable)
index 0000000..f020771
Binary files /dev/null and b/res/images/desktop/winset/T01-2_controller_progress_bg.png differ
diff --git a/res/images/desktop/winset/T01-2_controller_progress_handle.png b/res/images/desktop/winset/T01-2_controller_progress_handle.png
new file mode 100755 (executable)
index 0000000..fc80139
Binary files /dev/null and b/res/images/desktop/winset/T01-2_controller_progress_handle.png differ
diff --git a/res/images/desktop/winset/T01-2_controller_progress_handle_press.png b/res/images/desktop/winset/T01-2_controller_progress_handle_press.png
new file mode 100755 (executable)
index 0000000..d14c5f6
Binary files /dev/null and b/res/images/desktop/winset/T01-2_controller_progress_handle_press.png differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_bg.png b/res/images/desktop/winset/T01-2_fine_adjustment_bg.png
new file mode 100755 (executable)
index 0000000..40efe0e
Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_bg.png differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png b/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png
new file mode 100755 (executable)
index 0000000..b088e8a
Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png
new file mode 100755 (executable)
index 0000000..34240ab
Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png
new file mode 100755 (executable)
index 0000000..b4c6def
Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png
new file mode 100755 (executable)
index 0000000..b8fa147
Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png differ
diff --git a/res/images/gallery_loading_ani_01.png b/res/images/gallery_loading_ani_01.png
new file mode 100755 (executable)
index 0000000..9402e71
Binary files /dev/null and b/res/images/gallery_loading_ani_01.png differ
diff --git a/res/images/gallery_loading_ani_02.png b/res/images/gallery_loading_ani_02.png
new file mode 100755 (executable)
index 0000000..e71d491
Binary files /dev/null and b/res/images/gallery_loading_ani_02.png differ
diff --git a/res/images/gallery_loading_ani_03.png b/res/images/gallery_loading_ani_03.png
new file mode 100755 (executable)
index 0000000..1ed0de9
Binary files /dev/null and b/res/images/gallery_loading_ani_03.png differ
diff --git a/res/images/gallery_loading_ani_04.png b/res/images/gallery_loading_ani_04.png
new file mode 100755 (executable)
index 0000000..18cc497
Binary files /dev/null and b/res/images/gallery_loading_ani_04.png differ
diff --git a/res/images/gallery_loading_ani_05.png b/res/images/gallery_loading_ani_05.png
new file mode 100755 (executable)
index 0000000..036c49b
Binary files /dev/null and b/res/images/gallery_loading_ani_05.png differ
diff --git a/res/images/gallery_loading_ani_06.png b/res/images/gallery_loading_ani_06.png
new file mode 100755 (executable)
index 0000000..3cb5e33
Binary files /dev/null and b/res/images/gallery_loading_ani_06.png differ
diff --git a/res/images/gallery_loading_ani_07.png b/res/images/gallery_loading_ani_07.png
new file mode 100755 (executable)
index 0000000..fae06de
Binary files /dev/null and b/res/images/gallery_loading_ani_07.png differ
diff --git a/res/images/gallery_loading_ani_08.png b/res/images/gallery_loading_ani_08.png
new file mode 100755 (executable)
index 0000000..70eaaf0
Binary files /dev/null and b/res/images/gallery_loading_ani_08.png differ
diff --git a/res/images/gallery_loading_ani_09.png b/res/images/gallery_loading_ani_09.png
new file mode 100755 (executable)
index 0000000..7fb390c
Binary files /dev/null and b/res/images/gallery_loading_ani_09.png differ
diff --git a/res/images/gallery_loading_ani_10.png b/res/images/gallery_loading_ani_10.png
new file mode 100755 (executable)
index 0000000..941fc3b
Binary files /dev/null and b/res/images/gallery_loading_ani_10.png differ
diff --git a/res/images/gallery_loading_ani_11.png b/res/images/gallery_loading_ani_11.png
new file mode 100755 (executable)
index 0000000..a67149d
Binary files /dev/null and b/res/images/gallery_loading_ani_11.png differ
diff --git a/res/images/gallery_loading_ani_12.png b/res/images/gallery_loading_ani_12.png
new file mode 100755 (executable)
index 0000000..b36421a
Binary files /dev/null and b/res/images/gallery_loading_ani_12.png differ
diff --git a/res/images/gallery_loading_ani_13.png b/res/images/gallery_loading_ani_13.png
new file mode 100755 (executable)
index 0000000..d70d609
Binary files /dev/null and b/res/images/gallery_loading_ani_13.png differ
diff --git a/res/images/gallery_loading_ani_14.png b/res/images/gallery_loading_ani_14.png
new file mode 100755 (executable)
index 0000000..ab52db7
Binary files /dev/null and b/res/images/gallery_loading_ani_14.png differ
diff --git a/res/images/gallery_loading_ani_15.png b/res/images/gallery_loading_ani_15.png
new file mode 100755 (executable)
index 0000000..1de8adb
Binary files /dev/null and b/res/images/gallery_loading_ani_15.png differ
diff --git a/res/images/gallery_loading_ani_16.png b/res/images/gallery_loading_ani_16.png
new file mode 100755 (executable)
index 0000000..521b61f
Binary files /dev/null and b/res/images/gallery_loading_ani_16.png differ
diff --git a/res/images/gallery_loading_ani_17.png b/res/images/gallery_loading_ani_17.png
new file mode 100755 (executable)
index 0000000..6cb5ba9
Binary files /dev/null and b/res/images/gallery_loading_ani_17.png differ
diff --git a/res/images/gallery_loading_ani_18.png b/res/images/gallery_loading_ani_18.png
new file mode 100755 (executable)
index 0000000..a636079
Binary files /dev/null and b/res/images/gallery_loading_ani_18.png differ
diff --git a/res/images/gallery_loading_ani_19.png b/res/images/gallery_loading_ani_19.png
new file mode 100755 (executable)
index 0000000..0a4f650
Binary files /dev/null and b/res/images/gallery_loading_ani_19.png differ
diff --git a/res/images/gallery_loading_ani_20.png b/res/images/gallery_loading_ani_20.png
new file mode 100755 (executable)
index 0000000..14cc339
Binary files /dev/null and b/res/images/gallery_loading_ani_20.png differ
diff --git a/res/images/gallery_loading_ani_21.png b/res/images/gallery_loading_ani_21.png
new file mode 100755 (executable)
index 0000000..0e78db7
Binary files /dev/null and b/res/images/gallery_loading_ani_21.png differ
diff --git a/res/images/gallery_loading_ani_22.png b/res/images/gallery_loading_ani_22.png
new file mode 100755 (executable)
index 0000000..80d592e
Binary files /dev/null and b/res/images/gallery_loading_ani_22.png differ
diff --git a/res/images/gallery_loading_ani_23.png b/res/images/gallery_loading_ani_23.png
new file mode 100755 (executable)
index 0000000..b4bd7ca
Binary files /dev/null and b/res/images/gallery_loading_ani_23.png differ
diff --git a/res/images/gallery_loading_ani_24.png b/res/images/gallery_loading_ani_24.png
new file mode 100755 (executable)
index 0000000..69445e4
Binary files /dev/null and b/res/images/gallery_loading_ani_24.png differ
diff --git a/res/images/gallery_loading_ani_25.png b/res/images/gallery_loading_ani_25.png
new file mode 100755 (executable)
index 0000000..233a038
Binary files /dev/null and b/res/images/gallery_loading_ani_25.png differ
diff --git a/res/images/gallery_loading_ani_26.png b/res/images/gallery_loading_ani_26.png
new file mode 100755 (executable)
index 0000000..d52a017
Binary files /dev/null and b/res/images/gallery_loading_ani_26.png differ
diff --git a/res/images/gallery_loading_ani_27.png b/res/images/gallery_loading_ani_27.png
new file mode 100755 (executable)
index 0000000..4221ecc
Binary files /dev/null and b/res/images/gallery_loading_ani_27.png differ
diff --git a/res/images/gallery_loading_ani_28.png b/res/images/gallery_loading_ani_28.png
new file mode 100755 (executable)
index 0000000..da37330
Binary files /dev/null and b/res/images/gallery_loading_ani_28.png differ
diff --git a/res/images/gallery_loading_ani_29.png b/res/images/gallery_loading_ani_29.png
new file mode 100755 (executable)
index 0000000..41e97e1
Binary files /dev/null and b/res/images/gallery_loading_ani_29.png differ
diff --git a/res/images/gallery_loading_ani_30.png b/res/images/gallery_loading_ani_30.png
new file mode 100755 (executable)
index 0000000..ac0bb55
Binary files /dev/null and b/res/images/gallery_loading_ani_30.png differ
diff --git a/res/images/gallery_video_add_btn.png b/res/images/gallery_video_add_btn.png
new file mode 100755 (executable)
index 0000000..63f7d63
Binary files /dev/null and b/res/images/gallery_video_add_btn.png differ
diff --git a/res/images/gallery_video_add_btn_press.png b/res/images/gallery_video_add_btn_press.png
new file mode 100755 (executable)
index 0000000..2bfc65b
Binary files /dev/null and b/res/images/gallery_video_add_btn_press.png differ
diff --git a/res/images/gallery_video_control_ff.png b/res/images/gallery_video_control_ff.png
new file mode 100755 (executable)
index 0000000..e0a49f1
Binary files /dev/null and b/res/images/gallery_video_control_ff.png differ
diff --git a/res/images/gallery_video_control_ff_2.png b/res/images/gallery_video_control_ff_2.png
new file mode 100755 (executable)
index 0000000..57d60d6
Binary files /dev/null and b/res/images/gallery_video_control_ff_2.png differ
diff --git a/res/images/gallery_video_control_ff_3.png b/res/images/gallery_video_control_ff_3.png
new file mode 100755 (executable)
index 0000000..6f023ea
Binary files /dev/null and b/res/images/gallery_video_control_ff_3.png differ
diff --git a/res/images/gallery_video_control_ff_4.png b/res/images/gallery_video_control_ff_4.png
new file mode 100755 (executable)
index 0000000..427735f
Binary files /dev/null and b/res/images/gallery_video_control_ff_4.png differ
diff --git a/res/images/gallery_video_control_ff_5.png b/res/images/gallery_video_control_ff_5.png
new file mode 100755 (executable)
index 0000000..93aa2be
Binary files /dev/null and b/res/images/gallery_video_control_ff_5.png differ
diff --git a/res/images/gallery_video_control_frame_back.png b/res/images/gallery_video_control_frame_back.png
new file mode 100755 (executable)
index 0000000..7a0428d
Binary files /dev/null and b/res/images/gallery_video_control_frame_back.png differ
diff --git a/res/images/gallery_video_control_frame_forword.png b/res/images/gallery_video_control_frame_forword.png
new file mode 100755 (executable)
index 0000000..af2b776
Binary files /dev/null and b/res/images/gallery_video_control_frame_forword.png differ
diff --git a/res/images/gallery_video_control_next.png b/res/images/gallery_video_control_next.png
new file mode 100755 (executable)
index 0000000..e0a49f1
Binary files /dev/null and b/res/images/gallery_video_control_next.png differ
diff --git a/res/images/gallery_video_control_pause.png b/res/images/gallery_video_control_pause.png
new file mode 100755 (executable)
index 0000000..d36fbf4
Binary files /dev/null and b/res/images/gallery_video_control_pause.png differ
diff --git a/res/images/gallery_video_control_play.png b/res/images/gallery_video_control_play.png
new file mode 100755 (executable)
index 0000000..16b49a5
Binary files /dev/null and b/res/images/gallery_video_control_play.png differ
diff --git a/res/images/gallery_video_control_prev.png b/res/images/gallery_video_control_prev.png
new file mode 100755 (executable)
index 0000000..029e57c
Binary files /dev/null and b/res/images/gallery_video_control_prev.png differ
diff --git a/res/images/gallery_video_control_rew.png b/res/images/gallery_video_control_rew.png
new file mode 100755 (executable)
index 0000000..029e57c
Binary files /dev/null and b/res/images/gallery_video_control_rew.png differ
diff --git a/res/images/gallery_video_control_rew_2.png b/res/images/gallery_video_control_rew_2.png
new file mode 100755 (executable)
index 0000000..ad63c27
Binary files /dev/null and b/res/images/gallery_video_control_rew_2.png differ
diff --git a/res/images/gallery_video_control_rew_3.png b/res/images/gallery_video_control_rew_3.png
new file mode 100755 (executable)
index 0000000..96d43fd
Binary files /dev/null and b/res/images/gallery_video_control_rew_3.png differ
diff --git a/res/images/gallery_video_control_rew_4.png b/res/images/gallery_video_control_rew_4.png
new file mode 100755 (executable)
index 0000000..60f2a1d
Binary files /dev/null and b/res/images/gallery_video_control_rew_4.png differ
diff --git a/res/images/gallery_video_control_rew_5.png b/res/images/gallery_video_control_rew_5.png
new file mode 100755 (executable)
index 0000000..2eba4f6
Binary files /dev/null and b/res/images/gallery_video_control_rew_5.png differ
diff --git a/res/images/gallery_video_delete_btn.png b/res/images/gallery_video_delete_btn.png
new file mode 100755 (executable)
index 0000000..fe62076
Binary files /dev/null and b/res/images/gallery_video_delete_btn.png differ
diff --git a/res/images/gallery_video_delete_btn_press.png b/res/images/gallery_video_delete_btn_press.png
new file mode 100755 (executable)
index 0000000..2d2466f
Binary files /dev/null and b/res/images/gallery_video_delete_btn_press.png differ
diff --git a/res/images/gallery_video_fastforward_1x.png b/res/images/gallery_video_fastforward_1x.png
new file mode 100755 (executable)
index 0000000..c1ea6b1
Binary files /dev/null and b/res/images/gallery_video_fastforward_1x.png differ
diff --git a/res/images/gallery_video_fastforward_2x.png b/res/images/gallery_video_fastforward_2x.png
new file mode 100755 (executable)
index 0000000..ea0486c
Binary files /dev/null and b/res/images/gallery_video_fastforward_2x.png differ
diff --git a/res/images/gallery_video_fastforward_3x.png b/res/images/gallery_video_fastforward_3x.png
new file mode 100755 (executable)
index 0000000..6e16eff
Binary files /dev/null and b/res/images/gallery_video_fastforward_3x.png differ
diff --git a/res/images/gallery_video_fastforward_4x.png b/res/images/gallery_video_fastforward_4x.png
new file mode 100755 (executable)
index 0000000..a1eeacb
Binary files /dev/null and b/res/images/gallery_video_fastforward_4x.png differ
diff --git a/res/images/gallery_video_icon_btn.png b/res/images/gallery_video_icon_btn.png
new file mode 100755 (executable)
index 0000000..9ef6888
Binary files /dev/null and b/res/images/gallery_video_icon_btn.png differ
diff --git a/res/images/gallery_video_icon_btn_press.png b/res/images/gallery_video_icon_btn_press.png
new file mode 100755 (executable)
index 0000000..628c8e7
Binary files /dev/null and b/res/images/gallery_video_icon_btn_press.png differ
diff --git a/res/images/gallery_video_icon_mute.png b/res/images/gallery_video_icon_mute.png
new file mode 100755 (executable)
index 0000000..e92f376
Binary files /dev/null and b/res/images/gallery_video_icon_mute.png differ
diff --git a/res/images/gallery_video_icon_volume.png b/res/images/gallery_video_icon_volume.png
new file mode 100755 (executable)
index 0000000..49d9cf5
Binary files /dev/null and b/res/images/gallery_video_icon_volume.png differ
diff --git a/res/images/gallery_video_player_bg.png b/res/images/gallery_video_player_bg.png
new file mode 100755 (executable)
index 0000000..611a7b7
Binary files /dev/null and b/res/images/gallery_video_player_bg.png differ
diff --git a/res/images/gallery_video_popup_mute.png b/res/images/gallery_video_popup_mute.png
new file mode 100755 (executable)
index 0000000..32f447c
Binary files /dev/null and b/res/images/gallery_video_popup_mute.png differ
diff --git a/res/images/gallery_video_rewind_1x.png b/res/images/gallery_video_rewind_1x.png
new file mode 100755 (executable)
index 0000000..31f3696
Binary files /dev/null and b/res/images/gallery_video_rewind_1x.png differ
diff --git a/res/images/gallery_video_rewind_2x.png b/res/images/gallery_video_rewind_2x.png
new file mode 100755 (executable)
index 0000000..17c17c9
Binary files /dev/null and b/res/images/gallery_video_rewind_2x.png differ
diff --git a/res/images/gallery_video_rewind_3x.png b/res/images/gallery_video_rewind_3x.png
new file mode 100755 (executable)
index 0000000..badb983
Binary files /dev/null and b/res/images/gallery_video_rewind_3x.png differ
diff --git a/res/images/gallery_video_rewind_4x.png b/res/images/gallery_video_rewind_4x.png
new file mode 100755 (executable)
index 0000000..a855514
Binary files /dev/null and b/res/images/gallery_video_rewind_4x.png differ
diff --git a/res/images/icon/06_myfiles_list_folder.png b/res/images/icon/06_myfiles_list_folder.png
new file mode 100644 (file)
index 0000000..d53be43
Binary files /dev/null and b/res/images/icon/06_myfiles_list_folder.png differ
diff --git a/res/images/icon/T01-2_icon_function_bg.png b/res/images/icon/T01-2_icon_function_bg.png
new file mode 100755 (executable)
index 0000000..7354c9e
Binary files /dev/null and b/res/images/icon/T01-2_icon_function_bg.png differ
diff --git a/res/images/icon/T01-2_icon_popup_sound_allive.png b/res/images/icon/T01-2_icon_popup_sound_allive.png
new file mode 100755 (executable)
index 0000000..0f40b7b
Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_sound_allive.png differ
diff --git a/res/images/icon/T01-2_icon_popup_sound_audio_track.png b/res/images/icon/T01-2_icon_popup_sound_audio_track.png
new file mode 100755 (executable)
index 0000000..eb9b26d
Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_sound_audio_track.png differ
diff --git a/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png b/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png
new file mode 100755 (executable)
index 0000000..a5aa8a0
Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png differ
diff --git a/res/images/icon/T01-2_icon_popup_sound_settings.png b/res/images/icon/T01-2_icon_popup_sound_settings.png
new file mode 100755 (executable)
index 0000000..b548ecd
Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_sound_settings.png differ
diff --git a/res/images/icon/T01-2_icon_popup_subtitle.png b/res/images/icon/T01-2_icon_popup_subtitle.png
new file mode 100755 (executable)
index 0000000..5122b35
Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_subtitle.png differ
diff --git a/res/images/icon/T01-2_icon_popup_trim.png b/res/images/icon/T01-2_icon_popup_trim.png
new file mode 100755 (executable)
index 0000000..1cab618
Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_trim.png differ
diff --git a/res/images/icon/T01-2_icon_title_allshare.png b/res/images/icon/T01-2_icon_title_allshare.png
new file mode 100755 (executable)
index 0000000..2e46917
Binary files /dev/null and b/res/images/icon/T01-2_icon_title_allshare.png differ
diff --git a/res/images/icon/T01-2_icon_title_soundpath.png b/res/images/icon/T01-2_icon_title_soundpath.png
new file mode 100755 (executable)
index 0000000..1da849c
Binary files /dev/null and b/res/images/icon/T01-2_icon_title_soundpath.png differ
diff --git a/res/images/icon/T01_controlbar_icon_add_to_home.png b/res/images/icon/T01_controlbar_icon_add_to_home.png
new file mode 100755 (executable)
index 0000000..ff44f72
Binary files /dev/null and b/res/images/icon/T01_controlbar_icon_add_to_home.png differ
diff --git a/res/images/icon/_06_myfiles_list_folder.png b/res/images/icon/_06_myfiles_list_folder.png
new file mode 100644 (file)
index 0000000..52b77ba
Binary files /dev/null and b/res/images/icon/_06_myfiles_list_folder.png differ
diff --git a/res/images/mw/T01-2_icon_close.png b/res/images/mw/T01-2_icon_close.png
new file mode 100755 (executable)
index 0000000..535503b
Binary files /dev/null and b/res/images/mw/T01-2_icon_close.png differ
diff --git a/res/images/mw/T01-2_icon_full_size.png b/res/images/mw/T01-2_icon_full_size.png
new file mode 100755 (executable)
index 0000000..49b535c
Binary files /dev/null and b/res/images/mw/T01-2_icon_full_size.png differ
diff --git a/res/images/mw/T01-2_icon_hide_panel.png b/res/images/mw/T01-2_icon_hide_panel.png
new file mode 100755 (executable)
index 0000000..df600e1
Binary files /dev/null and b/res/images/mw/T01-2_icon_hide_panel.png differ
diff --git a/res/images/mw/T01-2_icon_open_panel.png b/res/images/mw/T01-2_icon_open_panel.png
new file mode 100755 (executable)
index 0000000..df473a6
Binary files /dev/null and b/res/images/mw/T01-2_icon_open_panel.png differ
diff --git a/res/images/mw/T01-2_multiscreen_bg.png b/res/images/mw/T01-2_multiscreen_bg.png
new file mode 100755 (executable)
index 0000000..e509e80
Binary files /dev/null and b/res/images/mw/T01-2_multiscreen_bg.png differ
diff --git a/res/images/mw/T01-2_multiscreen_bg_press.png b/res/images/mw/T01-2_multiscreen_bg_press.png
new file mode 100755 (executable)
index 0000000..72463d6
Binary files /dev/null and b/res/images/mw/T01-2_multiscreen_bg_press.png differ
diff --git a/res/images/mw/T01-2_multiscreen_player_bg.png b/res/images/mw/T01-2_multiscreen_player_bg.png
new file mode 100755 (executable)
index 0000000..17b8cc8
Binary files /dev/null and b/res/images/mw/T01-2_multiscreen_player_bg.png differ
diff --git a/res/images/mw/T01-2_player_icon_FF.png b/res/images/mw/T01-2_player_icon_FF.png
new file mode 100755 (executable)
index 0000000..c53ca33
Binary files /dev/null and b/res/images/mw/T01-2_player_icon_FF.png differ
diff --git a/res/images/mw/T01-2_player_icon_FF_press.png b/res/images/mw/T01-2_player_icon_FF_press.png
new file mode 100755 (executable)
index 0000000..76fdaee
Binary files /dev/null and b/res/images/mw/T01-2_player_icon_FF_press.png differ
diff --git a/res/images/mw/T01-2_player_icon_Pause.png b/res/images/mw/T01-2_player_icon_Pause.png
new file mode 100755 (executable)
index 0000000..367d26d
Binary files /dev/null and b/res/images/mw/T01-2_player_icon_Pause.png differ
diff --git a/res/images/mw/T01-2_player_icon_Pause_press.png b/res/images/mw/T01-2_player_icon_Pause_press.png
new file mode 100755 (executable)
index 0000000..65b0d49
Binary files /dev/null and b/res/images/mw/T01-2_player_icon_Pause_press.png differ
diff --git a/res/images/mw/T01-2_player_icon_Play.png b/res/images/mw/T01-2_player_icon_Play.png
new file mode 100755 (executable)
index 0000000..4ef93d9
Binary files /dev/null and b/res/images/mw/T01-2_player_icon_Play.png differ
diff --git a/res/images/mw/T01-2_player_icon_Play_press.png b/res/images/mw/T01-2_player_icon_Play_press.png
new file mode 100755 (executable)
index 0000000..123bd29
Binary files /dev/null and b/res/images/mw/T01-2_player_icon_Play_press.png differ
diff --git a/res/images/mw/T01-2_player_icon_REW.png b/res/images/mw/T01-2_player_icon_REW.png
new file mode 100755 (executable)
index 0000000..4ceb469
Binary files /dev/null and b/res/images/mw/T01-2_player_icon_REW.png differ
diff --git a/res/images/mw/T01-2_player_icon_REW_press.png b/res/images/mw/T01-2_player_icon_REW_press.png
new file mode 100755 (executable)
index 0000000..82f9b5e
Binary files /dev/null and b/res/images/mw/T01-2_player_icon_REW_press.png differ
diff --git a/res/images/mw/T01-2_resize_controller.png b/res/images/mw/T01-2_resize_controller.png
new file mode 100755 (executable)
index 0000000..b1fee34
Binary files /dev/null and b/res/images/mw/T01-2_resize_controller.png differ
diff --git a/res/images/mw/T01-2_resize_controller_press.png b/res/images/mw/T01-2_resize_controller_press.png
new file mode 100755 (executable)
index 0000000..185866b
Binary files /dev/null and b/res/images/mw/T01-2_resize_controller_press.png differ
diff --git a/res/images/navibar_item_separator_shadow.png b/res/images/navibar_item_separator_shadow.png
new file mode 100755 (executable)
index 0000000..05d347d
Binary files /dev/null and b/res/images/navibar_item_separator_shadow.png differ
diff --git a/res/images/naviframe_optionheader.png b/res/images/naviframe_optionheader.png
new file mode 100755 (executable)
index 0000000..e90f19c
Binary files /dev/null and b/res/images/naviframe_optionheader.png differ
diff --git a/res/images/naviframe_optionheader_arrow.png b/res/images/naviframe_optionheader_arrow.png
new file mode 100755 (executable)
index 0000000..de84372
Binary files /dev/null and b/res/images/naviframe_optionheader_arrow.png differ
diff --git a/res/images/option/T01-2_icon_controller_connection_info.png b/res/images/option/T01-2_icon_controller_connection_info.png
new file mode 100755 (executable)
index 0000000..ac1beec
Binary files /dev/null and b/res/images/option/T01-2_icon_controller_connection_info.png differ
diff --git a/res/images/option/T01-2_icon_controller_more.png b/res/images/option/T01-2_icon_controller_more.png
new file mode 100755 (executable)
index 0000000..715a23d
Binary files /dev/null and b/res/images/option/T01-2_icon_controller_more.png differ
diff --git a/res/images/option/T01-2_icon_controller_multiwin.png b/res/images/option/T01-2_icon_controller_multiwin.png
new file mode 100755 (executable)
index 0000000..abc3dd4
Binary files /dev/null and b/res/images/option/T01-2_icon_controller_multiwin.png differ
diff --git a/res/images/option/T01-2_icon_controller_repeat_off.png b/res/images/option/T01-2_icon_controller_repeat_off.png
new file mode 100755 (executable)
index 0000000..3ab9f18
Binary files /dev/null and b/res/images/option/T01-2_icon_controller_repeat_off.png differ
diff --git a/res/images/option/T01-2_icon_controller_repeat_on.png b/res/images/option/T01-2_icon_controller_repeat_on.png
new file mode 100755 (executable)
index 0000000..42ea4cc
Binary files /dev/null and b/res/images/option/T01-2_icon_controller_repeat_on.png differ
diff --git a/res/images/option/T01-2_icon_controller_sa.png b/res/images/option/T01-2_icon_controller_sa.png
new file mode 100755 (executable)
index 0000000..0619a24
Binary files /dev/null and b/res/images/option/T01-2_icon_controller_sa.png differ
diff --git a/res/images/option/T01-2_icon_controller_trim.png b/res/images/option/T01-2_icon_controller_trim.png
new file mode 100755 (executable)
index 0000000..f1e796a
Binary files /dev/null and b/res/images/option/T01-2_icon_controller_trim.png differ
diff --git a/res/images/option/T01-2_icon_function_bg.png b/res/images/option/T01-2_icon_function_bg.png
new file mode 100755 (executable)
index 0000000..7354c9e
Binary files /dev/null and b/res/images/option/T01-2_icon_function_bg.png differ
diff --git a/res/images/option/T01-2_icon_function_bookmark.png b/res/images/option/T01-2_icon_function_bookmark.png
new file mode 100755 (executable)
index 0000000..76e182f
Binary files /dev/null and b/res/images/option/T01-2_icon_function_bookmark.png differ
diff --git a/res/images/option/T01-2_icon_function_screenmode.png b/res/images/option/T01-2_icon_function_screenmode.png
new file mode 100755 (executable)
index 0000000..6c9a5d3
Binary files /dev/null and b/res/images/option/T01-2_icon_function_screenmode.png differ
diff --git a/res/images/option/T01-2_icon_function_screenmode02.png b/res/images/option/T01-2_icon_function_screenmode02.png
new file mode 100755 (executable)
index 0000000..3a545b6
Binary files /dev/null and b/res/images/option/T01-2_icon_function_screenmode02.png differ
diff --git a/res/images/option/T01-2_icon_function_screenmode03.png b/res/images/option/T01-2_icon_function_screenmode03.png
new file mode 100755 (executable)
index 0000000..9c001f6
Binary files /dev/null and b/res/images/option/T01-2_icon_function_screenmode03.png differ
diff --git a/res/images/option/T01-2_icon_function_select_bg.png b/res/images/option/T01-2_icon_function_select_bg.png
new file mode 100755 (executable)
index 0000000..614c426
Binary files /dev/null and b/res/images/option/T01-2_icon_function_select_bg.png differ
diff --git a/res/images/option/T01-2_icon_function_share.png b/res/images/option/T01-2_icon_function_share.png
new file mode 100755 (executable)
index 0000000..39d8972
Binary files /dev/null and b/res/images/option/T01-2_icon_function_share.png differ
diff --git a/res/images/option/T01-2_icon_function_subtitle.png b/res/images/option/T01-2_icon_function_subtitle.png
new file mode 100755 (executable)
index 0000000..51207bb
Binary files /dev/null and b/res/images/option/T01-2_icon_function_subtitle.png differ
diff --git a/res/images/option/T01-2_icon_function_trim.png b/res/images/option/T01-2_icon_function_trim.png
new file mode 100755 (executable)
index 0000000..0619696
Binary files /dev/null and b/res/images/option/T01-2_icon_function_trim.png differ
diff --git a/res/images/org.tizen.video-player.png b/res/images/org.tizen.video-player.png
new file mode 100755 (executable)
index 0000000..8814085
Binary files /dev/null and b/res/images/org.tizen.video-player.png differ
diff --git a/res/images/panel/T01-2_btn_toolbar_back.png b/res/images/panel/T01-2_btn_toolbar_back.png
new file mode 100755 (executable)
index 0000000..e58ce84
Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_back.png differ
diff --git a/res/images/panel/T01-2_btn_toolbar_back_press.png b/res/images/panel/T01-2_btn_toolbar_back_press.png
new file mode 100755 (executable)
index 0000000..0852249
Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_back_press.png differ
diff --git a/res/images/panel/T01-2_btn_toolbar_volum.png b/res/images/panel/T01-2_btn_toolbar_volum.png
new file mode 100755 (executable)
index 0000000..3e09485
Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_volum.png differ
diff --git a/res/images/panel/T01-2_btn_toolbar_volum_press.png b/res/images/panel/T01-2_btn_toolbar_volum_press.png
new file mode 100755 (executable)
index 0000000..d07e670
Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_volum_press.png differ
diff --git a/res/images/panel/T01-2_btn_toolbar_volume.png b/res/images/panel/T01-2_btn_toolbar_volume.png
new file mode 100755 (executable)
index 0000000..f7c10e8
Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_volume.png differ
diff --git a/res/images/panel/T01-2_controller_progress_bar.png b/res/images/panel/T01-2_controller_progress_bar.png
new file mode 100755 (executable)
index 0000000..03f54cf
Binary files /dev/null and b/res/images/panel/T01-2_controller_progress_bar.png differ
diff --git a/res/images/panel/T01-2_controller_progress_bg.png b/res/images/panel/T01-2_controller_progress_bg.png
new file mode 100755 (executable)
index 0000000..f020771
Binary files /dev/null and b/res/images/panel/T01-2_controller_progress_bg.png differ
diff --git a/res/images/panel/T01-2_icon_controller_repeat.png b/res/images/panel/T01-2_icon_controller_repeat.png
new file mode 100755 (executable)
index 0000000..e8012e3
Binary files /dev/null and b/res/images/panel/T01-2_icon_controller_repeat.png differ
diff --git a/res/images/panel/T01-2_icon_controller_repeat_1.png b/res/images/panel/T01-2_icon_controller_repeat_1.png
new file mode 100755 (executable)
index 0000000..941301f
Binary files /dev/null and b/res/images/panel/T01-2_icon_controller_repeat_1.png differ
diff --git a/res/images/panel/T01-2_icon_controller_repeat_all.png b/res/images/panel/T01-2_icon_controller_repeat_all.png
new file mode 100755 (executable)
index 0000000..bdd28af
Binary files /dev/null and b/res/images/panel/T01-2_icon_controller_repeat_all.png differ
diff --git a/res/images/panel/T01-2_icon_controller_sa.png b/res/images/panel/T01-2_icon_controller_sa.png
new file mode 100755 (executable)
index 0000000..3b6b488
Binary files /dev/null and b/res/images/panel/T01-2_icon_controller_sa.png differ
diff --git a/res/images/panel/T01-2_icon_toolbar_cancel.png b/res/images/panel/T01-2_icon_toolbar_cancel.png
new file mode 100755 (executable)
index 0000000..5cb7824
Binary files /dev/null and b/res/images/panel/T01-2_icon_toolbar_cancel.png differ
diff --git a/res/images/panel/T01-2_icon_toolbar_done.png b/res/images/panel/T01-2_icon_toolbar_done.png
new file mode 100755 (executable)
index 0000000..46304a4
Binary files /dev/null and b/res/images/panel/T01-2_icon_toolbar_done.png differ
diff --git a/res/images/panel/T02_volume_icon_Mute.png b/res/images/panel/T02_volume_icon_Mute.png
new file mode 100755 (executable)
index 0000000..2918312
Binary files /dev/null and b/res/images/panel/T02_volume_icon_Mute.png differ
diff --git a/res/images/subtitle/T01-2_sync_btn_bg.png b/res/images/subtitle/T01-2_sync_btn_bg.png
new file mode 100755 (executable)
index 0000000..a7a8fd0
Binary files /dev/null and b/res/images/subtitle/T01-2_sync_btn_bg.png differ
diff --git a/res/images/subtitle/T01-2_sync_faster.png b/res/images/subtitle/T01-2_sync_faster.png
new file mode 100755 (executable)
index 0000000..44cb065
Binary files /dev/null and b/res/images/subtitle/T01-2_sync_faster.png differ
diff --git a/res/images/subtitle/T01-2_sync_list_press.png b/res/images/subtitle/T01-2_sync_list_press.png
new file mode 100755 (executable)
index 0000000..f252cc3
Binary files /dev/null and b/res/images/subtitle/T01-2_sync_list_press.png differ
diff --git a/res/images/subtitle/T01-2_sync_slowly.png b/res/images/subtitle/T01-2_sync_slowly.png
new file mode 100755 (executable)
index 0000000..92b43e6
Binary files /dev/null and b/res/images/subtitle/T01-2_sync_slowly.png differ
diff --git a/res/images/toolbar/T01-2_btn_toolbar_back.png b/res/images/toolbar/T01-2_btn_toolbar_back.png
new file mode 100755 (executable)
index 0000000..e58ce84
Binary files /dev/null and b/res/images/toolbar/T01-2_btn_toolbar_back.png differ
diff --git a/res/images/toolbar/T01-2_btn_toolbar_volum.png b/res/images/toolbar/T01-2_btn_toolbar_volum.png
new file mode 100755 (executable)
index 0000000..3e09485
Binary files /dev/null and b/res/images/toolbar/T01-2_btn_toolbar_volum.png differ
diff --git a/res/images/toolbar/T01-2_btn_toolbar_volume.png b/res/images/toolbar/T01-2_btn_toolbar_volume.png
new file mode 100755 (executable)
index 0000000..f7c10e8
Binary files /dev/null and b/res/images/toolbar/T01-2_btn_toolbar_volume.png differ
diff --git a/res/images/toolbar/T01-2_controlbar_icon_folder.png b/res/images/toolbar/T01-2_controlbar_icon_folder.png
new file mode 100644 (file)
index 0000000..53500ff
Binary files /dev/null and b/res/images/toolbar/T01-2_controlbar_icon_folder.png differ
diff --git a/res/images/toolbar/T01-2_controlbar_icon_near_device.png b/res/images/toolbar/T01-2_controlbar_icon_near_device.png
new file mode 100644 (file)
index 0000000..0520970
Binary files /dev/null and b/res/images/toolbar/T01-2_controlbar_icon_near_device.png differ
diff --git a/res/images/toolbar/T01-2_controlbar_icon_recorded.png b/res/images/toolbar/T01-2_controlbar_icon_recorded.png
new file mode 100644 (file)
index 0000000..0717057
Binary files /dev/null and b/res/images/toolbar/T01-2_controlbar_icon_recorded.png differ
diff --git a/res/images/toolbar/T01-2_controlbar_icon_video.png b/res/images/toolbar/T01-2_controlbar_icon_video.png
new file mode 100644 (file)
index 0000000..da41533
Binary files /dev/null and b/res/images/toolbar/T01-2_controlbar_icon_video.png differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_cancel.png b/res/images/toolbar/T01-2_icon_toolbar_cancel.png
new file mode 100755 (executable)
index 0000000..5cb7824
Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_cancel.png differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_delete.png b/res/images/toolbar/T01-2_icon_toolbar_delete.png
new file mode 100755 (executable)
index 0000000..757aee3
Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_delete.png differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_done.png b/res/images/toolbar/T01-2_icon_toolbar_done.png
new file mode 100755 (executable)
index 0000000..46304a4
Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_done.png differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_setting.png b/res/images/toolbar/T01-2_icon_toolbar_setting.png
new file mode 100644 (file)
index 0000000..4dcd409
Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_setting.png differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_sort_by.png b/res/images/toolbar/T01-2_icon_toolbar_sort_by.png
new file mode 100644 (file)
index 0000000..e252d2b
Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_sort_by.png differ
diff --git a/res/images/toolbar/T02_controlbar_icon_search.png b/res/images/toolbar/T02_controlbar_icon_search.png
new file mode 100755 (executable)
index 0000000..e748043
Binary files /dev/null and b/res/images/toolbar/T02_controlbar_icon_search.png differ
diff --git a/res/images/toolbar/T02_volume_icon_Mute.png b/res/images/toolbar/T02_volume_icon_Mute.png
new file mode 100755 (executable)
index 0000000..2918312
Binary files /dev/null and b/res/images/toolbar/T02_volume_icon_Mute.png differ
diff --git a/res/images/trim/T01-2_controller_track_ball.png b/res/images/trim/T01-2_controller_track_ball.png
new file mode 100755 (executable)
index 0000000..0f92633
Binary files /dev/null and b/res/images/trim/T01-2_controller_track_ball.png differ
diff --git a/res/images/trim/T01-2_controller_trimming_handle_beginning.png b/res/images/trim/T01-2_controller_trimming_handle_beginning.png
new file mode 100755 (executable)
index 0000000..46dbb93
Binary files /dev/null and b/res/images/trim/T01-2_controller_trimming_handle_beginning.png differ
diff --git a/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png b/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png
new file mode 100755 (executable)
index 0000000..f610a78
Binary files /dev/null and b/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png differ
diff --git a/res/images/trim/T01-2_controller_trimming_handle_ending.png b/res/images/trim/T01-2_controller_trimming_handle_ending.png
new file mode 100755 (executable)
index 0000000..3984517
Binary files /dev/null and b/res/images/trim/T01-2_controller_trimming_handle_ending.png differ
diff --git a/res/images/trim/T01-2_controller_trimming_handle_ending_press.png b/res/images/trim/T01-2_controller_trimming_handle_ending_press.png
new file mode 100755 (executable)
index 0000000..bae372a
Binary files /dev/null and b/res/images/trim/T01-2_controller_trimming_handle_ending_press.png differ
diff --git a/res/images/trim/T01-2_icon_toolbar_forward.png b/res/images/trim/T01-2_icon_toolbar_forward.png
new file mode 100755 (executable)
index 0000000..a6aaf21
Binary files /dev/null and b/res/images/trim/T01-2_icon_toolbar_forward.png differ
diff --git a/res/images/trim/T01-2_icon_toolbar_reverse.png b/res/images/trim/T01-2_icon_toolbar_reverse.png
new file mode 100755 (executable)
index 0000000..6b9d2d8
Binary files /dev/null and b/res/images/trim/T01-2_icon_toolbar_reverse.png differ
diff --git a/res/images/trim/gallery_video_fastforward_1x.png b/res/images/trim/gallery_video_fastforward_1x.png
new file mode 100755 (executable)
index 0000000..c1ea6b1
Binary files /dev/null and b/res/images/trim/gallery_video_fastforward_1x.png differ
diff --git a/res/images/trim/gallery_video_fastforward_2x.png b/res/images/trim/gallery_video_fastforward_2x.png
new file mode 100755 (executable)
index 0000000..ea0486c
Binary files /dev/null and b/res/images/trim/gallery_video_fastforward_2x.png differ
diff --git a/res/images/trim/gallery_video_fastforward_3x.png b/res/images/trim/gallery_video_fastforward_3x.png
new file mode 100755 (executable)
index 0000000..6e16eff
Binary files /dev/null and b/res/images/trim/gallery_video_fastforward_3x.png differ
diff --git a/res/images/trim/gallery_video_fastforward_4x.png b/res/images/trim/gallery_video_fastforward_4x.png
new file mode 100755 (executable)
index 0000000..a1eeacb
Binary files /dev/null and b/res/images/trim/gallery_video_fastforward_4x.png differ
diff --git a/res/images/trim/gallery_video_rewind_1x.png b/res/images/trim/gallery_video_rewind_1x.png
new file mode 100755 (executable)
index 0000000..31f3696
Binary files /dev/null and b/res/images/trim/gallery_video_rewind_1x.png differ
diff --git a/res/images/trim/gallery_video_rewind_2x.png b/res/images/trim/gallery_video_rewind_2x.png
new file mode 100755 (executable)
index 0000000..17c17c9
Binary files /dev/null and b/res/images/trim/gallery_video_rewind_2x.png differ
diff --git a/res/images/trim/gallery_video_rewind_3x.png b/res/images/trim/gallery_video_rewind_3x.png
new file mode 100755 (executable)
index 0000000..badb983
Binary files /dev/null and b/res/images/trim/gallery_video_rewind_3x.png differ
diff --git a/res/images/trim/gallery_video_rewind_4x.png b/res/images/trim/gallery_video_rewind_4x.png
new file mode 100755 (executable)
index 0000000..a855514
Binary files /dev/null and b/res/images/trim/gallery_video_rewind_4x.png differ
diff --git a/res/images/video_sound_path_dim.png b/res/images/video_sound_path_dim.png
new file mode 100755 (executable)
index 0000000..02b5867
Binary files /dev/null and b/res/images/video_sound_path_dim.png differ
diff --git a/res/images/volume/T01-2_player_progress_bar.png b/res/images/volume/T01-2_player_progress_bar.png
new file mode 100755 (executable)
index 0000000..00d960c
Binary files /dev/null and b/res/images/volume/T01-2_player_progress_bar.png differ
diff --git a/res/images/volume/T01-2_player_progress_bg.png b/res/images/volume/T01-2_player_progress_bg.png
new file mode 100755 (executable)
index 0000000..a9a629a
Binary files /dev/null and b/res/images/volume/T01-2_player_progress_bg.png differ
diff --git a/res/images/volume/T01-2_player_volume_handle.png b/res/images/volume/T01-2_player_volume_handle.png
new file mode 100755 (executable)
index 0000000..a5bb976
Binary files /dev/null and b/res/images/volume/T01-2_player_volume_handle.png differ
diff --git a/res/images/volume/T01-2_player_volume_handle_press.png b/res/images/volume/T01-2_player_volume_handle_press.png
new file mode 100755 (executable)
index 0000000..598fb63
Binary files /dev/null and b/res/images/volume/T01-2_player_volume_handle_press.png differ
diff --git a/res/images/volume/T01-2_volume_icon_01.png b/res/images/volume/T01-2_volume_icon_01.png
new file mode 100755 (executable)
index 0000000..da5bf5d
Binary files /dev/null and b/res/images/volume/T01-2_volume_icon_01.png differ
diff --git a/res/images/volume/T01-2_volume_icon_02.png b/res/images/volume/T01-2_volume_icon_02.png
new file mode 100755 (executable)
index 0000000..8020ecb
Binary files /dev/null and b/res/images/volume/T01-2_volume_icon_02.png differ
diff --git a/res/images/white/common/00_popup_bubble_bg.png b/res/images/white/common/00_popup_bubble_bg.png
new file mode 100755 (executable)
index 0000000..11b536d
Binary files /dev/null and b/res/images/white/common/00_popup_bubble_bg.png differ
diff --git a/res/images/white/common/00_popup_tail_bottom.png b/res/images/white/common/00_popup_tail_bottom.png
new file mode 100755 (executable)
index 0000000..a37b8be
Binary files /dev/null and b/res/images/white/common/00_popup_tail_bottom.png differ
diff --git a/res/images/white/common/00_popup_tail_left.png b/res/images/white/common/00_popup_tail_left.png
new file mode 100755 (executable)
index 0000000..593c109
Binary files /dev/null and b/res/images/white/common/00_popup_tail_left.png differ
diff --git a/res/images/white/common/00_popup_tail_right.png b/res/images/white/common/00_popup_tail_right.png
new file mode 100755 (executable)
index 0000000..0b451f7
Binary files /dev/null and b/res/images/white/common/00_popup_tail_right.png differ
diff --git a/res/images/white/common/00_popup_tail_top.png b/res/images/white/common/00_popup_tail_top.png
new file mode 100755 (executable)
index 0000000..d99ce87
Binary files /dev/null and b/res/images/white/common/00_popup_tail_top.png differ
diff --git a/res/images/white/common/00_winset_control_toolbar_bg.png b/res/images/white/common/00_winset_control_toolbar_bg.png
new file mode 100755 (executable)
index 0000000..d21ae34
Binary files /dev/null and b/res/images/white/common/00_winset_control_toolbar_bg.png differ
diff --git a/res/images/white/common/00_winset_control_top_arrow.png b/res/images/white/common/00_winset_control_top_arrow.png
new file mode 100755 (executable)
index 0000000..2d0503d
Binary files /dev/null and b/res/images/white/common/00_winset_control_top_arrow.png differ
diff --git a/res/images/white/common/00_winset_control_top_bg.png b/res/images/white/common/00_winset_control_top_bg.png
new file mode 100755 (executable)
index 0000000..187516e
Binary files /dev/null and b/res/images/white/common/00_winset_control_top_bg.png differ
diff --git a/res/images/white/common/00_winset_title_line.png b/res/images/white/common/00_winset_title_line.png
new file mode 100755 (executable)
index 0000000..2be73aa
Binary files /dev/null and b/res/images/white/common/00_winset_title_line.png differ
diff --git a/res/images/white/common/01_scroller.png b/res/images/white/common/01_scroller.png
new file mode 100755 (executable)
index 0000000..88ee4ab
Binary files /dev/null and b/res/images/white/common/01_scroller.png differ
diff --git a/res/images/white/common/T01-2_popup_arrow.png b/res/images/white/common/T01-2_popup_arrow.png
new file mode 100755 (executable)
index 0000000..1644c53
Binary files /dev/null and b/res/images/white/common/T01-2_popup_arrow.png differ
diff --git a/res/images/white/common/T01-2_popup_bg.png b/res/images/white/common/T01-2_popup_bg.png
new file mode 100755 (executable)
index 0000000..aa3a361
Binary files /dev/null and b/res/images/white/common/T01-2_popup_bg.png differ
diff --git a/res/images/white/common/T01-2_popup_btn_bg.png b/res/images/white/common/T01-2_popup_btn_bg.png
new file mode 100755 (executable)
index 0000000..e86b399
Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_bg.png differ
diff --git a/res/images/white/common/T01-2_popup_btn_bg2.9.png b/res/images/white/common/T01-2_popup_btn_bg2.9.png
new file mode 100755 (executable)
index 0000000..53427eb
Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_bg2.9.png differ
diff --git a/res/images/white/common/T01-2_popup_btn_normal.png b/res/images/white/common/T01-2_popup_btn_normal.png
new file mode 100755 (executable)
index 0000000..c4be89a
Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_normal.png differ
diff --git a/res/images/white/common/T01-2_popup_btn_press_bottom.png b/res/images/white/common/T01-2_popup_btn_press_bottom.png
new file mode 100755 (executable)
index 0000000..c62a838
Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_press_bottom.png differ
diff --git a/res/images/white/common/T01-2_popup_btn_press_middle.png b/res/images/white/common/T01-2_popup_btn_press_middle.png
new file mode 100755 (executable)
index 0000000..f60efb0
Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_press_middle.png differ
diff --git a/res/images/white/common/T01-2_popup_btn_press_top.png b/res/images/white/common/T01-2_popup_btn_press_top.png
new file mode 100755 (executable)
index 0000000..6da7da9
Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_press_top.png differ
diff --git a/res/images/white/common/T01-2_popup_divider.png b/res/images/white/common/T01-2_popup_divider.png
new file mode 100755 (executable)
index 0000000..16ceb28
Binary files /dev/null and b/res/images/white/common/T01-2_popup_divider.png differ
diff --git a/res/images/white/common/T01-2_title_btn_bg.png b/res/images/white/common/T01-2_title_btn_bg.png
new file mode 100755 (executable)
index 0000000..fe53ace
Binary files /dev/null and b/res/images/white/common/T01-2_title_btn_bg.png differ
diff --git a/res/images/white/common/T01-2_title_btn_bg_press_01.png b/res/images/white/common/T01-2_title_btn_bg_press_01.png
new file mode 100755 (executable)
index 0000000..c74d762
Binary files /dev/null and b/res/images/white/common/T01-2_title_btn_bg_press_01.png differ
diff --git a/res/images/white/common/T01-2_title_btn_bg_press_02.png b/res/images/white/common/T01-2_title_btn_bg_press_02.png
new file mode 100755 (executable)
index 0000000..4c56281
Binary files /dev/null and b/res/images/white/common/T01-2_title_btn_bg_press_02.png differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_next.png b/res/images/white/control/T01-2_icon_toolbar_next.png
new file mode 100755 (executable)
index 0000000..413b481
Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_next.png differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_pause.png b/res/images/white/control/T01-2_icon_toolbar_pause.png
new file mode 100755 (executable)
index 0000000..cd95fae
Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_pause.png differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_play.png b/res/images/white/control/T01-2_icon_toolbar_play.png
new file mode 100755 (executable)
index 0000000..e939a59
Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_play.png differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_previous.png b/res/images/white/control/T01-2_icon_toolbar_previous.png
new file mode 100755 (executable)
index 0000000..c57dd54
Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_previous.png differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_stop.png b/res/images/white/control/T01-2_icon_toolbar_stop.png
new file mode 100755 (executable)
index 0000000..d2ce746
Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_stop.png differ
diff --git a/res/images/white/panel/T01-2_btn_toolbar_back.png b/res/images/white/panel/T01-2_btn_toolbar_back.png
new file mode 100755 (executable)
index 0000000..e58ce84
Binary files /dev/null and b/res/images/white/panel/T01-2_btn_toolbar_back.png differ
diff --git a/res/images/white/panel/T01-2_btn_toolbar_volume.png b/res/images/white/panel/T01-2_btn_toolbar_volume.png
new file mode 100755 (executable)
index 0000000..f7c10e8
Binary files /dev/null and b/res/images/white/panel/T01-2_btn_toolbar_volume.png differ
diff --git a/res/images/white/panel/T02_volume_icon_Mute.png b/res/images/white/panel/T02_volume_icon_Mute.png
new file mode 100755 (executable)
index 0000000..2918312
Binary files /dev/null and b/res/images/white/panel/T02_volume_icon_Mute.png differ
diff --git a/res/po/CMakeLists.txt b/res/po/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..407cb2b
--- /dev/null
@@ -0,0 +1,23 @@
+# for i18n
+
+SET(POFILES el_GR.po es_ES.po it_IT.po ko_KR.po pt_PT.po tr_TR.po zh_HK.po de_DE.po en.po fr_FR.po ja_JP.po nl_NL.po ru_RU.po zh_CN.po zh_TW.po)
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/res/po/POTFILES.in b/res/po/POTFILES.in
new file mode 100755 (executable)
index 0000000..eb1a31e
--- /dev/null
@@ -0,0 +1,2 @@
+# List of source files containing translatable strings.
+PlayViewCtrl.c
diff --git a/res/po/de_DE.po b/res/po/de_DE.po
new file mode 100755 (executable)
index 0000000..c000c40
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Bereits vorhanden"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Verbindung mit Bluetooth-Stereo-Headset getrennt"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "DRM-Datei nur für Typ Sperre weiterl. unterstützt"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Neues Tag"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Original"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Im Stumm-Modus abspielen?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "DRM-Datei kann nicht wiedergegeben werden"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Senden nicht möglich. Dieses Element ist gegen Weiterleitung gesperrt."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Nicht unterstützte DivX® DRM-Version"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Lesezeichen"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Fertig"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favorit"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Details"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Auflösung"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Favorit hinzufügen"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Nachricht"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Auf AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Als neues Video zuschn."
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Originalvideo zuschneiden"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Konto"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Shortcut hinzufügen"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Tag hzfg."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Favoritenliste voll. Löschen Sie einige Favoriten"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Verbindung zum Server getrennt"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Gateway-Timeout"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Interner Serverfehler"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Lizenz abgelaufen"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Ladevorgang läuft..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Keine Dateien"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Kein Speicher mehr"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Speichern unter"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Um DivX® geschützte Videos wiederzugeben, muss Ihr Gerät registriert sein. Registrierungs Code: %s. Registrieren Sie es unter http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Video wird gekürzt..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Verbinden nicht möglich"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Wiedergabe nicht möglich. Ungültiges Paket vom Server"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Nicht autorisierter Videoausgang. Verwenden Sie den analogen Ausgang, um dieses DivX® geschützte Video anzusehen."
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Nicht autorisierter Videoausgang. Verwenden Sie HDMI, um dieses DivX® geschützte Video anzusehen."
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Ihr Gerät ist nicht autorisiert, dieses kopiergeschützte DivX® Video abzuspielen."
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Zu-\nschneiden"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Video-Player"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Keine Mediendatei"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Video kann nicht wiedergegeben werden. Fehler aufgetreten."
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Dateigröße"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Zuschnei."
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Video freig."
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Videoliste"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Bildseitenformat beibehalten"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Einstellen als"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Untertitel"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Datei kann nicht gefunden werden"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Video kann nicht wiedergegeben werden. Ungültige Streamingdaten"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nicht unterstütztes Audioformat"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nicht unterstützter Dateityp"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Nicht unterst. F."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nicht unterstütztes Videoformat"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Auflösung"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Video kann während eines Anrufs nicht wiedergegeben werden"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Aufnahme"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Video"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1-Kanal"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1-Sound-Effekte nur im Kopfhörer-Modus möglich"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Breite"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Länge"
+
diff --git a/res/po/el_GR.po b/res/po/el_GR.po
new file mode 100755 (executable)
index 0000000..e3e9716
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Υπάρχει ήδη"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Το κύριο στερεοφωνικό σετ ακουστικών Bluetooth αποσυνδέθηκε"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Το αρχείο DRM υποστηρ. μόνο για κλείδωμα προώθησης"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Νέα ετικέτα"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Αρχικό"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Αναπαραγωγή σε αθόρυβη λειτουργία;"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή του αρχείου DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Δεν είναι δυνατή η αποστολή. Έχει απενεργοποιηθεί η δυνατότητα προώθησης"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Μη υποστηριζόμενη έκδοση DivX DRM"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Σελιδοδείκτης"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Τέλος"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Αγαπημένα"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Λεπτομέρειες"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Ανάλυση"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Προσθήκη σελιδοδείκτη"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Μήνυμα"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Όνομα"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Στο AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Περικοπή ως νέο βίντεο"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Περικοπή αρχικού βίντεο"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Λογαριασμός"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Προσθήκη συντόμευσης"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Πρ. ετικ."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Η λίστα σελιδοδεικτών είναι πλήρης. Θέλετε να διαγράψετε μερικούς σελιδοδείκτες"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Αποσυνδέθηκε από τον διακομιστή"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Λήξη χρονικού ορίου για πύλη"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Σφάλμα"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Η άδεια χρήσης έχει λήξει"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Φόρτωση..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Δεν βρέθηκαν αρχεία"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Η μνήμη εξαντλήθηκε"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Αποθήκευση ως"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Για την αναπαραγωγή προστατευμένων βίντεο DivX, η συσκευή σας πρέπει να είναι εγγεγραμμένη. Κωδικός εγγραφής: %s. Κάντε εγγραφή στη διεύθυνση http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Περικοπή βίντεο..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Δεν είναι δυνατή η σύνδεση"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή. Μη έγκυρο πακέτο από διακομιστή"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Μη εξουσιοδοτημένη έξοδος βίντεο. Χρησιμοποιήστε την αναλογική έξοδο για να προβάλλετε αυτό το προστατευμένο βίντεο DivX"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Μη εξουσιοδοτημένη έξοδος βίντεο. Χρησιμοποιήστε HDMI για να προβάλλετε αυτό το προστατευμένο βίντεο DivX"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Η συσκευή σας δεν έχει εξουσιοδότηση για αναπαραγωγή αυτού του προστατευμένου βίντεο DivX®"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Ξάκρισμα"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Βίντεο"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Δεν βρέθηκε αρχείο μέσων"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο. Προέκυψε σφάλμα"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Μέγεθος αρχείου"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Κόψιμο"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Κοινή χρ.βίν."
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Λίστα βίντεο"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Διατήρηση αναλογίας εικόνας"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Ορισμός ως"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Υπότιτλοι"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Δεν είναι δυνατή η εύρεση του αρχείου"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο. Μη έγκυρα δεδομένα ροής"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Μη υποστηριζόμενη μορφή ήχου"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Μη υποστηριζόμενος τύπος αρχείου"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Μη υποστ. μορφή"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Μη υποστηριζόμενη μορφή βίντεο"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Ανάλυση"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο κατά την κλήση"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Κανονικό"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Φωνή"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Ταινία"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1 καν."
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Τo εφέ ήχων του καναλιού 7.1 εκτελείται μ  στη λειτουργία ακουστικών"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Γεωγραφικό πλάτος"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Γεωγραφικό μήκος"
+
diff --git a/res/po/en.po b/res/po/en.po
new file mode 100755 (executable)
index 0000000..e39a146
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Already exists"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Bluetooth stereo headset disconnected"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "DRM file not supported except for forward lock type"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "New tag"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Original"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Play in Silent mode?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Unable to play DRM file"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Unable to send. This item is forward-locked"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Unsupported DivX DRM version"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Bookmark"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Done"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favourite"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Details"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Add bookmark"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "On AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Trim as new video"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Trim original video"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Account"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Add shortcut"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Add tag"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bookmark list full. Delete some bookmarks"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Disconnected from server"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Gateway timeout"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Internal server error"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Licence expired"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Loading..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "No files"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Out of memories"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Save as"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "To play DivX locked videos, your device must be registered. Registration code: %s Register at http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Trimming video..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Unable to connect"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Unable to play. Invalid packet from server"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Unauthorized Video Output. Please use Analog output to view this DivX Protected video"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Unauthorized Video Output. Please use HDMI to view this DivX Protected video"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Your device is not authorized to play this DivX® protected video."
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Trim"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Video player"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "No media file"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Unable to play video. Error occurred"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "File size"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Trim"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Share video"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Video list"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Keep aspect ratio"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Set as"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Subtitles"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Unable to find file"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Unable to play video. Invalid streaming data"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Unsupported audio format"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Unsupported format"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Unsupported video format"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Unable to play video during call"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Voice"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Movie"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1ch"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1 channel sound effect works in earphone mode only"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Longitude"
+
diff --git a/res/po/es_ES.po b/res/po/es_ES.po
new file mode 100755 (executable)
index 0000000..89ad5c6
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Ya existe"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Auricular estéreo Bluetooth desconectado"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Archivo DRM incompat, salvo para tipo bloq reenvío"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Nueva etiqueta"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Original"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "¿Reproducir en modo silencio?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "No se puede reproducir archivo DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Imposible enviar. Este elemento está bloqueado para el reenvío."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Versión DivX DRM no admitida"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Favorito"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Finalizado"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favorito"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Detalles"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Añadir elemento favorito"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Mensajes"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Nombre"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "En AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Recortar como vídeo nuevo"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Recortar vídeo original"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Cuenta"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Agregar acceso directo"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Añad etiq"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista de favoritos llena. Elimine algunos favoritos"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Desconectado del servidor"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Tiempo de espera de puerta de enlace"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Error interno del servidor"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "La licencia ha caducado"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Cargando..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Ningún archivo"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Sin memoria"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Guardar como"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Para reproducir vídeos DivX protegidos, su dispositivo debe estar registrado. Código de registro: %s. Regístrese en http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Recortando vídeo..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "No se puede conectar"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "No se puede reproducir. Paquete no válido procedente del servidor"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Salida de vídeo no autorizada. Utilice la salida analógica para ver este vídeo DivX protegido"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Salida de vídeo no autorizada. Utilice HDMI para ver este vídeo DivX protegido"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Su aparato no esta autorizado para reproducir este video de DivX® protegido."
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Recortar"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Vídeos"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "No hay archivo multimedia"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "No se puede reproducir vídeo. Se ha producido un error"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Tamaño del archivo"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Recortar"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Compart vídeo"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Lista de vídeos"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Mantener relación de aspecto"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Definir como"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Subtítulos"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "No se puede encontrar el archivo"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "No se puede reproducir vídeo. Datos de streaming no válidos"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato de audio no compatible"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de archivo no admitido"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Formato no admitido"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato de vídeo no admitido"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "No se puede reproducir vídeo durante la llamada"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Voz"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Película"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "Can. 7.1"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "El efecto de sonido del canal 7.1 sólo funciona en modo auricular"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Longitud"
+
diff --git a/res/po/fr_FR.po b/res/po/fr_FR.po
new file mode 100755 (executable)
index 0000000..ffa675c
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Existe déjà"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Casque stéréo Bluetooth déconnecté"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Fichier DRM non pris en charge sf contenu protégé"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Nouveau libellé"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Original"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Activer le son ?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Impossible de lire le fichier DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Envoi impossible. Le transfert de cet élément est verrouillé"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Version DivX® DRM non prise en charge"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Favori"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favori"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Détails"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Résolution"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Ajouter un favori"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Nom"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Sur AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Rogner comme nouv. vidéo"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Rogner la vidéo originale"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Compte"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Ajouter raccourci"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Libellé"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Liste de favoris saturée. Supprimer des favoris"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Déconnecté du serveur"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Passerelle expirée"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Erreur du serveur interne"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Licence expirée"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Chargement..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Aucun fichier"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Mémoire saturée"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Enregistrer sous"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Pour lire les vidéos protégées DivX®, votre périphérique doit être enregistré. Code d'enregistrement : %s. Enregistrez-vous sur http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Rognage de la vidéo..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Connexion impossible"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Lecture impossible. Paquet du serveur non valide"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Sortie vidéo non autorisée. Utilisez une sortie analogique pour regarder cette vidéo DivX® protégée"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Sortie vidéo non autorisée. Utilisez une sortie HDMI pour regarder cette vidéo DivX® protégée"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Votre appareil n’est pas autorisé à lire cette vidéo protégée DivX®."
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Rogner"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Lecteur vidéo"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Aucun fichier média"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Impossible de lire la vidéo. Une erreur est survenue"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Taille du fichier"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Rogner"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Partager vidéo"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Liste vidéo"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Conserver la taille de l'écran"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Définir comme"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Sous-titres"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Impossible de trouver le fichier"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Impossible de lire la vidéo. Données de diffusion non valides"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Format audio non pris en charge"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Type de fichier non pris en charge"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Form. non supporté"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Format vidéo non pris en charge"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Résolution"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossible de lire la vidéo pendant un appel"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Voix"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Vidéo"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1ch"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "L'effet sonore 7.1 ne fonctionne qu'en mode Ecouteur uniquement"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Longitude"
+
diff --git a/res/po/it_IT.po b/res/po/it_IT.po
new file mode 100755 (executable)
index 0000000..1e0fa64
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Già esiste"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Auricolare stereo Bluetooth disconnesso"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "File DRM non support.escl.tipo bloccato per invio"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Nuovo tag"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Originali"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Riprodurre con profilo Silenzioso?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Impossibile riprodurre file DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Impossibile inviare. L'elemento è bloccato per l'invio"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Versione DRM DivX non supportata"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Preferito"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Fatto"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Preferiti"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Dettagli"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Risoluzione"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Aggiungi preferito"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "DLNA"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Messaggio"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Su AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Ritaglia come nuovo video"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Ritaglia video originale"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Account"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Aggiungi collegamento"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Aggiungi tag"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Elenco preferiti pieno. Eliminare alcuni preferiti"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Disconnesso dal server"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Time out Gateway"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Errore interno server"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Licenza scaduta"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Caricamento..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Nessun file"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Memoria insufficiente"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Salva con nome"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Per riprodurre video DivX protetti, il dispositivo deve essere registrato. Codice di registrazione: %s. Registrarsi su http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Ritaglio video in corso..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Impossibile stabilire connessione"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Impossibile avviare riproduzione. Pacchetto non valido dal server"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Output video non autorizzato. Utilizzare l'output analogico per visualizzare questo video DivX protetto"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Output video non autorizzato. Utilizzare l'HDMI per visualizzare questo video DivX protetto"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Il dispositivo non è autorizzato a riprodurre un video DivX® protetto"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Ritaglia"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Lettore video"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Nessun file multimediale"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Impossibile riprodurre il video. Si è verificato un errore"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Dimensioni file"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Ritaglia"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Condiv. video"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Elenco video"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Conserva formato"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Imposta come"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Sottotitoli"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Espl. file non riuscita"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Impossibile riprodurre il video. Dati di streaming non validi"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato audio non supportato"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo file non supportato"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Formato non supp."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato video non supportato"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Risoluzione"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossibile riprodurre durante chiamata"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Voce"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Filmato"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1 ch"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "L'effetto sonoro a 7.1 canali funziona solo in modalità auricolare"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Latitudine"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Longitudine"
+
diff --git a/res/po/ja_JP.po b/res/po/ja_JP.po
new file mode 100755 (executable)
index 0000000..bcb7201
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "既に登録されています。"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Bluetooth​ステレオ​ヘッド​セット​は​切断​され​ました"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "フォワード​ロック​タイプ​以外​の​DRM​ファイル​には​対応​して​いません"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "新しい​タグ"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "オリジナル"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "マナーモード中ですが、再生しますか?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "DRMファイルを再生できません"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "送信​できません。​この​アイテム​は​転送​ロック​されて​います"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "未対応​DivX DRM​バージョン"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "ブック​マーク"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "完了"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "お気に入り"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "詳細"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "ブックマーク登録"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "名前"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "新しいビデオとしてトリミング"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "元のビデオをトリミング"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "アカウント"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "ショートカット​を​追加​"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "タグ​を​追加​"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "ブックマーク​リスト​が​いっぱいです。​ブックマーク​を​いくつか​削除​してください。"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "サーバー​から​切断​され​ました"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "ゲートウェイ​タイムアウト"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Internal server error"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "ライセンス​の​有効期限​が​切れ​ました"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "読み込み中..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "ファイルがありません。"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "メモリが不足しています"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "名前​を​付けて​保存​"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "DivX​保護​ビデオを​再生するには、デバイスの​登録が​必要です。登録​コード: %s 登録はhttp://vod.divx.com にて行ってください"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "ビデオをトリミング中..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "接続​できません。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "再生​できません。​サーバー​から​の​パケット​が​無効​です"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "許可されていない​ビデオが​再生されました。​​保護されてるDivX​ビデオを​再生するには​アナログ出力を​使用してください"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "許可されていない​ビデオが​再生されました。保護されてるDivXビデオを​再生するには​HDMI出力を​使用してください"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "このデバイスではDivX®保護ビデオを再生できません"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "整備"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "動画"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "メディア​ファイルが​ありません"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "ビデオ​を​再生​できません​。​エラー​が​発生​しました"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "ファイル​サイズ"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "トリミング"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "動画を共有"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "ビデオ​リスト"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "縦横​比​を​保存​"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "登録"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "サブタイトル"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "ファイル​が​見つかり​ません"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "ビデオ​を​再生​できません​。​無効​な​ストリーミング​データ​です"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "サポートされていない​オーディオ​形式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "未対応のファイルです"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "未対応フォーマット"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "未対応​ビデオ​形式"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "撮影サイズ"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通話中​は​ビデオ​再生​できません"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "標準"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "音声"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "映画"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1ch"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1チャンネルは、イヤホンモードでのみ使用できます。"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "経度"
+
diff --git a/res/po/ko_KR.po b/res/po/ko_KR.po
new file mode 100755 (executable)
index 0000000..013f753
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "이미 저장되어 있습니다"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "블루투스 스테레오 헤드셋 연결이 끊어졌습니다"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "전달 잠금 파일을 제외한 DRM 파일은 지원되지 않습니다"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "태그 추가"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "원본"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "무음 모드에서 재생할까요?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "DRM 파일은 재생할 수 없습니다"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "전송할 수 없습니다. 잠금이 설정되어 있습니다"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "지원되지 않는 DivX DRM 버전입니다"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "북마크"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "완료"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "즐겨찾기"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "상세 정보"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "해상도"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "북마크 추가"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "메시지"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "이름"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "AllShare에서"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "새 동영상으로 잘라내기"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "원본 동영상 잘라내기"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "계정"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "단축메뉴 추가"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "태그 추가"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "북마크 목록이 가득 찼습니다. 북마크 일부를 삭제하세요"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "서버와 연결이 끊어졌습니다"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "게이트웨이 시간이 만료되었습니다"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "서버 오류가 발생하였습니다"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "라이선스 기한이 만료되었습니다"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "로딩 중..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "파일이 없습니다"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "메모리가 부족합니다"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "저장"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "DivX 동영상을 재생하려면 내 디바이스를 등록해야 합니다.  등록 코드: %s  http://vod.divx.com에서 등록하세요"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "동영상 잘라내는 중..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "연결할 수 없습니다"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "서버에서 받은 패킷이 바르지 않아 재생할 수 없습니다"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "허가되지 않은 비디오 출력 방식입니다. 이 DivX 동영상을 보려면 아날로그 출력 방식을 사용하세요"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "허가되지 않은 비디오 출력 방식입니다. 이 DivX 동영상을 보려면 HDMI 방식를 사용하세요"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "귀하의 제품은 DivX® DRM이 적용된 동영상의 재생 권한이 없습니다."
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "잘라내기"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "비디오 플레이어"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "미디어 파일이 없습니다"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "동영상을 재생할 수 없습니다. 오류가 발생하였습니다"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "파일 크기"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "잘라내기"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "동영상 공유"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "동영상 목록"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "비율 유지"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "설정"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "자막"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "파일을 찾을 수 없습니다"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "동영상을 재생할 수 없습니다. 스트리밍 데이터가 바르지 않습니다"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "지원되지 않는 오디오 포맷입니다"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "지원되지 않는 파일 형식입니다"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "지원되지 않는 형식입니다"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "지원되지 않는 동영상 포맷입니다"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "해상도"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "통화 중에는 동영상을 재생할 수 없습니다"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "보통"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "음성"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "영화"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1채널"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1채널 음향효과는 이어폰 연결 시에 적용됩니다"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "위도"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "경도"
+
diff --git a/res/po/nl_NL.po b/res/po/nl_NL.po
new file mode 100755 (executable)
index 0000000..9b866cc
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Bestaat al"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Bluetooth-stereoheadset losgekoppeld"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "DRM-best alleen ondersteund voor blokkeren doorst"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Nieuwe tag"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Oorspronkelijk"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Afspelen in stille stand?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Kan DRM-bestand niet afspelen"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Verzenden onmogelijk. Dit item is geblokkeerd voor doorsturen."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "DivX® DRM-versie niet ondersteund"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Favorieten"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Gereed"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favoriet"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Details"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Resolutie"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Favoriet toevoegen"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Bericht"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Naam"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Op AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Bijsnijden als nwe video"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Oorspr. video bijsnijden"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Account"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Sneltoets toevoegen"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Tag toev."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Favorieten vol. Verwijder een aantal favorieten."
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Verbinding met server verbreken"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Time-out voor gateway"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Interne serverfout"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Licentie verlopen"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Laden..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Geen bestanden"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Geen geheugen meer"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Opslaan als"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Als u video's met DivX®-beveiliging wilt afspelen, moet uw apparaat zijn geregistreerd. Registratiecode: %s. Registreer op http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Video bijsnijden..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Verbinding mislukt"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Kan niet afspelen. Ongeldig pakket van server"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Niet-toegestane video-uitvoer. Gebruik Analoge uitvoer om deze met DivX®-beveiligde video weer te geven"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Niet-toegestane video-uitvoer. Gebruik HDMI om deze met DivX®-beveiligde video weer te geven"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Uw apparaat heeft geen toestemming om video met DivX®-beveiliging af te spelen"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Bijsnijd."
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Videospeler"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Geen mediabestand"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Kan video niet afspelen. Fout opgetreden"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Bestandsgrootte"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Bijsnijden"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Video delen"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Videolijst"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Verhouding behouden"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Instellen als"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Ondertitels"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Browsen mislukt"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Kan video niet afspelen. Ongeldige streaminggegevens"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Niet-ondersteunde audio-indeling"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Niet-ondersteund bestandstype"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Niet onderst. formaat"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Niet-ondersteunde video-indeling"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Resolutie"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan video niet afspelen tijdens gesprek"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Normaal"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Spraak"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Film"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1ch"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1-kanaals geluidseffect werkt alleen met oortelefoonstand"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Breedtegraad"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Lengtegraad"
+
diff --git a/res/po/pt_PT.po b/res/po/pt_PT.po
new file mode 100755 (executable)
index 0000000..7e467b2
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Já existe"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Auricular estéreo Bluetooth desligado"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Fich. DRM não supor. excepto p/ tipo bloq. reenc."
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Etiqueta nova"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Original"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Reproduzir no modo silencioso?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Impossível reproduzir ficheiro DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Impossível enviar. Este item tem o reencaminhamento bloqueado."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Versão de DRM DivX não suportada"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Favorito"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Concluir"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favoritos"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Detalhes"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Adicionar favorito"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Mensagem"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Com AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Cortar como vídeo novo"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Cortar vídeo original"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Conta"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Adicionar atalho"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Ad. etiq."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista de marcadores cheia. Apague alguns marcadores"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Desligada do servidor"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Tempo de gateway esgotado"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Erro interno de servidor"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Licença expirou"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "A carregar"
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Sem ficheiros"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Memória esgotada"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Guardar como"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Para reproduzir vídeos DivX protegidos, o dispositivo tem de estar registado. Código de registo: %s. Registar em http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "A limitar vídeo..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Impossível ligar"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Impossível reproduzir. Pacote inválido do servidor"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Saída de vídeo não autorizada. Utilize a saída analógica para ver este vídeo protegido DivX"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Saída de vídeo não autorizada. Utilize HDMI para ver este vídeo protegido DivX"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "O seu dispositivo não está autorizado a reproduzir vídeos protegidos DivX®"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Cortar"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Leitor de vídeo"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Nenhum ficheiro multimédia"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Impossível reproduzir vídeo. Ocorreu um erro"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Tamanho do ficheiro"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Cortar"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Part. vídeo"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Lista de vídeos"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Manter relação de visualização"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Definir como"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Legendas"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Ficheiro não encontrado"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Impossível reproduzir vídeo. Dados de streaming inválidos"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato de áudio não suportado"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de ficheiro não suportado"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Formato não suportado"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato de vídeo não suportado"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossível reproduzir vídeo durante chamada"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Voz"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Filme"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1cn"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "O efeito de som do canal 7.1 funciona apenas no modo de auricular"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Longitude"
+
diff --git a/res/po/ru_RU.po b/res/po/ru_RU.po
new file mode 100755 (executable)
index 0000000..84ae19a
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Уже существует"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Стереогарнитура Bluetooth отключена"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Поддерживается только запрет на пересылку для файлов DRM"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Новый тег"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Исходный"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Воспроизвести в профиле “Без звука”?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Невозможно воспроизвести файл DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Нельзя отправить. Этот элемент заблокирован для пересылки."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Неподдерживаемая DRM-версия DivX"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Закладка"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Избранное"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Сведения"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Разрешение"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Добавить закладку"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Сообщение"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Имя"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "На AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Обрезать и сохранить"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Обрезать исходное видео"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Учетная запись"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Добавить ссылку"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Добавить метку"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Список закладок заполнен.\nУдалите некоторые закладки"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Отключен от сервера"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Тайм-аут шлюза"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Внутренняя ошибка сервера"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Лицензия просрочена"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Загрузка..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Нет файлов"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Недостаточно памяти"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Сохранить как"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Для воспроизведения защищенного видео DivX необходимо зарегистрировать устройство. Код регистрации: %s. Регистрация выполняется на сайте http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Обрезка видео..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Невозможно подключиться"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Сбой воспроизведения. От сервера получен недопустимый пакет"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Несанкционированный видеовывод. Используйте для воспроизведения защищенного видео DivX аналоговый вывод"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Несанкционированный видеовывод. Используйте для воспроизведения защищенного видео DivX кабель HDMI"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Это устройство не авторизовано для воспроизведения защищенного видео DivX®"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Обрезать"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Видеоплеер"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Нет медиафайлов"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Невозможно воспроизвести видео. Ошибка"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Размер файла"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Настроить"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Обмен видео"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Список видео"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Сохранять пропорции"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Установить как"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Субтитры"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Невозможно найти файл"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Невозможно воспроизвести видео. Недопустимые потоковые данные"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Неподдерживаемый формат аудио"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдерживаемый тип файла"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Неподдерживаемый формат"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Неподдерживаемый формат видео"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Разрешение"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Воспроизведение видео во время вызова невозможно"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Обычный"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Голос"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Фильм"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1 кан."
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1-канальный звуковой эффект доступен только в режиме наушников"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Широта"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Долгота"
+
diff --git a/res/po/tr_TR.po b/res/po/tr_TR.po
new file mode 100755 (executable)
index 0000000..beec85b
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Zaten var"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Bluetooth stereo kulaklık takılı değil"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "DRM dosyası iletme türü hariç desteklenmiyor"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Yeni im"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Orijinal"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Sessiz modda oynatılsın mı?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "DRM dosyası çalınamıyor"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Gönderilemiyor. Bu öğe iletmeye karşı kilitli."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Desteklenmeyen DivX DRM sürümü"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Yer imi"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Tamam"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Sık kullanılanlar"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Ayrıntılar"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Çözünürlük"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Yer imi ekle"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Mesaj"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "İsim"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "AllShare üzerinde"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Yeni videoyu kırp"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Orijinal videoyu kırp"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Hesap"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Kısayol ekle"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "İm ekle"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Yer işaretleri listesi dolu.  Bazılarını silin"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Sunucu bağlantısı kesildi"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Ağ geçidi zaman aşımı"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Dahili sunucu hatası"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Lisans süresi doldu"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Yükleniyor..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Dosya yok"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Bellek yetersiz"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Farklı kaydet"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "DivX korumalı videoları oynatmak için cihazınız kayıtlı olmalıdır. Kayıt kodu: %s. http://vod.divx.com adresine kayıt olun"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Video kırpılıyor..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Bağlantı başarısız"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Oynatılamıyor. Sunucudan geçersiz paket"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Yetkisiz Video Çıkışı. Lütfen DivX Korumalı videoyu izlemek için Analog çıkış kullanın"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Yetkisiz Video Çıkışı. Lütfen DivX Korumalı videoyu izlemek için HDMI kullanın"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Cihazınızın DivX korumalı videoyu oynatma izni yok"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Kes"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Video oynatıcı"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Hiç ortam dosyası yok"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Video oynatılamıyor. Hata oluştu"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Dosya boyutu"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Kes"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Video paylaş"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Video listesi"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "En-boy oranını koru"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Yap"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Altyazılar"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Dosya bulunamıyor"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Video oynatılamıyor. Geçersiz veri akışı."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Desteklenmeyen ses biçimi"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Desteklenmeyen dosya türü"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Desteklenmeyen biçim"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Desteklenmeyen video biçimi"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Çözünürlük"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Görüşme sırasında video oynatılamıyor"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "Ses"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "Film"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1ch"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1 kanal ses efekti sadece kulaklık modunda çalışır"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "Enlem"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "Boylam"
+
diff --git a/res/po/zh_CN.po b/res/po/zh_CN.po
new file mode 100755 (executable)
index 0000000..3c73f77
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "已经存在"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "蓝牙立体声耳机未连接"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "不支持除转寄锁定类型之外的 DRM 文件"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "新标签"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "原作"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "在安静模式下播放?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "无法播放DRM文件"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "无法发送。此项目禁止转发"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "不支持的DivX® DRM版本"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "书签"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "收藏"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "详情"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "分辨率"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "添加书签"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "娱乐共享"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "信息"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "名称"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "在AllShare上"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "修剪作为新视频"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "修剪原始视频"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "帐户"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "添加快捷键"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "添加标签"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "书签列表满。删除部分书签"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "已从服务器断开"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "网关超时"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "内部服务器无效"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "许可已过期"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "裝载中…"
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "无文件"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "内存不足"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "另存为"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "如欲播放被保护的DivX®视频,必须注册您的设备。请在 http://vod.divx.com注册,注册码:%s"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "正在剪切视频…"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "无法连接"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "无法播放。服务器无效信息包"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未经授权的视频输出。请使用模拟输出查看该DivX®保护视频"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未经授权的视频输出。请使用HDMI查看该DivX®保护视频"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "您的设备没有被授权播放这个DivX®加密的视频."
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "剪切"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "视频播放器"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "没有媒体文件"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "无法播放视频。出现错误"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "文件大小"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "剪切"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "共享视频"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "视频列表"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "保持屏幕高宽比例"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "设定为"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "说明字幕"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "无法找到文件"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "无法播放视频。无效视频流数据"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支持的音频格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支持的文件类型"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "不支持格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支持的视频格式"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "分辨率"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通话中无法播放视频"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "正常"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "语音"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "电影"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1ch"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1 声道声音效果只适用于耳机模式"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "纬度"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "经度"
+
diff --git a/res/po/zh_HK.po b/res/po/zh_HK.po
new file mode 100755 (executable)
index 0000000..5f840aa
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "已存在"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "藍牙立體聲耳機已中斷連接"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "不支援 DRM 檔案,轉寄鎖定類型除外"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "新標籤"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "原圖"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "以靜音模式播放?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Unable to play DRM file"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "無法發送。此項目已轉寄鎖定"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "不支援的 DivX DRM 版本"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "書籤"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "我的最愛"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "詳情"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "加入書籤"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "訊息"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "名稱"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "在 AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "修剪為新影片"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "修剪原始影片"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "帳戶"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "加入捷徑"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "加入標籤"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "書籤清單已滿。請刪除一些書籤"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "伺服器連接中斷"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "網關逾時"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "內部伺服器錯誤"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "許可已過期"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "正在載入..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "無檔案"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "記憶體不足"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "另存為"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "要播送DivX保護的影片,必須登記裝置。登記號碼:%s ,請前往http://vod.divx.com網站登記"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "正在修剪影片..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "無法連接"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "無法播放。來自伺服器的分組數據無效"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未經授權的影片輸出。請使用模擬輸出觀看此段受 DivX 保護的影片"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未經授權的影片輸出。請使用 HDMI 觀看此段受 DivX 保護的影片"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "裝置未獲授權,無法播放此DivX®保護的影片"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "修剪"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "影片播放器"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "無媒體檔案"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "無法播放影片。發生錯誤"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "檔案大小"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "修剪"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "共享影片"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "影片清單"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "保持屏幕寬高比例"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "設定為"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "字幕"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "無法尋找檔案"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "無法播放影片。無效串流數據"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支援的音效格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "不支援格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支援的影片格式"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通話期間無法播放影片"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "正常"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "語音"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "電影"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1 聲道"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1 聲道音效只適用於耳機模式"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "經度"
+
diff --git a/res/po/zh_TW.po b/res/po/zh_TW.po
new file mode 100755 (executable)
index 0000000..8237fde
--- /dev/null
@@ -0,0 +1,198 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "已存在"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "藍牙立體聲耳機已中斷連線"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "不支援除了轉寄鎖定類型外的 DRM 檔案"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "新標籤"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "原圖"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "在靜音模式下播放嗎?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Unable to play DRM file"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "無法傳送。此項目已鎖定轉寄"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "不支援的 DivX DRM 版本"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "書籤"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "我的最愛"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "詳細"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "解析度"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "新增書籤"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "訊息"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "名稱"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "On AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "剪輯為新影片"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "剪輯原始影片"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "帳戶"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "加入捷徑"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "加入標籤"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "書籤清單已滿。請刪除部分書籤"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "伺服器連線中斷"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "閘道逾時"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "內部伺服器錯誤"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "授權已到期"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "正在載入..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "無檔案"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "記憶體不足"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "另存為"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "要播放DivX保護的影片,您的設備必須註冊。註冊代碼:%s登錄在http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "正在剪輯影片..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "無法連線"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "無法播放。來自伺服器的封包無效"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未經授權的影片輸出。請使用模擬輸出觀賞受DivX保護的影片"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未經授權的影片輸出。請使用HDMI觀賞受DivX保護的影片"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "您的設備沒有被授權播放這個DivX®加密的視頻。"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "修剪"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "視訊播放器"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "無媒體文件"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "無法播放影片。發生錯誤"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "檔案大小"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "剪輯"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "分享影片"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "影片清單"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "保持螢幕顯示比例"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "設定為"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "字幕"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "無法找到檔案"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "無法播放影片。無效的串流數據"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支援的音訊格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "不支援格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支援的視訊格式"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "解析度"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "無法在通話期間播放影片"
+
+msgid "IDS_VPL_OPT_NORMAL"
+msgstr "正常"
+
+msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+msgstr "語音"
+
+msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+msgstr "電影"
+
+msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+msgstr "7.1 聲道"
+
+msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "7.1 聲道音效只適用於耳機模式"
+
+msgid "IDS_VPL_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VPL_BODY_LONGITUDE"
+msgstr "經度"
+
diff --git a/src/mp-drm-ctrl.c b/src/mp-drm-ctrl.c
new file mode 100644 (file)
index 0000000..01b804a
--- /dev/null
@@ -0,0 +1,411 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <drm_client.h>
+#include <drm_client_types.h>
+
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-drm-ctrl.h"
+
+static int                     nCheckConsumption = VIDEO_DRM_CONSUMPTION_STATE_DISABLE;
+
+static drm_file_type_e         nDrmFileType = DRM_TYPE_UNDEFINED;
+
+#define ACCUMULATED_DATE               86400   /* 24*60*60 */
+#define RO_MESSAGE_LEN                 1024
+
+#define MOUNTH_COUNT   12
+#define DAY_COUNT      30
+#define HOUR_COUNT     24
+
+static bool bForwordLock = FALSE;
+/*
+ * External function
+ */
+void MpVideoDrmInit()
+{
+       VideoLogInfo("");
+}
+
+bool MpVideoDrmGetForwardLookState()
+{
+       VideoLogInfo("");
+
+       return bForwordLock;
+}
+
+void MpVideoDrmSetConsumptionState(int nState)
+{
+       VideoLogInfo("");
+
+       nCheckConsumption = nState;
+}
+
+int MpVideoDrmGetConsumption()
+{
+       VideoLogInfo("");
+
+       return nCheckConsumption;
+}
+
+void MpVideoDrmStartConsumption(char *szPath)
+{
+       VideoLogInfo("");
+
+
+       if (MpVideoDrmGetConsumption()) {
+
+       } else {
+               VideoLogInfo("Disable consumption.");
+       }
+}
+
+void MpVideoDrmPauseConsumption()
+{
+       VideoLogInfo("");
+
+       if (MpVideoDrmGetConsumption()) {
+       } else {
+               VideoLogInfo("Disable consumption.");
+       }
+}
+
+void MpVideoDrmResumeConsumption()
+{
+       VideoLogInfo("");
+
+       if (MpVideoDrmGetConsumption()) {
+       } else {
+               VideoLogInfo("Disable consumption.");
+       }
+}
+
+void MpVideoDrmStopConsumption()
+{
+       VideoLogInfo("");
+
+       if (MpVideoDrmGetConsumption()) {
+               MpVideoDrmSetConsumptionState (VIDEO_DRM_CONSUMPTION_STATE_DISABLE);
+       } else {
+               VideoLogInfo("Disable consumption.");
+       }
+}
+
+bool MpVideoDrmIsDrmFile(char *szPath)
+{
+       VideoLogInfo("");
+
+       if (!szPath) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+       int nRet = DRM_RETURN_SUCCESS;
+       drm_bool_type_e is_drm =  DRM_FALSE;
+
+       nRet = drm_is_drm_file(szPath, &is_drm);
+       if(nRet != DRM_RETURN_SUCCESS) {
+               VideoLogInfo("[ERR]drm_is_drm_file : %d", nRet);
+               return FALSE;
+       }
+
+       if(is_drm != DRM_TRUE) {
+               VideoLogInfo("It's not drm file.");
+               return FALSE;
+       }
+
+
+       drm_file_type_e drm_type = DRM_TYPE_UNDEFINED;
+
+       nRet = drm_get_file_type(szPath, &drm_type);
+       if(nRet != DRM_RETURN_SUCCESS) {
+               VideoLogInfo("[ERR]drm_get_file_type : %d", nRet);
+               return FALSE;
+       }
+
+       nDrmFileType = drm_type;
+
+       if(drm_type != DRM_TYPE_OMA_V1 && drm_type != DRM_TYPE_OMA_V2) {
+               VideoLogInfo("It's not OMA drm file : %d", drm_type);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoDrmHasValidRo(char *szPath)
+{
+       VideoLogInfo("");
+
+       if (!szPath) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       int nRet = DRM_RETURN_SUCCESS;
+       drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;
+       nRet = drm_get_license_status(szPath, DRM_PERMISSION_TYPE_PLAY, &license_status);
+       if(nRet != DRM_RETURN_SUCCESS) {
+               VideoLogInfo("[ERR]drm_get_license_status : %d", nRet);
+               return FALSE;
+       }
+
+       if(license_status != DRM_LICENSE_STATUS_VALID) {
+               VideoLogInfo("Invalid license status : %d", license_status);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoDrmCheckForward(char *szPath)
+{
+       VideoLogInfo("");
+
+       if (!szPath) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       int nRet = DRM_RETURN_SUCCESS;
+       drm_action_allowed_data_s action_data;
+       drm_bool_type_e is_allow = DRM_FALSE;
+       memset(&action_data, 0, sizeof(drm_action_allowed_data_s));
+       snprintf(action_data.file_path , DRM_MAX_LEN_FILEPATH, "%s", szPath);
+
+       nRet = drm_is_action_allowed(DRM_IS_FORWARDING_ALLOWED,&action_data, &is_allow);
+       if(nRet != DRM_RETURN_SUCCESS) {
+               VideoLogInfo("[ERR]drm_is_action_allowed : %d", nRet);
+               bForwordLock = FALSE;
+               return FALSE;
+       }
+
+       if(is_allow == DRM_TRUE) {
+               bForwordLock = TRUE;
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+MpVideoDrmInfo *MpVideoDrmCheckLeftRo(char *szVideoTitle, char *szPath)
+{
+       VideoLogInfo("");
+       MpVideoDrmInfo *pResult = NULL;
+       pResult = calloc(1, sizeof(MpVideoDrmInfo));
+
+       if (!szVideoTitle) {
+               VideoLogInfo("[ERR] No has video title.");
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL;
+               return pResult;
+       }
+
+       if (!szPath) {
+               VideoLogInfo("[ERR] No has path.");
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL;
+               return pResult;
+       }
+
+
+
+       int nRet = DRM_RETURN_SUCCESS;
+       drm_constraint_info_s constraint_info;
+       memset(&constraint_info, 0, sizeof(drm_constraint_info_s));
+       nRet = drm_get_constraint_info(szPath, DRM_PERMISSION_TYPE_PLAY, &constraint_info);
+       if(nRet != DRM_RETURN_SUCCESS) {
+               VideoLogInfo("[ERR]drm_get_file_info : %d", nRet);
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL;
+               return pResult;
+       }
+
+       if(constraint_info.const_type.is_unlimited) {
+               VideoLogInfo("Unlimited DRM Contents");
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
+               return pResult;
+       }
+       else if(constraint_info.const_type.is_count) {
+               if(constraint_info.remaining_count <= 0) {
+                       VideoLogInfo("Count expired : %d / %d",
+                               constraint_info.remaining_count,
+                               constraint_info.original_count);
+                       pResult->nErrorCode = MP_VIDEO_DRM_ERROR_COUNT;
+                       pResult->nData = constraint_info.remaining_count;
+                       return pResult;
+               }
+               else if(constraint_info.remaining_count == 1 ||
+                       constraint_info.remaining_count == 2) {
+                       VideoLogInfo("Count Small : %d / %d",
+                               constraint_info.remaining_count,
+                               constraint_info.original_count);
+                       pResult->nErrorCode = MP_VIDEO_DRM_ERROR_COUNT_SMALL;
+                       pResult->nData = constraint_info.remaining_count;
+                       return pResult;
+               }
+               else {
+                       VideoLogInfo("Count valid : %d / %d",
+                               constraint_info.remaining_count,
+                               constraint_info.original_count);
+                       pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
+                       pResult->nData = constraint_info.remaining_count;
+                       return pResult;
+               }
+       }
+       else if(constraint_info.const_type.is_datetime) {
+               VideoLogInfo("Start time: Year=%d,Month=%d,Day=%d,"
+                               "Hour=%d, minute=%d, Second=%d",
+                               constraint_info.start_time.tm_year,
+                               constraint_info.start_time.tm_mon,
+                               constraint_info.start_time.tm_mday,
+                               constraint_info.start_time.tm_hour,
+                               constraint_info.start_time.tm_min,
+                               constraint_info.start_time.tm_sec);
+
+
+               VideoLogInfo("End time: Year=%d,Month=%d,Day=%d,"
+                               "Hour=%d, minute=%d, Second=%d",
+                               constraint_info.end_time.tm_year,
+                               constraint_info.end_time.tm_mon,
+                               constraint_info.end_time.tm_mday,
+                               constraint_info.end_time.tm_hour,
+                               constraint_info.end_time.tm_min,
+                               constraint_info.end_time.tm_sec);
+
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
+               return pResult;
+       }
+       else if(constraint_info.const_type.is_interval) {
+               VideoLogInfo("Interval time: Year=%d,Month=%d,Day=%d,"
+                               "Hour=%d, minute=%d, Second=%d",
+                               constraint_info.interval_time.tm_year,
+                               constraint_info.interval_time.tm_mon,
+                               constraint_info.interval_time.tm_mday,
+                               constraint_info.interval_time.tm_hour,
+                               constraint_info.interval_time.tm_min,
+                               constraint_info.interval_time.tm_sec);
+
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE;
+               pResult->nData = ((constraint_info.interval_time.tm_year * MOUNTH_COUNT + constraint_info.interval_time.tm_mon) * DAY_COUNT + constraint_info.interval_time.tm_mday);
+               return pResult;
+
+       }
+       else if(constraint_info.const_type.is_timedcount) {
+               VideoLogInfo("DRM TimeCount "
+                       "(original : %d, remainnig : %d, count_timer: %d)",
+                       constraint_info.timed_original_count,
+                       constraint_info.timed_remaining_count,
+                       constraint_info.timed_count_timer);
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
+               return pResult;
+       }
+       else if(constraint_info.const_type.is_accumulated) {
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_ACCUMULATED;
+               return pResult;
+       }
+       else if(constraint_info.const_type.is_individual) {
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
+               return pResult;
+       }
+       else if(constraint_info.const_type.is_system) {
+               pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
+               return pResult;
+       }
+
+       return pResult;
+}
+
+bool MpVideoDrmIsDivX(char *szPath)
+{
+       VideoLogInfo("");
+
+       if (!szPath) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+
+       int nRet = DRM_RETURN_SUCCESS;
+       drm_bool_type_e is_drm =  DRM_FALSE;
+
+       nRet = drm_is_drm_file(szPath, &is_drm);
+       if(nRet != DRM_RETURN_SUCCESS) {
+               VideoLogInfo("[ERR]drm_is_drm_file : %d", nRet);
+               return FALSE;
+       }
+
+       if(is_drm != DRM_TRUE) {
+               VideoLogInfo("It's not drm file.");
+               return FALSE;
+       }
+
+       drm_file_type_e drm_type = DRM_TYPE_UNDEFINED;
+
+       nRet = drm_get_file_type(szPath, &drm_type);
+       if(nRet != DRM_RETURN_SUCCESS) {
+               VideoLogInfo("[ERR]drm_get_file_type : %d", nRet);
+               return FALSE;
+       }
+
+       nDrmFileType = drm_type;
+
+       if(drm_type != DRM_TYPE_DIVX ) {
+               VideoLogInfo("It's not DivX drm file : %d", drm_type);
+               return FALSE;
+       }
+
+       return TRUE;
+
+}
+
+bool MpVideoDrmCheckDivX(char *szPath)
+{
+       VideoLogInfo("");
+
+       if (!szPath) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+void MpVideoDrmGetFileExtension(char *szPath, char *szContentType, int nContentTypeStrSize)
+{
+       if (!szContentType) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!szPath) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       memset(szContentType, 0, nContentTypeStrSize);
+
+       drm_content_info_s content_info;
+       int nRet = DRM_RETURN_SUCCESS;
+       memset(&content_info, 0, sizeof(drm_content_info_s));
+
+       nRet = drm_get_content_info(szPath,&content_info);
+
+
+       VideoLogInfo("contentType: %s", content_info.mime_type);
+
+       strncpy(szContentType, content_info.mime_type, nContentTypeStrSize - 1);
+}
diff --git a/src/mp-external-ug.c b/src/mp-external-ug.c
new file mode 100755 (executable)
index 0000000..869b3c3
--- /dev/null
@@ -0,0 +1,628 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <app.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-external-ug.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-service-ctrl.h"
+
+
+#define UG_LIST_ITEMS_SIZE_MAX                 32
+#define        UG_SHARE_MENU_ITEM_MAX                  6
+
+
+static ui_gadget_h pUiGadgetHandle = NULL;
+static Ecore_Event_Handler *pHardKeyEventHandler = NULL;
+static MpExternalUGType nCurUGType = MP_EXTERNAL_UG_NONE;
+static char **szUgItems = NULL;
+
+
+static Evas_Object     *pUGPopupHandle = NULL;
+static Evas_Object     *pUGGenList = NULL;
+
+
+typedef struct _External_Ug {
+       MpExternalUGType nType;
+       char *szUgName;
+} MpExternalUG;
+
+MpExternalUG st_MpExternalUG[] = {
+       {MP_EXTERNAL_UG_MESSAGE, "msg-composer-efl" },
+       {MP_EXTERNAL_UG_EMAIL, "email-composer-efl" },
+       {MP_EXTERNAL_UG_MYFILE_DETAIL, "myfile-detail-efl" },
+       {MP_EXTERNAL_UG_YOUTUBE, "youtube-efl" },
+       {MP_EXTERNAL_UG_BLUETOOTH, "setting-bluetooth-efl" },
+       {MP_EXTERNAL_UG_FTM, "fileshare-efl" },
+       {MP_EXTERNAL_UG_FACEBOOK, "facebook-efl" },
+};
+
+
+
+
+/*
+ * CALLBACK FUNCTION
+ */
+
+static char *MpExternalUgGetLabelOfGenlistItemCb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+       VideoLogInfo("");
+
+       int nIndex = (int)pUserData;
+
+       if(!strcmp(pPart, "elm.text"))
+       {
+               VideoLogInfo("Index : %d", nIndex);
+               return strdup(szUgItems[nIndex]);
+       }
+
+       return NULL;
+}
+
+
+static Eina_Bool MpExternalUgHardkeyDownCb(void *pUserData, int nType,
+                                          void *pEvent)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpExternalUGType nExternalUgState = MpExternalUgGetCurUgState();
+
+       if (nExternalUgState <= MP_EXTERNAL_UG_NONE ||
+           nExternalUgState >= MP_EXTERNAL_UG_MAX) {
+               VideoLogInfo
+                   ("Return hardkey callback function because of no UG mode.");
+               return EINA_FALSE;
+       }
+
+       Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
+
+       if (!strcmp(pKeyEvent->keyname, KEY_END)) {
+               VideoLogInfo("Bakc(End) key");
+               MpExternalUgUnload();
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+       if (!strcmp(pKeyEvent->keyname, HOME_KEY)) {
+               VideoLogInfo("Home key");
+               MpExternalUgUnload();
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+
+       return EINA_FALSE;
+}
+
+void MpExternalUgLayoutCb(ui_gadget_h pUiGadget, enum ug_mode nMode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       Evas_Object *pLayoutBase = NULL;
+       Evas_Object *pWin = NULL;
+
+       pLayoutBase = ug_get_layout(pUiGadget);
+       if (!pLayoutBase) {
+               ug_destroy(pUiGadget);
+               VideoLogError("[ERR]");
+               return;
+       }
+       pWin = ug_get_window();
+
+       switch (nMode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(pLayoutBase, EVAS_HINT_EXPAND,
+                                                EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(pWin, pLayoutBase);
+               evas_object_show(pLayoutBase);
+               break;
+
+       default:
+               VideoLogInfo("[DEFAUT!!!!!!!!]");
+               break;
+       }
+}
+
+void MpExternalUgResultCb(ui_gadget_h pUiGadget, service_h pService, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+}
+
+void MpExternalUgDestroyCb(ui_gadget_h pUiGadget, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpExternalUgUnload();
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+}
+
+static void MpExternalUGDestroyPopupList(void)
+{
+       VideoLogInfo("");
+       int nCount = 0;
+       if(szUgItems)
+       {
+               for(nCount = 0; nCount < MP_EXTERNAL_UG_MAX; nCount++)
+               {
+                       if(szUgItems[nCount])
+                       {
+                               free(szUgItems[nCount]);
+                               szUgItems[nCount] = NULL;
+                       }
+               }
+               free(szUgItems);
+               szUgItems = NULL;
+       }
+
+       if(pUGGenList)
+       {
+               evas_object_del(pUGGenList);
+               pUGGenList = NULL;
+       }
+
+       if(pUGPopupHandle) {
+               evas_object_del(pUGPopupHandle);
+               pUGPopupHandle = NULL;
+       }
+
+       MpUtilSetAlphaOfMainWindow(TRUE);
+}
+
+
+static void MpExternalUGPopupCb(void *pUserData, Evas_Object *pObject,
+                                    void *pEventInfo)
+{
+       VideoLogInfo("");
+
+       if(pUserData == NULL)
+       {
+               VideoLogInfo("[ERR]No have pUserData");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+
+       MpExternalUGDestroyPopupList();
+}
+
+static void MpExternalUgResFn(service_h pRequest, service_h pReply, service_result_e nResult, void *pUserData)
+{
+       if(!pUserData)
+{
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+}
+
+static void MpExternalUGAppSvcLoad(MpExternalUGType nExternalUGType, void *pUserData)
+{
+
+       VideoLogInfo("");
+
+       if (pUserData == NULL) {
+               VideoLogInfo("[ERR]No have pUserData");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       service_h pServiceHandle = NULL;
+       int     ret_val = 0;
+       char    pkg_name[STR_LEN_MAX] = {0,};
+
+       if(service_create(&pServiceHandle) != SERVICE_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR]service_create(&pServiceHandle)");
+               return;
+       }
+
+       switch(nExternalUGType)
+       {
+               case MP_EXTERNAL_UG_YOUTUBE:
+                       strncpy(pkg_name,"org.tizen.youtube",STR_LEN_MAX-1);
+                       break;
+
+               case MP_EXTERNAL_UG_FACEBOOK:
+                       strncpy(pkg_name,"org.tizen.facebook",STR_LEN_MAX-1);
+                       break;
+               default:
+                       break;
+       }
+
+       if(service_set_operation(pServiceHandle, SERVICE_OPERATION_SEND) != SERVICE_ERROR_NONE)
+       {
+               if(pServiceHandle)
+               {
+                       service_destroy(pServiceHandle);
+               }
+
+               VideoLogInfo("[ERR]service_set_operation fail.");
+               return;
+       }
+
+       if(nExternalUGType == MP_EXTERNAL_UG_YOUTUBE)
+       {
+               char xwin_id_str[12] = { 0, };
+               Ecore_X_Window xwin_id = (Ecore_X_Window)MpUtilGetMainWindowXID();
+               eina_convert_itoa(xwin_id, xwin_id_str);
+               VideoLogInfo("For YoutTube XID : %s", xwin_id_str);
+               service_add_extra_data(pServiceHandle, "XWINDOW_ID", xwin_id_str);
+       }
+
+       if(service_set_mime(pServiceHandle, "video/*") != SERVICE_ERROR_NONE)
+       {
+               if(pServiceHandle)
+       {
+                       service_destroy(pServiceHandle);
+               }
+
+               VideoLogInfo("[ERR]service_set_mime fail.");
+               return;
+       }
+
+       if(service_set_uri(pServiceHandle, pAppData->szMediaUri) != SERVICE_ERROR_NONE)
+       {
+               if(pServiceHandle)
+               {
+                       service_destroy(pServiceHandle);
+               }
+
+               VideoLogInfo("[ERR]service_set_uri fail.");
+               return;
+       }
+
+
+       if(service_set_package(pServiceHandle, pkg_name) != SERVICE_ERROR_NONE)
+       {
+               if(pServiceHandle)
+       {
+                       service_destroy(pServiceHandle);
+               }
+
+               VideoLogInfo("[ERR]service_set_package fail : %d", ret_val);
+               return;
+       }
+
+       if(service_send_launch_request(pServiceHandle, MpExternalUgResFn, pUserData) != SERVICE_ERROR_NONE)
+       {
+               if(pServiceHandle)
+               {
+                       service_destroy(pServiceHandle);
+       }
+
+               VideoLogInfo("[ERR]service_send_launch_request fail : %d", ret_val);
+               return;
+       }
+
+       service_destroy(pServiceHandle);
+}
+
+static void MpExternalUGSelectListItem(void *pUserData,Evas_Object *pObject,void *pEventInfo)
+{
+       VideoLogInfo("");
+
+       if(pUserData == NULL)
+       {
+               VideoLogInfo("[ERR]No have pUserData");
+               return;
+       }
+
+       Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+
+       if(pItem)
+       {
+               int nIndex = 0;
+               nIndex = (int)elm_object_item_data_get(pItem);
+
+               VideoLogInfo("Select Controlbar item of popup : %d", nIndex);
+
+               if(!strcmp(szUgItems[nIndex], MP_SHARE_MESSAGE))
+               {
+                       MpExternalUgLoad(MP_EXTERNAL_UG_MESSAGE, pUserData);
+               }
+               else if(!strcmp(szUgItems[nIndex], MP_SHARE_EMAIL))
+               {
+                       MpExternalUgLoad(MP_EXTERNAL_UG_EMAIL, pUserData);
+               }
+               else if(!strcmp(szUgItems[nIndex], MP_SHARE_BLUETOOTH))
+               {
+                       MpExternalUgLoad(MP_EXTERNAL_UG_BLUETOOTH, pUserData);
+               }
+               else if(!strcmp(szUgItems[nIndex], MP_SHARE_FTM))
+               {
+                       MpExternalUgLoad(MP_EXTERNAL_UG_FTM, pUserData);
+               }
+               else if(!strcmp(szUgItems[nIndex], MP_SHARE_FACEBOOK))
+               {
+                       MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_FACEBOOK, pUserData);
+               }
+               else if(!strcmp(szUgItems[nIndex], MP_SHARE_YOUTUBE))
+               {
+                       MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_YOUTUBE, pUserData);
+               }
+
+       }
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+
+       MpExternalUGDestroyPopupList();
+}
+
+/*
+ * External Function
+ */
+bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       struct ug_cbs cbs = { 0, };
+       service_h pService;  //bundle *pBundleHandle = NULL;
+
+
+       cbs.layout_cb = MpExternalUgLayoutCb;
+       cbs.result_cb = MpExternalUgResultCb;
+       cbs.destroy_cb = MpExternalUgDestroyCb;
+       cbs.priv = (void *)pAppData;
+
+       service_create(&pService); //pBundleHandle = bundle_create();
+
+       UG_INIT_EFL(pAppData->pMainWindow, UG_OPT_INDICATOR_ENABLE);
+
+       if(pUiGadgetHandle)
+       {
+               MpExternalUgUnload();
+       }
+
+       switch (nExternalUGType)
+       {
+       case MP_EXTERNAL_UG_MESSAGE:
+               VideoLogInfo("MP_EXTERNAL_UG_MESSAGE");
+               //bundle_add(pBundleHandle, "ATTACHFILE", pAppData->szMediaUri);
+               service_add_extra_data(pService, "ATTACHFILE", pAppData->szMediaUri);
+               break;
+
+       case MP_EXTERNAL_UG_EMAIL:
+               VideoLogInfo("MP_EXTERNAL_UG_EMAIL");
+               //bundle_add(pBundleHandle, "RUN_TYPE", "5");
+               service_add_extra_data(pService, "RUN_TYPE", "5");
+               //bundle_add(pBundleHandle, "ATTACHMENT", pAppData->szMediaUri);
+               service_add_extra_data(pService, "ATTACHMENT", pAppData->szMediaUri);
+               break;
+
+       case MP_EXTERNAL_UG_MYFILE_DETAIL:
+               VideoLogInfo("MP_EXTERNAL_UG_MYFILE_DETAIL");
+               //bundle_add(pBundleHandle, "Path", pAppData->szMediaUri);
+               service_add_extra_data(pService, "Path", pAppData->szMediaUri);
+               break;
+
+       case MP_EXTERNAL_UG_YOUTUBE:
+               VideoLogInfo("MP_EXTERNAL_UG_YOUTUBE");
+               //bundle_add(pBundleHandle, "feature", "video_upload");
+               service_add_extra_data(pService, "feature", "video_upload");
+               //bundle_add(pBundleHandle, "video", pAppData->szMediaUri);
+               service_add_extra_data(pService, "video", pAppData->szMediaUri);
+               break;
+
+       case MP_EXTERNAL_UG_FACEBOOK:
+               VideoLogInfo("MP_EXTERNAL_UG_FACEBOOK");
+               //bundle_add(pBundleHandle, "feature", "video_upload");
+               service_add_extra_data(pService, "feature", "video_upload");
+               //bundle_add(pBundleHandle, "video", pAppData->szMediaUri);
+               service_add_extra_data(pService, "video", pAppData->szMediaUri);
+               break;
+
+       case MP_EXTERNAL_UG_BLUETOOTH:
+               VideoLogInfo("MP_EXTERNAL_UG_BLUETOOTH");
+               //bundle_add(pBundleHandle, "launch-type", "send");
+               service_add_extra_data(pService, "launch-type", "send");
+               //bundle_add(pBundleHandle, "filecount", "1");
+               service_add_extra_data(pService, "filecount", "1");
+               //bundle_add(pBundleHandle, "files", pAppData->szMediaUri);
+               service_add_extra_data(pService, "files", pAppData->szMediaUri);
+               break;
+
+       case MP_EXTERNAL_UG_FTM:
+               VideoLogInfo("MP_EXTERNAL_UG_FTM");
+               //bundle_add(pBundleHandle, "filecount", "1");
+               service_add_extra_data(pService, "filecount", "1");
+               //bundle_add(pBundleHandle, "files", pAppData->szMediaUri);
+               service_add_extra_data(pService, "files", pAppData->szMediaUri);
+               break;
+
+       default:
+               service_destroy(pService); //bundle_free(pBundleHandle);
+               return FALSE;
+       }
+
+       pUiGadgetHandle = ug_create(NULL, st_MpExternalUG[nExternalUGType].szUgName, UG_MODE_FULLVIEW, pService, &cbs);
+
+       nCurUGType = nExternalUGType;
+
+       service_destroy(pService); //bundle_free(pBundleHandle);
+
+       pHardKeyEventHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpExternalUgHardkeyDownCb, pUserData);
+
+       /*  !!!!!SET ROTATE STATE!!!!!  */
+
+       return TRUE;
+}
+
+void MpExternalUgUnload(void)
+{
+       VideoLogInfo("");
+
+       MpExternalUGDestroyPopupList();
+
+       if (pHardKeyEventHandler) {
+               ecore_event_handler_del(pHardKeyEventHandler);
+               pHardKeyEventHandler = NULL;
+       }
+
+       if (pUiGadgetHandle) {
+               ug_destroy(pUiGadgetHandle);
+               pUiGadgetHandle = NULL;
+       }
+
+       nCurUGType = MP_EXTERNAL_UG_NONE;
+}
+
+void MpExternalUgDestroyAll(void)
+{
+       VideoLogInfo("");
+
+       MpExternalUGDestroyPopupList();
+
+       ug_destroy_all();
+}
+
+int MpExternalUgGetCurUgState()
+{
+       VideoLogInfo("");
+
+       return (int)nCurUGType;
+}
+
+void MpExternalUgSetUgState(MpExternalUGType nExternalUGType)
+{
+       VideoLogInfo("");
+
+       nCurUGType = nExternalUGType;
+}
+
+bool MpExternalUgShow(void *pUserData, void *pParent)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       Evas_Object *pButton = NULL;
+       Evas_Object *pBox = NULL;
+
+       MpExternalUGDestroyPopupList();
+
+       MpUtilSetAlphaOfMainWindow(FALSE);
+
+       pUGPopupHandle = elm_popup_add(pAppData->pMainWindow);
+       elm_object_style_set(pUGPopupHandle, "menustyle");
+       elm_object_part_text_set(pUGPopupHandle, "title,text", MP_COM_BUTTON_SHARE);
+       evas_object_size_hint_weight_set(pUGPopupHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       pButton = elm_button_add(pUGPopupHandle);
+       elm_object_style_set (pButton, "popup_button/default");
+       elm_object_text_set(pButton, MP_COM_CLOSE);
+       elm_object_part_content_set(pUGPopupHandle, "button1", pButton);
+       evas_object_smart_callback_add(pButton, "clicked", MpExternalUGPopupCb, (void*)pAppData);
+
+       Elm_Genlist_Item_Class *st_Share_Itc = NULL;
+
+       st_Share_Itc = elm_genlist_item_class_new();
+
+       st_Share_Itc->item_style = "1text";
+       st_Share_Itc->func.text_get = (void *)MpExternalUgGetLabelOfGenlistItemCb;
+       st_Share_Itc->func.content_get = NULL;
+       st_Share_Itc->func.state_get = NULL;
+       st_Share_Itc->func.del = NULL;
+       /* Create genlist handle */
+       pUGGenList = elm_genlist_add(pUGPopupHandle);
+       evas_object_size_hint_weight_set(pUGGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(pUGGenList, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       szUgItems = (char **)calloc(1, sizeof(char *) * MP_EXTERNAL_UG_MAX);
+       int idx = 0;
+       for(idx = 0; idx < MP_EXTERNAL_UG_MAX; idx++)
+       {
+               szUgItems[idx] = (char *)calloc(1, STR_LEN_MAX * sizeof(char));
+       }
+
+       /* Set Sound alive string */
+       strncpy(szUgItems[MP_EXTERNAL_UG_MESSAGE], MP_SHARE_MESSAGE, STR_LEN_MAX - 1);
+       strncpy(szUgItems[MP_EXTERNAL_UG_EMAIL], MP_SHARE_EMAIL, STR_LEN_MAX - 1);
+       strncpy(szUgItems[MP_EXTERNAL_UG_BLUETOOTH], MP_SHARE_BLUETOOTH, STR_LEN_MAX - 1);
+       strncpy(szUgItems[MP_EXTERNAL_UG_FTM], MP_SHARE_FTM, STR_LEN_MAX - 1);
+       strncpy(szUgItems[MP_EXTERNAL_UG_YOUTUBE], MP_SHARE_YOUTUBE, STR_LEN_MAX - 1);
+       strncpy(szUgItems[MP_EXTERNAL_UG_FACEBOOK], MP_SHARE_FACEBOOK, STR_LEN_MAX - 1);
+
+       elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_MESSAGE, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData);
+       elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_EMAIL, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData);
+       elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_BLUETOOTH, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData);
+
+       elm_genlist_item_class_free(st_Share_Itc);
+
+       pBox = elm_box_add(pUGPopupHandle);
+       evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get());
+
+       elm_box_pack_end(pBox, pUGGenList);
+       elm_object_content_set(pUGPopupHandle, pBox);
+
+
+       evas_object_show(pUGGenList);
+       evas_object_show(pUGPopupHandle);
+
+
+       return TRUE;
+}
+void MpExternalUgHide()
+{
+       MpExternalUGDestroyPopupList();
+}
+
+
diff --git a/src/mp-util-media-service.c b/src/mp-util-media-service.c
new file mode 100755 (executable)
index 0000000..1155d62
--- /dev/null
@@ -0,0 +1,2497 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+#include <media_content.h>
+
+
+#include "mp-video-log.h"
+#include "mp-video-value-define.h"
+#include "mp-video-type-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+
+
+
+static Eina_List *VideoFolderList = NULL;
+static Eina_List *VideoItemList = NULL;
+static int nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE;
+static int nTotalVideoTypeFiles = 0;
+static int nNumberOfVideoItemByType = 0;
+
+
+bool MpUtilMediaSvcIs3gpFile(char* szFileUri)
+{
+       VideoLogInfo("");
+
+       int nRet = FALSE;
+       char* szTmpUriPath = szFileUri;
+
+       if(szTmpUriPath)
+       {
+               char *szExt = NULL;
+               szExt = strrchr(szTmpUriPath, '.');
+
+               if((szExt != NULL) && ((szExt+1) != NULL))
+               {
+                       if(!strcmp(szExt+1, "3gp"))
+                       {
+                               nRet = TRUE;
+                       }
+                       else
+                       {
+                               nRet = FALSE;
+                       }
+               }
+               else
+               {
+                       VideoLogInfo("No exist extension.");
+                       nRet = FALSE;
+               }
+       }
+       else
+       {
+               VideoLogInfo("No exist file uri.");
+               nRet = FALSE;
+       }
+
+       return nRet;
+}
+
+static bool MpUtilMediaSvcIterateForGetVideoItemCb(media_info_h pVideoItem, void *pUserData)
+{
+       VideoLogInfo("");
+
+       media_info_h *pAssignFolderItem = (media_info_h*)pUserData;
+
+       if(pVideoItem != NULL)
+       {
+               char *szTmpStr = NULL;
+               media_info_clone(pAssignFolderItem, pVideoItem);
+               media_info_get_display_name(*pAssignFolderItem, &szTmpStr);
+               VideoLogInfo("Display name : %s", szTmpStr);
+
+               if(szTmpStr)
+               {
+                       free(szTmpStr);
+               }
+       }
+
+       return FALSE;
+}
+
+static bool MpUtilMediaSvcIterateForVideoItemListViewCb(media_info_h pMediaItem, void *pUserData)
+{
+       VideoLogInfo("");
+
+       media_info_h pAssignMediaItem = NULL;
+       media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
+
+       media_info_get_media_type(pMediaItem, &nMediaType);
+       VideoLogInfo("nMediaType : %d", nMediaType);
+
+       if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO)
+       {
+               char *szTmpItemFilePath = NULL;
+               char szItemFilePath[STR_LEN_MAX] = {0};
+
+               media_info_get_file_path(pMediaItem, &szTmpItemFilePath);
+
+               if(szTmpItemFilePath == NULL)
+               {
+                       VideoLogInfo("Fail to get file path of media item.");
+                       return FALSE;
+               }
+               strncpy(szItemFilePath, szTmpItemFilePath, STR_LEN_MAX - 1);
+
+               free(szTmpItemFilePath);
+               szTmpItemFilePath = NULL;
+
+               VideoLogInfo("szItemFilePath : %s", szItemFilePath);
+
+               nTotalVideoTypeFiles++;
+
+               switch(nWhatFileType)
+               {
+               case MP_MEDIA_VIDEO_FILE_TYPE:
+                       if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == TRUE)
+                       {
+                               return TRUE;
+                       }
+                       break;
+
+               case MP_MEDIA_CAMERA_FILE_TYPE:
+                       if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == FALSE)
+                       {
+                               return TRUE;
+                       }
+                       break;
+
+               case MP_MEDIA_ALL_FILE_TYPE:
+                       break;
+               }
+
+               nNumberOfVideoItemByType++;
+               VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
+
+               media_info_clone(&pAssignMediaItem, pMediaItem);
+               Eina_List **pList = (Eina_List **)pUserData;
+               *pList = eina_list_append(*pList, pAssignMediaItem);
+       }
+
+       return TRUE;
+}
+
+static bool MpUtilMediaSvcIterateCb(media_info_h pMediaItem, void *pUserData)
+{
+       VideoLogInfo("");
+
+       media_info_h pAssignMediaItem = NULL;
+       media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
+
+       media_info_get_media_type(pMediaItem, &nMediaType);
+       VideoLogInfo("nMediaType : %d", nMediaType);
+
+       if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO)
+       {
+               media_info_clone(&pAssignMediaItem, pMediaItem);
+               Eina_List **pList = (Eina_List **)pUserData;
+               *pList = eina_list_append(*pList, pAssignMediaItem);
+
+               nTotalVideoTypeFiles++;
+               nNumberOfVideoItemByType++;
+               VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
+       }
+
+       return TRUE;
+}
+
+static bool MpUtilMediaSvcIterateForGetFolderCb(media_folder_h pFolderItem, void *pUserData)
+{
+       VideoLogInfo("");
+
+       media_folder_h *pAssignFolderItem = (media_folder_h*)pUserData;
+
+       if(pFolderItem != NULL)
+       {
+               char *szTmpStr = NULL;
+               media_folder_clone(pAssignFolderItem, pFolderItem);
+               media_folder_get_name(*pAssignFolderItem, &szTmpStr);
+               VideoLogInfo("Folder name : %s", szTmpStr);
+
+               if(szTmpStr)
+               {
+                       free(szTmpStr);
+               }
+       }
+
+       return FALSE;
+}
+
+static bool MpUtilMediaSvcIterateForFolderListCb(media_folder_h pFolderItem, void *pUserData)
+{
+       VideoLogInfo("");
+
+       media_folder_h pAssignFolderItem = NULL;
+       media_folder_clone(&pAssignFolderItem, pFolderItem);
+       Eina_List **pList = (Eina_List **)pUserData;
+       *pList = eina_list_append(*pList, pAssignFolderItem);
+
+       return TRUE;
+}
+
+static bool MpUtilMediaSvcIterateGetTagCb(media_tag_h pTagItem, void *pUserData)
+{
+       VideoLogInfo("");
+
+       media_tag_h *pAssignTagItem = (media_tag_h*)pUserData;
+
+       if(!pTagItem)
+       {
+               char *szTmpStr = NULL;
+               media_tag_clone(pAssignTagItem, pTagItem);
+               media_tag_get_name(*pAssignTagItem, &szTmpStr);
+               VideoLogInfo("szTagName : %s", szTmpStr);
+
+               if(szTmpStr)
+               {
+                       free(szTmpStr);
+               }
+       }
+
+       return FALSE;
+}
+
+static bool MpUtilMediaSvcIterateGetVideoItemOfTagCb(media_info_h media, void *pUserData)
+{
+       VideoLogInfo("");
+
+       return TRUE;
+}
+
+//
+// Internal function
+//
+bool MpUtilMediaSvcGetFileDirectoryName(char *szFilePath, char *szFileName, char *szDirectoryName, char *szDirectoryPath)
+{
+       VideoLogInfo("");
+
+       if(!szFilePath)
+       {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       int nCount = 0;
+       int nLoopCount = 0;
+
+       for(nLoopCount = strlen(szFilePath); nLoopCount >= 0; nLoopCount--)
+       {
+               if (szFilePath[nLoopCount] != '\0')
+               {
+                       nCount++;
+               }
+
+               if(szFilePath[nLoopCount] == '/')
+               {
+                       if(szFileName)
+                       {
+                               memcpy(szFileName, &szFilePath[nLoopCount + 1], --nCount);
+                               *(szFileName + nCount) = '\0';
+                               VideoLogInfo("File name = %s\n", szFileName);
+                       }
+
+                       if(szDirectoryPath)
+                       {
+                               memcpy(szDirectoryPath, &szFilePath[0], nLoopCount);
+                               *(szDirectoryPath + nLoopCount + 1) = '\0';
+                               VideoLogInfo("Directory path = %s", szDirectoryPath);
+                       }
+
+                       if(szDirectoryName)
+                       {
+                               nCount = 0;
+                               for(--nLoopCount; nLoopCount >= 0; nLoopCount--)
+                               {
+                                       nCount++;
+                                       if(szFilePath[nLoopCount] == '/')
+                                       {
+                                               memcpy(szDirectoryName, &szFilePath[nLoopCount + 1], --nCount);
+                                               *(szDirectoryName + nCount) = '\0';
+                                               VideoLogInfo("Directory Name = %s", szDirectoryName);
+
+                                               return TRUE;
+                                       }
+                               }
+                       }
+
+                       return TRUE;
+               }
+       }
+
+       return FALSE;
+}
+
+//
+// External function
+//
+
+void MpUtilMediaSvcInitSession(void)
+{
+       VideoLogInfo("");
+
+       if(media_content_connect() != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to connect to media content db.");
+       }
+       else
+       {
+               VideoLogInfo("Success to connect to media content db.");
+       }
+}
+
+void MpUtilMediaSvcFinishSession(void)
+{
+       VideoLogInfo("");
+
+       if(media_content_disconnect() != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to disconnect from media content db.");
+               return;
+       }
+
+
+       VideoLogInfo("Success to disconnect from media content db.");
+       return;
+}
+
+bool MpUtilMediaSvcDestoryVideoItemList(void)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("VideoItemList is empty already.");
+               return FALSE;
+       }
+
+       media_info_h pTmpVideoItem = NULL;
+       EINA_LIST_FREE(VideoItemList, pTmpVideoItem)
+       {
+               if(pTmpVideoItem)
+               {
+                       media_info_destroy(pTmpVideoItem);
+               }
+       }
+
+       VideoItemList = NULL;
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcExtractVideoListFromFolder(char *szFolderPath, int nSortType)
+{
+       if(VideoItemList)
+       {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       if(!szFolderPath)
+       {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       filter_h m_FilterHandle = NULL;
+       media_folder_h m_FolderHandle = NULL;
+       media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+
+       char *szFolderID = NULL;
+       char szTmpStr[STR_LEN_MAX] = {0};
+       char szOrderObj[STR_LEN_MAX] = {0};
+
+       nTotalVideoTypeFiles = 0;
+       nNumberOfVideoItemByType = 0;
+
+       switch(nSortType)
+       {
+       case MP_MEDIA_SORT_BY_NONE:
+       case MP_MEDIA_SORT_BY_NAME_ASC:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_DESC:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_OLDEST:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
+               break;
+
+       default:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+       }
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and FOLDER_PATH = \"%s\"", szFolderPath);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetFolderCb, &m_FolderHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail media_folder_foreach_folder_from_db().");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(!m_FolderHandle)
+       {
+               VideoLogInfo("Fail to get folder handle.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_folder_get_folder_id(m_FolderHandle, &szFolderID) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get folder id.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_folder_foreach_media_from_db(szFolderID, m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+       }
+
+       if(szFolderID)
+       {
+               free(szFolderID);
+               szFolderID = NULL;
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType)
+{
+       if(VideoItemList)
+       {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       filter_h m_FilterHandle = NULL;
+       media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+       char szOrderObj[STR_LEN_MAX] = {0};
+
+       nTotalVideoTypeFiles = 0;
+       nNumberOfVideoItemByType = 0;
+
+       switch(nSortType)
+       {
+       case MP_MEDIA_SORT_BY_NONE:
+       case MP_MEDIA_SORT_BY_NAME_ASC:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_DESC:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_OLDEST:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
+               break;
+
+       default:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+       }
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcExtractVideoListForListView(int nSortType)
+{
+       if(VideoItemList)
+       {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       filter_h m_FilterHandle = NULL;
+       media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+       char szOrderObj[STR_LEN_MAX] = {0};
+
+       nTotalVideoTypeFiles = 0;
+       nNumberOfVideoItemByType = 0;
+
+       switch(nSortType)
+       {
+       case MP_MEDIA_SORT_BY_NONE:
+       case MP_MEDIA_SORT_BY_NAME_ASC:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_DESC:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_OLDEST:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1);
+               break;
+
+       default:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+       }
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType)
+{
+       VideoLogInfo("");
+
+       nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE;
+
+       return MpUtilMediaSvcExtractVideoListForListView(nSortType);
+}
+
+bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType)
+{
+       VideoLogInfo("");
+
+       nWhatFileType = MP_MEDIA_CAMERA_FILE_TYPE;
+
+       return MpUtilMediaSvcExtractVideoListForListView(nSortType);
+}
+
+bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName)
+{
+       VideoLogInfo("");
+
+       if(!szTagName)
+       {
+               VideoLogInfo("[ERR] No Exist tag name.");
+               return FALSE;
+       }
+
+       if(VideoItemList)
+       {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       VideoLogInfo("szTagName : %s", szTagName);
+
+       int nTagID = 0;
+       char szTmpStr[STR_LEN_MAX] = {0};
+
+       media_tag_h pTagHandle = NULL;
+       filter_h m_FilterHandle = NULL;
+
+       nTotalVideoTypeFiles = 0;
+       nNumberOfVideoItemByType = 0;
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       //snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%s\"", szTagName);//snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"\%%s\%\"", szTagName);
+       snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%%%s%%\"", szTagName);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               if(m_FilterHandle)
+               {
+                       media_filter_destroy(m_FilterHandle);
+                       m_FilterHandle = NULL;
+               }
+               return FALSE;
+       }
+
+       if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, TAG_NAME, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               if(m_FilterHandle)
+               {
+                       media_filter_destroy(m_FilterHandle);
+                       m_FilterHandle = NULL;
+               }
+               return FALSE;
+       }
+
+       if(media_tag_foreach_tag_from_db(m_FilterHandle, MpUtilMediaSvcIterateGetTagCb, &pTagHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail media_tag_foreach_tag_from_db().");
+               if(m_FilterHandle)
+               {
+                       media_filter_destroy(m_FilterHandle);
+                       m_FilterHandle = NULL;
+               }
+               return FALSE;
+       }
+
+       if(!pTagHandle)
+       {
+               VideoLogInfo("Fail to get pTagHandle.");
+               if(m_FilterHandle)
+               {
+                       media_filter_destroy(m_FilterHandle);
+                       m_FilterHandle = NULL;
+               }
+               return FALSE;
+       }
+
+       if(media_tag_get_tag_id(pTagHandle, &nTagID) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get tag ID.");
+               if(m_FilterHandle)
+               {
+                       media_filter_destroy(m_FilterHandle);
+                       m_FilterHandle = NULL;
+               }
+               return FALSE;
+       }
+
+       VideoLogInfo("nTagID : %d", nTagID);
+
+       memset(szTmpStr, 0, STR_LEN_MAX);
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               if(m_FilterHandle)
+               {
+                       media_filter_destroy(m_FilterHandle);
+                       m_FilterHandle = NULL;
+               }
+               return FALSE;
+       }
+
+       if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               if(m_FilterHandle)
+               {
+                       media_filter_destroy(m_FilterHandle);
+                       m_FilterHandle = NULL;
+               }
+               return FALSE;
+       }
+
+       if(media_tag_foreach_media_from_db(nTagID, m_FilterHandle, MpUtilMediaSvcIterateGetVideoItemOfTagCb, VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail media_tag_foreach_media_from_db().");
+               if(m_FilterHandle)
+               {
+                       media_filter_destroy(m_FilterHandle);
+                       m_FilterHandle = NULL;
+               }
+               return FALSE;
+       }
+       if(m_FilterHandle)
+       {
+               if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+               {
+                       VideoLogInfo("Fail to destroy media filter handle.");
+                       return FALSE;
+               }
+               m_FilterHandle = NULL;
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType)
+{
+       if(VideoItemList)
+       {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       filter_h m_FilterHandle = NULL;
+       media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+       char szOrderObj[STR_LEN_MAX] = {0};
+       char szTmpStr[STR_LEN_MAX] = {0};
+
+       nWhatFileType = MP_MEDIA_ALL_FILE_TYPE;
+
+       nTotalVideoTypeFiles = 0;
+       nNumberOfVideoItemByType = 0;
+
+       switch(nSortType)
+       {
+       case MP_MEDIA_SORT_BY_NONE:
+       case MP_MEDIA_SORT_BY_NAME_ASC:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_DESC:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_OLDEST:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
+               break;
+
+       default:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+       }
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_FAVOURITE = 1");
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword)
+{
+       if(VideoItemList)
+       {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       filter_h m_FilterHandle = NULL;
+       media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+       char szOrderObj[STR_LEN_MAX] = {0};
+       char szTmpStr[STR_LEN_MAX] = {0};
+
+       nWhatFileType = MP_MEDIA_ALL_FILE_TYPE;
+
+       nTotalVideoTypeFiles = 0;
+       nNumberOfVideoItemByType = 0;
+
+       nOrderType = MEDIA_CONTENT_ORDER_ASC;
+       strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_TITLE like \"%%%s%%\"", keyword);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+void MpUtilMediaSvcDestoryVideoList(void)
+{
+       VideoLogInfo("");
+
+       if(VideoFolderList)
+       {
+               MpUtilMediaSvcDestoryVideoFolderList();
+               VideoFolderList = NULL;
+       }
+
+       if(VideoItemList)
+       {
+               MpUtilMediaSvcDestoryVideoItemList();
+               VideoItemList = NULL;
+       }
+
+       nTotalVideoTypeFiles = 0;
+       nNumberOfVideoItemByType = 0;
+}
+
+bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath)
+{
+       if(!szFilePath)
+       {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       if(!VideoItemList)
+       {
+               VideoLogInfo("pList is empty already.");
+               return FALSE;
+       }
+
+       VideoLogInfo("szFilePath : %s", szFilePath);
+
+       char *szGetFilePath = NULL;
+       media_info_h pItem = NULL;
+       Eina_List *pIterateList = NULL;
+       EINA_LIST_FOREACH(VideoItemList, pIterateList, pItem)
+       {
+               if(pItem)
+               {
+                       if(media_info_get_file_path(pItem, &szGetFilePath) == MEDIA_CONTENT_ERROR_NONE)
+                       {
+                               if(szGetFilePath)
+                               {
+                                       if(!strcmp(szGetFilePath, szFilePath))
+                                       {
+                                               VideoLogInfo("Find %s", szGetFilePath);
+                                               char *szMediaID = NULL;
+                                               media_info_get_media_id(pItem, &szMediaID);
+                                               media_info_delete_from_db(szMediaID);
+                                               VideoItemList = eina_list_remove(VideoItemList, pItem);
+                                               media_info_destroy(pItem);
+
+                                               nNumberOfVideoItemByType--;
+                                               VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
+
+                                               if(szMediaID)
+                                               {
+                                                       free(szMediaID);
+                                               }
+
+                                               if(szGetFilePath)
+                                               {
+                                                       free(szGetFilePath);
+                                               }
+
+                                               return TRUE;
+                                       }
+                               }
+                               else
+                               {
+                                       VideoLogInfo("No exist %s in media info Database module.", szFilePath);
+                                       return FALSE;
+                               }
+                       }
+               }
+       }
+       return FALSE;
+}
+
+bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex)
+{
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       if(!VideoItemList)
+       {
+               VideoLogInfo("pList is empty already.");
+               return FALSE;
+       }
+
+       media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex);
+
+       if(pItem)
+       {
+               char *szMediaID = NULL;
+               media_info_get_media_id(pItem, &szMediaID);
+               if(szMediaID)
+               {
+                       media_info_delete_from_db(szMediaID);
+                       VideoItemList = eina_list_remove(VideoItemList, pItem);
+                       free(szMediaID);
+                       media_info_destroy(pItem);
+                       nNumberOfVideoItemByType--;
+                       VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
+               }
+               else
+               {
+                       VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex);
+                       return FALSE;
+               }
+       }
+       else
+       {
+               VideoLogInfo("Fail to remove item in media svc and list.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex)
+{
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       if(!VideoItemList)
+       {
+               VideoLogInfo("pList is empty already.");
+               return FALSE;
+       }
+
+       media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex);
+
+       if(pItem)
+       {
+               char *szMediaID = NULL;
+               media_info_get_media_id(pItem, &szMediaID);
+               if(szMediaID)
+               {
+                       media_info_delete_from_db(szMediaID);
+                       free(szMediaID);
+                       nNumberOfVideoItemByType--;
+                       VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
+               }
+               else
+               {
+                       VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex);
+                       return FALSE;
+               }
+       }
+       else
+       {
+               VideoLogInfo("Fail to remove item in media svc and list.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID)
+{
+       VideoLogInfo("");
+
+       media_info_h pVideoItem = NULL;
+       filter_h m_FilterHandle = NULL;
+       char szTmpStr[STR_LEN_MAX] = {0};
+       bool bRet = FALSE;
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               bRet = FALSE;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               bRet = FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               bRet = FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               bRet = FALSE;
+       }
+
+       if(pVideoItem)
+       {
+               char *szMediaID = NULL;
+               media_info_get_media_id(pVideoItem, &szMediaID);
+               if(szMediaID)
+               {
+                       strncpy(szVideoID, szMediaID, STR_LEN_MAX-2);
+                       free(szMediaID);
+               }
+               media_info_destroy(pVideoItem);
+               bRet = TRUE;
+       }
+       else
+       {
+               bRet = FALSE;
+       }
+
+       return bRet;
+}
+
+unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath)
+{
+       if(!szPath)
+       {
+               VideoLogInfo("No exist video path.");
+               return 0;
+       }
+
+       VideoLogInfo("szPath : %s", szPath);
+
+       time_t LastPlayedTime = 0;
+       media_info_h pVideoItem = NULL;
+       filter_h m_FilterHandle = NULL;
+       char szTmpStr[STR_LEN_MAX] = {0};
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       //snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       if(pVideoItem)
+       {
+               video_meta_h pVideoMetaHandle = NULL;
+               if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
+               {
+                       char *szTmpStr = NULL;
+                       video_meta_get_title(pVideoMetaHandle, &szTmpStr);
+                       if(szTmpStr)
+                       {
+                               VideoLogInfo("Title : %s", szTmpStr);
+                               free(szTmpStr);
+                       }
+                       else
+                       {
+                               VideoLogInfo("No exist title");
+                       }
+
+                       video_meta_get_played_time(pVideoMetaHandle, &LastPlayedTime);
+                       VideoLogInfo("Last Played Time : %d", LastPlayedTime);
+                       video_meta_destroy(pVideoMetaHandle);
+               }
+               media_info_destroy(pVideoItem);
+       }
+
+       return (unsigned int)LastPlayedTime;
+}
+
+unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath)
+{
+       if(!szPath)
+       {
+               VideoLogInfo("No exist video path.");
+               return 0;
+       }
+
+       VideoLogInfo("szPath : %s", szPath);
+
+       int nDurationTime = 0;
+       media_info_h pVideoItem = NULL;
+       filter_h m_FilterHandle = NULL;
+       char szTmpStr[STR_LEN_MAX] = {0};
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       if(pVideoItem)
+       {
+               video_meta_h pVideoMetaHandle = NULL;
+               if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
+               {
+                       video_meta_get_duration(pVideoMetaHandle, &nDurationTime);
+                       VideoLogInfo("Duration time : %d", nDurationTime);
+                       video_meta_destroy(pVideoMetaHandle);
+               }
+               media_info_destroy(pVideoItem);
+       }
+
+       return (unsigned int)nDurationTime;
+}
+
+int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath)
+{
+       if(!szPath)
+       {
+               VideoLogInfo("No exist video path.");
+               return 0;
+       }
+
+       VideoLogInfo("szPath : %s", szPath);
+
+       unsigned long long nSize = 0;
+       media_info_h pVideoItem = NULL;
+       filter_h m_FilterHandle = NULL;
+       char szTmpStr[STR_LEN_MAX] = {0};
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       if(pVideoItem)
+       {
+               media_info_get_size(pVideoItem, &nSize);
+               VideoLogInfo("Video file size time : %d", nSize);
+               media_info_destroy(pVideoItem);
+       }
+
+       return nSize;
+}
+
+char *MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri)
+{
+       if(!szMediaUri)
+       {
+               VideoLogInfo("No exist video path.");
+               return NULL;
+       }
+
+       VideoLogInfo("szPath : %s", szMediaUri);
+
+       media_info_h pVideoItem = NULL;
+       filter_h m_FilterHandle = NULL;
+       char *szThumbnailPath = NULL;
+       char szTmpStr[STR_LEN_MAX] = {0};
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       memset(szTmpStr, 0, STR_LEN_MAX);
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       if(pVideoItem)
+       {
+               media_info_get_thumbnail_path(pVideoItem, &szThumbnailPath);
+               VideoLogInfo("Video thumbnail file path : %s", szThumbnailPath);
+               media_info_destroy(pVideoItem);
+       }
+
+       return szThumbnailPath;
+}
+
+void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime)
+{
+       if(!szMediaUri)
+       {
+               VideoLogInfo("No exist media uri.");
+               return;
+       }
+
+       VideoLogInfo("szMediaUri : %s, nLastPlayedTime : %d", szMediaUri, nLastPlayedTime);
+
+       time_t LastPlayedTime = (time_t)nLastPlayedTime;
+       media_info_h pVideoItem = NULL;
+       filter_h m_FilterHandle = NULL;
+       char szTmpStr[STR_LEN_MAX] = {0};
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri);
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return;
+       }
+
+       if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get video item list with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return;
+       }
+
+       video_meta_h pVideoMetaHandle = NULL;
+
+       if(pVideoItem)
+       {
+               if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
+               {
+                       VideoLogInfo("Fail to get pVideoMetaHandle.");
+               }
+               else
+               {
+                       if(pVideoMetaHandle)
+                       {
+                               char *szTmpStr = NULL;
+                               video_meta_get_title(pVideoMetaHandle, &szTmpStr);
+                               if(szTmpStr)
+                               {
+                                       VideoLogInfo("Title : %s", szTmpStr);
+                                       free(szTmpStr);
+                               }
+                               else
+                               {
+                                       VideoLogInfo("No exist title");
+                               }
+
+                               video_meta_set_played_time(pVideoMetaHandle, LastPlayedTime);
+                               video_meta_update_to_db(pVideoMetaHandle);
+                               video_meta_destroy(pVideoMetaHandle);
+                               VideoLogInfo("Last Played Time : %d", LastPlayedTime);
+                       }
+                       else
+                       {
+                               VideoLogInfo("No exist pVideoMetaHandle");
+                       }
+               }
+               media_info_destroy(pVideoItem);
+       }
+}
+
+bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char *szCurrMediaUri, char *szPreMediaUri, char *szNextMediaUri, bool bLoop)
+{
+       VideoLogInfo("");
+
+       if(!szCurrMediaUri)
+       {
+               VideoLogInfo("[ERR] No exist current file path.");
+               return FALSE;
+       }
+
+       if(!VideoItemList)
+       {
+               VideoLogInfo("No exist VideoItemList.");
+               if(bLoop)
+               {
+                       strncpy(szNextMediaUri, szCurrMediaUri, (sizeof(char) * STR_LEN_MAX) - 1);
+               }
+               return FALSE;
+       }
+
+       int nCount = 0;
+       int nListSize = 0;
+       media_info_h pVideoItem = NULL;
+       Eina_List *pIterateList = NULL;
+
+       memset(szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+       memset(szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+
+       nListSize = eina_list_count(VideoItemList);
+
+       if(nListSize <= 1)
+       {
+               VideoLogInfo("Video list size == 1.");
+               return FALSE;
+       }
+
+       EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem)
+       {
+               if(pVideoItem == NULL)
+               {
+                       continue;
+               }
+
+               char *szVideoItemFilePath = NULL;
+               media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
+               if(szVideoItemFilePath)
+               {
+                       VideoLogInfo("URL of the File item - %s (%d / %d)", szVideoItemFilePath, nCount, nListSize);
+                       if(!strcmp(szVideoItemFilePath, szCurrMediaUri))
+                       {
+                               free(szVideoItemFilePath);
+                               szVideoItemFilePath = NULL;
+
+                               pVideoItem = NULL;
+                               pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount - 1);
+                               if(pVideoItem)
+                               {
+                                       media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
+                                       strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
+
+                                       free(szVideoItemFilePath);
+                                       szVideoItemFilePath = NULL;
+                               }
+                               else if(bLoop)
+                               {
+                                       media_info_h m_LastItem = (media_info_h)eina_list_nth(VideoItemList, nListSize - 1);
+                                       VideoLogError("%p", m_LastItem);
+                                       if(m_LastItem)
+                                       {
+                                               media_info_get_file_path(m_LastItem, &szVideoItemFilePath);
+                                               strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
+
+                                               free(szVideoItemFilePath);
+                                               szVideoItemFilePath = NULL;
+                                       }
+                                       m_LastItem = NULL;
+                               }
+
+                               pVideoItem = NULL;
+                               pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount + 1);
+                               if(pVideoItem)
+                               {
+                                       media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
+                                       strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
+
+                                       free(szVideoItemFilePath);
+                                       szVideoItemFilePath = NULL;
+                               }
+                               else if(bLoop)
+                               {
+                                       media_info_h m_FirstItem = (media_info_h)eina_list_nth(VideoItemList, 0);
+                                       if(m_FirstItem)
+                                       {
+                                               media_info_get_file_path(m_FirstItem, &szVideoItemFilePath);
+                                               strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
+
+                                               free(szVideoItemFilePath);
+                                               szVideoItemFilePath = NULL;
+                                       }
+                                       m_FirstItem = NULL;
+                               }
+
+                               VideoLogInfo("PreMediaUri:%s", szPreMediaUri);
+                               VideoLogInfo("NextMediaUri:%s", szNextMediaUri);
+
+                               return TRUE;
+                       }
+               }
+
+               ++nCount;
+       }
+
+       return FALSE;
+}
+
+char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
+       {
+               VideoLogInfo("Error number of list item.");
+               return NULL;
+       }
+
+       char *szVideoItemFilePath = NULL;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+       if(pVideoItem)
+       {
+               media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
+               VideoLogInfo("szVideoItemFilePath : %s", szVideoItemFilePath);
+       }
+
+       return szVideoItemFilePath;
+}
+
+char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
+       {
+               VideoLogInfo("Error number of list item.");
+               return NULL;
+       }
+
+       char *szVideoItemThumbnailPath = NULL;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+       if(pVideoItem)
+       {
+               media_info_get_thumbnail_path(pVideoItem, &szVideoItemThumbnailPath);
+               VideoLogInfo("szVideoItemFilePath : %s", szVideoItemThumbnailPath);
+       }
+
+       return szVideoItemThumbnailPath;
+}
+
+char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
+       {
+               VideoLogInfo("Error number of list item.");
+               return NULL;
+       }
+
+       char *szTitle = NULL;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+       if(pVideoItem)
+       {
+               media_info_get_display_name(pVideoItem, &szTitle);
+               VideoLogInfo("szTitle : %s", szTitle);
+       }
+
+       return szTitle;
+}
+
+int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
+       {
+               VideoLogInfo("Error number of list item.");
+               return 0;
+       }
+
+       int nDurationTime = 0;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+       if(pVideoItem)
+       {
+               video_meta_h pVideoMetaHandle = NULL;
+               if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
+               {
+                       video_meta_get_duration(pVideoMetaHandle, &nDurationTime);
+                       VideoLogInfo("Duratiob time : %d", nDurationTime);
+                       video_meta_destroy(pVideoMetaHandle);
+               }
+       }
+
+       return nDurationTime;
+}
+
+int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       time_t nLastPlayedTime = 0;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+       if(pVideoItem)
+       {
+               video_meta_h pVideoMetaHandle = NULL;
+               if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
+               {
+                       video_meta_get_played_time(pVideoMetaHandle, &nLastPlayedTime);
+                       VideoLogInfo("Last Play time : %d", nLastPlayedTime);
+                       video_meta_destroy(pVideoMetaHandle);
+               }
+       }
+
+       return (int)nLastPlayedTime;
+}
+
+int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       unsigned long long nSize = 0;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+       if(pVideoItem)
+       {
+               media_info_get_size(pVideoItem, &nSize);
+               VideoLogInfo("Video file size time : %d", nSize);
+       }
+
+       return nSize;
+}
+
+int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       int nWidth = 0;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+       video_meta_h pVideoMetaHandle = NULL;
+
+       if(pVideoItem)
+       {
+               if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
+               {
+                       VideoLogInfo("Fail to get pVideoMetaHandle.");
+               }
+               else
+               {
+                       if(pVideoMetaHandle)
+                       {
+                               char *szTmpStr = NULL;
+                               video_meta_get_title(pVideoMetaHandle, &szTmpStr);
+                               if(szTmpStr)
+                               {
+                                       VideoLogInfo("Title : %s", szTmpStr);
+                                       free(szTmpStr);
+                               }
+                               else
+                               {
+                                       VideoLogInfo("No exist title");
+                               }
+
+                               video_meta_get_width(pVideoMetaHandle, &nWidth);
+                               video_meta_destroy(pVideoMetaHandle);
+                               VideoLogInfo("Video Width : %f", nWidth);
+                       }
+                       else
+                       {
+                               VideoLogInfo("No exist pVideoMetaHandle");
+                       }
+               }
+       }
+
+       return nWidth;
+}
+
+int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       int nHeight = 0;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+       video_meta_h pVideoMetaHandle = NULL;
+
+       if(pVideoItem)
+       {
+               if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
+               {
+                       VideoLogInfo("Fail to get pVideoMetaHandle.");
+               }
+               else
+               {
+                       if(pVideoMetaHandle)
+                       {
+                               char *szTmpStr = NULL;
+                               video_meta_get_title(pVideoMetaHandle, &szTmpStr);
+                               if(szTmpStr)
+                               {
+                                       VideoLogInfo("Title : %s", szTmpStr);
+                                       free(szTmpStr);
+                               }
+                               else
+                               {
+                                       VideoLogInfo("No exist title");
+                               }
+
+                               video_meta_get_height(pVideoMetaHandle, &nHeight);
+                               video_meta_destroy(pVideoMetaHandle);
+                               VideoLogInfo("Video Width : %f", nHeight);
+                       }
+                       else
+                       {
+                               VideoLogInfo("No exist pVideoMetaHandle");
+                       }
+               }
+       }
+
+       return nHeight;
+}
+
+time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       time_t nDateTime = 0;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+       if(pVideoItem)
+       {
+               media_info_get_modified_time(pVideoItem, &nDateTime);
+               VideoLogInfo("Video date time : %d", nDateTime);
+       }
+
+       return nDateTime;
+}
+
+char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       return NULL;
+}
+
+double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       double nLongitude = 0;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+       if(pVideoItem)
+       {
+               media_info_get_longitude(pVideoItem, &nLongitude);
+               VideoLogInfo("nLongitude : %f", nLongitude);
+       }
+
+       return nLongitude;
+}
+
+double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+       double nLatitude = 0;
+       media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+       if(pVideoItem)
+       {
+               media_info_get_latitude(pVideoItem, &nLatitude);
+               VideoLogInfo("nLongitude : %f", nLatitude);
+       }
+
+       return nLatitude;
+}
+
+
+
+
+int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       return (int)eina_list_count(VideoItemList);
+}
+
+int MpUtilMediaSvcGetNumberOfVideoItemByType(void)
+{
+       VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
+
+       return nNumberOfVideoItemByType;
+}
+
+int MpUtilMediaSvcGetTotalVideoTypeFiles(void)
+{
+       VideoLogInfo("nTotalVideoTypeFiles : %d", nTotalVideoTypeFiles);
+
+       return (int)nTotalVideoTypeFiles;
+}
+
+void* MpUtilMediaSvcGetVideoitem(const int nVideoItemIndex)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return NULL;
+       }
+
+       if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
+       {
+               VideoLogInfo("Error number of list item.");
+               return NULL;
+       }
+
+       VideoLogInfo("");
+
+       return (void*)eina_list_nth(VideoItemList, nVideoItemIndex);
+}
+
+void MpUtilMediaSvcPrintListInfo(void)
+{
+       if(!VideoItemList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return;
+       }
+
+       VideoLogInfo("List size : %d", MpUtilMediaSvcGetNumberOfVideoItemByType());
+
+       media_info_h pVideoItem = NULL;
+       Eina_List *pIterateList = NULL;
+       int nCounter = 0;
+       EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem)
+       {
+               if(pVideoItem)
+               {
+                       char *szTitle = NULL;
+                       media_info_get_display_name(pVideoItem, &szTitle);
+                       if(szTitle)
+                       {
+                               VideoLogInfo("%d - Print title of all list items : %s", nCounter, szTitle);
+                               free(szTitle);
+                       }
+                       else
+                       {
+                               VideoLogInfo("%d - Print title of all list items : NULL.", nCounter);
+                       }
+                       nCounter++;
+               }
+       }
+}
+
+int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath)
+{
+       if(!VideoItemList || !szPath)
+       {
+               VideoLogInfo("[ERR] No exist VideoItemList or szPath.");
+               return 99999;
+       }
+
+       VideoLogInfo("");
+
+       unsigned int nCounter = 0;
+
+       Eina_List *pCurList = NULL;
+       media_info_h pVideoItem = NULL;
+
+       EINA_LIST_FOREACH(VideoItemList, pCurList, pVideoItem)
+       {
+               if(pVideoItem)
+               {
+                       char *szTitle = NULL;
+                       media_info_get_display_name(pVideoItem, &szTitle);
+                       VideoLogInfo("szTitle : %s", szTitle);
+
+                       if(!strcmp(szTitle , szPath))
+                       {
+                               VideoLogInfo("Find same file url. index : %d", nCounter);
+                               free(szTitle);
+                               return nCounter;
+                       }
+                       free(szTitle);
+               }
+
+               nCounter++;
+       }
+
+       return 99999;
+}
+
+bool MpUtilMediaSvcExtractVideoFolderList(int nSortType)
+{
+       VideoLogInfo("");
+
+       filter_h m_FilterHandle = NULL;
+       media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+
+       char szTmpStr[STR_LEN_MAX] = {0};
+       char szOrderObj[STR_LEN_MAX] = {0};
+
+       switch(nSortType)
+       {
+       case MP_MEDIA_SORT_BY_NONE:
+       case MP_MEDIA_SORT_BY_NAME_ASC:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_DESC:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
+               nOrderType = MEDIA_CONTENT_ORDER_DESC;
+               strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
+               break;
+
+       case MP_MEDIA_SORT_BY_OLDEST:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
+               break;
+
+       default:
+               nOrderType = MEDIA_CONTENT_ORDER_ASC;
+               strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
+       }
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
+       if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForFolderListCb, &VideoFolderList) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail media_folder_foreach_folder_from_db().");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcDestoryVideoFolderList(void)
+{
+       if(!VideoFolderList)
+       {
+               VideoLogInfo("VideoFolderList is empty already.");
+               return FALSE;
+       }
+
+       media_folder_h pTmpFolderItem = NULL;
+       EINA_LIST_FREE(VideoFolderList, pTmpFolderItem)
+       {
+               if(pTmpFolderItem)
+               {
+                       media_folder_destroy(pTmpFolderItem);
+               }
+       }
+
+       VideoFolderList = NULL;
+
+       return TRUE;
+}
+
+int MpUtilMediaSvcGetVideoFolderListSize(void)
+{
+       if(!VideoFolderList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       if(VideoFolderList)
+       {
+               return (int)eina_list_count(VideoFolderList);
+       }
+
+       return 0;
+}
+
+char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex)
+{
+       if(!VideoFolderList)
+       {
+               VideoLogInfo("Not exist video folder list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex);
+
+       if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize())
+       {
+               VideoLogInfo("Error number of list item.");
+               return NULL;
+       }
+
+       char *szFolderName = NULL;
+       media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
+       if(pFolderItem)
+       {
+               media_folder_get_name(pFolderItem, &szFolderName);
+
+               if(szFolderName)
+               {
+                       VideoLogInfo("szFolderName : %s", szFolderName);
+                       return szFolderName;
+               }
+       }
+
+       return NULL;
+}
+
+char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex)
+{
+       if(!VideoFolderList)
+       {
+               VideoLogInfo("Not exist video item list handle.");
+               return 0;
+       }
+
+       VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex);
+
+       if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize())
+       {
+               VideoLogInfo("Error number of list item.");
+               return NULL;
+       }
+
+       char *szFolderPath = NULL;
+       media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
+       if(pFolderItem)
+       {
+               media_folder_get_path(pFolderItem, &szFolderPath);
+
+               if(szFolderPath)
+               {
+                       VideoLogInfo("szFolderPath : %s", szFolderPath);
+                       return szFolderPath;
+               }
+       }
+
+       return NULL;
+}
+
+static bool MpUtilMediaSvcBookmarkItemCb(media_bookmark_h pBookmark, void *pUserData)
+{
+       VideoLogInfo("");
+
+       media_bookmark_h pAssignBookmark = NULL;
+       media_bookmark_clone(&pAssignBookmark, pBookmark);
+
+       GList **pList = (GList**)pUserData;
+       *pList = g_list_append(*pList, pAssignBookmark);
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list)
+{
+       if(!vid)
+       {
+               VideoLogInfo("No exist vid.");
+               return FALSE;
+       }
+
+       if(!list)
+       {
+               VideoLogInfo("No exist list.");
+               return FALSE;
+       }
+
+       VideoLogInfo("vid : %s", vid);
+
+       filter_h m_FilterHandle = NULL;
+
+       if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to create media filter handle.");
+               return FALSE;
+       }
+
+       if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to set order.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_info_foreach_bookmark_from_db(vid, m_FilterHandle, MpUtilMediaSvcBookmarkItemCb, list) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to get bookmark of video item with filter condition.");
+               media_filter_destroy(m_FilterHandle);
+               return FALSE;
+       }
+
+       if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("Fail to destroy media filter handle.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+void MpUtilMediaSvcBookmarkListClear(GList *pList)
+{
+       VideoLogInfo("");
+
+       if(pList == NULL)
+       {
+               VideoLogInfo("list == NULL\n");
+               return;
+       }
+
+       media_bookmark_h pBookmarkItem = NULL;
+
+       int nCount = 0;
+       int i = 0;
+
+       nCount = g_list_length(pList);
+       for(i = 0; i < nCount; i++)
+       {
+               pBookmarkItem = (void *)g_list_nth_data(pList, i);
+               if(pBookmarkItem)
+               {
+                       media_bookmark_destroy(pBookmarkItem);
+                       pBookmarkItem = NULL;
+               }
+       }
+
+       g_list_free(pList);
+}
+
+int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path)
+{
+       VideoLogInfo("");
+       int ret = 0;
+
+       if(vid < 0 || path == NULL)
+       {
+               VideoLogInfo("Invalid Parameter : %d, %s", vid, path);
+               return -1;
+       }
+
+       if(media_bookmark_insert_to_db(vid, position, path) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("minfo_add_bookmark ERR : %d", ret);
+               return -1;
+       }
+
+       return 0;
+}
+
+int MpUtilMediaSvcBookmarkDelete(char *vid, int position)
+{
+       VideoLogInfo("");
+       bool ret = 0;
+
+       int bookmarkid = 0;
+       char *path = NULL;
+
+       GList *list = NULL;
+       media_bookmark_h data = NULL;
+       Eina_List *l = NULL;
+
+       ret = MpUtilMediaSvcBookmarkListGet(vid, &list);
+       if(ret == FALSE)
+       {
+               return -1;
+       }
+
+       EINA_LIST_FOREACH((Eina_List *)list, l, data)
+       {
+               if(data)
+               {
+                       time_t nMarkedTime;
+                       media_bookmark_get_marked_time(data, &nMarkedTime);
+                       if(position == nMarkedTime)
+                       {
+                               media_bookmark_get_bookmark_id(data, &bookmarkid);
+                               media_bookmark_get_thumbnail_path(data, &path);
+                               break;
+                       }
+               }
+       }
+
+       MpUtilMediaSvcBookmarkListClear(list);
+
+       if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] media_bookmark_delete_from_db()");
+               if(path)
+               {
+                       free(path);
+                       path = NULL;
+               }
+               return -1;
+       }
+
+       if(path == NULL)
+       {
+               VideoLogError("Thumbnail path is NULL");
+               return -1;
+       }
+
+       ecore_file_init();
+       if(ecore_file_exists(path))
+       {
+               if(ecore_file_remove(path))
+               {
+                       VideoLogInfo("Remove success :%s\n", path);
+               }
+               else
+               {
+                       VideoLogInfo("Remove Failed :%s \n", path);
+               }
+       }
+       else
+       {
+               VideoLogInfo("The file not eixst :%s\n", path);
+       }
+
+       ecore_file_shutdown();
+
+       if(path)
+       {
+               free(path);
+               path = NULL;
+       }
+
+       return 0;
+}
+
+int MpUtilMediaSvcBookmarkDeleteAll(char *vid)
+{
+       VideoLogInfo("");
+       bool ret = 0;
+
+       int bookmarkid = 0;
+
+       GList *list = NULL;
+       media_bookmark_h data = NULL;
+       Eina_List *l = NULL;
+       char *szThumbnailPath = NULL;
+
+       ret = MpUtilMediaSvcBookmarkListGet(vid, &list);
+       if(ret == FALSE)
+       {
+               return -1;
+       }
+
+       EINA_LIST_FOREACH((Eina_List *)list, l, data)
+       {
+               if(data)
+               {
+                       media_bookmark_get_bookmark_id(data, &bookmarkid);
+                       media_bookmark_get_thumbnail_path(data, &szThumbnailPath);
+
+                       if(szThumbnailPath)
+                       {
+                               ecore_file_init();
+                               if(ecore_file_exists(szThumbnailPath))
+                               {
+                                       if(ecore_file_remove(szThumbnailPath))
+                                       {
+                                               VideoLogInfo("Remove success : %s", szThumbnailPath);
+                                       }
+                                       else
+                                       {
+                                               VideoLogInfo("Remove Failed : %s", szThumbnailPath);
+                                       }
+                               }
+                               else
+                               {
+                                       VideoLogInfo("The file not eixst :%s", szThumbnailPath);
+                               }
+                               ecore_file_shutdown();
+                       }
+
+                       if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE)
+                       {
+                               VideoLogInfo("[ERR]minfo_delete_bookmark");
+                               return -1;
+                       }
+               }
+       }
+
+       MpUtilMediaSvcBookmarkListClear(list);
+
+       return 0;
+}
+
+char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle)
+{
+       char *szThumbnailPath = NULL;
+
+       media_bookmark_get_thumbnail_path((media_bookmark_h)pBookmarkItemHandle, &szThumbnailPath);
+
+       return szThumbnailPath;
+}
+
+int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle)
+{
+       time_t nBookmarkTime;
+
+       media_bookmark_get_marked_time((media_bookmark_h)pBookmarkItemHandle, &nBookmarkTime);
+
+       return (int)nBookmarkTime;
+}
diff --git a/src/mp-util.c b/src/mp-util.c
new file mode 100755 (executable)
index 0000000..cc39ccf
--- /dev/null
@@ -0,0 +1,1588 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// CAPI
+#include <app.h>
+#include <sound_manager.h>
+
+#include <aul.h>
+#include <glib.h>
+#include <errno.h>
+#include <vconf.h>
+#include <pmapi.h>
+#include <utilX.h>
+#include <unistd.h>
+#include <E_DBus.h>
+#include <signal.h>
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <Ecore_Evas.h>
+#include <vconf-keys.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+//#include "mp-video-info-ctrl.h"
+
+#define MP_LAUNCH_BLUETOOTH_PACKAGE_NAME               "org.tizen.bluetooth"
+
+#define MP_UTIL_USER_AGENT_KEY                 "db/admin/uagent"
+//#define MP_UTIL_TEMP_USER_AGENT_VALUE        "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
+#define MP_UTIL_TEMP_USER_AGENT_VALUE  "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/1.0; U; Bada/1.0; en-us) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B"
+#define MP_UTIL_MMC_PATH               "/opt/storage/sdcard"
+#define MP_UTIL_FILE_PREFIX            "file://"
+
+#define MP_UTIL_ALLSHARE_CHANGE_NOTI   "memory/allshare/status"
+#define MP_UTIL_ALLSHARE_NOTI_ON       1
+#define MP_UTIL_ALLSHARE_NOTI_OFF      0
+
+#define MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS    "db/private/org.tizen.video-player/preview_url_videos"
+#define MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS   "db/private/org.tizen.video-player/preview_url_records"
+
+static bool bAlphaSet = TRUE;
+
+static Ecore_X_Window pMainXwindow = 0;
+static Ecore_X_Display *pX11DisplayHandle = NULL;
+
+static Evas_Object *pPopUpHandle = NULL;
+static Evas_Object *pPopupWindow = NULL;
+
+static MpVideoRotateType nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL;
+
+/*
+ * Callback function
+ */
+
+static void MpUtilBatteryStatusChangeCb(keynode_t *pKeyNode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       int nLowBatteryStatus = 0;
+
+       if (!pUserData) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!vconf_get_int
+           (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
+               if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
+                       /* MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpUtilBatteryExitCb); */
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+                       return;
+               }
+       } else {
+               VideoLogInfo("Fail to get vconf");
+       }
+}
+
+static void MpUtilMMCStatusChangeCb(keynode_t * pKeyNode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       char szFilename[9] = { 0 };
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       char *keyname = vconf_keynode_get_name(pKeyNode);
+       if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0) {
+               int nMMCState = vconf_keynode_get_int(pKeyNode);
+               if (nMMCState == VCONFKEY_FILEMANAGER_DB_UPDATED) {
+                       strncpy(szFilename, pAppData->szMediaUri, sizeof(szFilename) - 1);
+                       VideoLogInfo("FILE NAME[%s]", szFilename);
+                       if (!strcmp(MP_UTIL_MMC_PATH, szFilename)) {
+                               /* MpUtilNotifyPopUp(pAppData, "MMC card is ejected", NULL); */
+                               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+                       }
+               }
+       } else {
+               VideoLogInfo("Fail to get vconf");
+       }
+}
+
+/*
+ * External function
+ */
+
+void MpUtilExitVideoPlayer(void)
+{
+       VideoLogInfo("");
+
+       elm_exit();
+}
+
+static void MpUtilDestroyMainWindow(void *pUserData, Evas_Object *pEvasObject,
+                                   void *pEvent)
+{
+       VideoLogInfo("");
+
+       MpUtilExitVideoPlayer();
+}
+
+void MpUtilResetForRelaunching(void)
+{
+       VideoLogInfo("");
+
+       pX11DisplayHandle = NULL;
+       pPopUpHandle = NULL;
+       pPopupWindow = NULL;
+}
+
+void MpUtilSetAlphaOfMainWindow(bool bSetAlpha)
+{
+       VideoLogInfo("");
+
+       if(bSetAlpha)
+       {
+       }
+       else
+       {
+       }
+       bAlphaSet = bSetAlpha;
+}
+
+void *MpUtilCreateMainWindow(const char *pStrName)
+{
+       VideoLogInfo("");
+
+       if (!pStrName) {
+               VideoLogInfo("[ERR] No exist pStrName.");
+               return NULL;
+       }
+
+       if (pMainXwindow) {
+               evas_object_del((Evas_Object *)pMainXwindow);
+               pMainXwindow = 0;
+       }
+
+       Evas_Object *pEvasObject;
+
+       pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC);
+       if (pEvasObject) {
+               elm_win_title_set(pEvasObject, pStrName);
+               evas_object_smart_callback_add(pEvasObject, "delete,request",
+                                              MpUtilDestroyMainWindow, NULL);
+               elm_win_borderless_set(pEvasObject, EINA_FALSE);
+       }
+
+       Evas *pEvas = evas_object_evas_get(pEvasObject);
+       Evas_Object *pMainRect = evas_object_rectangle_add(pEvas);
+
+       if (pMainRect)
+       {
+               evas_object_size_hint_weight_set(pMainRect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_color_set(pMainRect, 0, 0, 0, 0);
+               evas_object_render_op_set(pMainRect, EVAS_RENDER_COPY);
+               evas_object_show(pMainRect);
+               elm_win_resize_object_add(pEvasObject, pMainRect);
+       }
+       pMainXwindow = elm_win_xwindow_get(pEvasObject);
+
+       return (void *)pEvasObject;
+}
+
+int MpUtilSetKeyGrab(const char *szKeyName, int nGrabMode)
+{
+       VideoLogInfo("");
+       if (!pX11DisplayHandle) {
+               pX11DisplayHandle = ecore_x_display_get();
+       }
+
+       if (!pMainXwindow) {
+               VideoLogInfo("Not exist pMainXwindow.");
+       }
+
+       utilx_grab_key(pX11DisplayHandle, pMainXwindow, szKeyName, nGrabMode);
+       return TRUE;
+}
+
+int MpUtilSetKeyUngrab(const char *szKeyName)
+{
+       VideoLogInfo("");
+       if (pMainXwindow && pX11DisplayHandle) {
+               utilx_ungrab_key(pX11DisplayHandle, pMainXwindow, szKeyName);
+       }
+       return TRUE;
+}
+
+
+bool MpUtilCheckRTSPType(char *szUriPath)
+{
+       if(szUriPath == NULL) {
+               VideoLogInfo("ERR:");
+               return FALSE;
+       }
+
+       //VideoLogInfo(" URI : %s", szUriPath);
+
+       if (strstr(szUriPath, "rtp"))
+               return TRUE;
+       else if (strstr(szUriPath, "rtsp"))
+               return TRUE;
+
+       return FALSE;
+}
+
+int MpUtilCheckUriType(char *szUriPath)
+{
+       if(szUriPath == NULL) {
+               VideoLogInfo("ERR:");
+               return FALSE;
+       }
+
+       VideoLogInfo(" URI : %s", szUriPath);
+
+       if (strstr(szUriPath, "rtp"))
+               return 1;
+       else if (strstr(szUriPath, "rtsp"))
+               return 1;
+       else if (strstr(szUriPath, "http"))
+               return 1;
+       else if (strstr(szUriPath, "https"))
+               return 1;
+
+       return 0;
+}
+
+bool MpUtilCheckLocalFileExist(char *uri)
+{
+       VideoLogInfo("");
+
+       if(uri == NULL)
+       {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       if(strstr(uri,MP_UTIL_FILE_PREFIX))
+       {
+               if (!g_file_test(uri+strlen(MP_UTIL_FILE_PREFIX), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
+               {
+                       return FALSE;
+               }
+               return TRUE;
+       }
+       else
+       {
+               if(!g_file_test(uri, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
+               {
+                       return FALSE;
+               }
+               return TRUE;
+       }
+}
+
+bool MpUtilCheckBatteryStatus(void)
+{
+       VideoLogInfo("");
+
+       int nLowBatteryStatus = 0;
+
+       if (!vconf_get_int
+           (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
+               if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+int MpUtilBatteryStatusNoti(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       if(!pAppData)
+       {
+               VideoLogInfo("[ERR] No exist appdata.");
+               return FALSE;
+       }
+
+       if(vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, MpUtilBatteryStatusChangeCb, pAppData))
+       {
+               VideoLogInfo("[ERR] Fail to set Battery notification.");
+               /* return FALSE; */
+       }
+
+       return TRUE;
+}
+
+int MpUtilBatteryStatusNotiIgnore(void)
+{
+       VideoLogInfo("");
+
+       if (vconf_ignore_key_changed
+           (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
+            MpUtilBatteryStatusChangeCb) < 0) {
+               VideoLogInfo("[ERR] Fail to ignore battery status.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+int MpUtilMMCstatusNoti(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       if (!pAppData) {
+               VideoLogInfo("[ERR] No exist appdata.");
+               return FALSE;
+       }
+
+       if (vconf_notify_key_changed
+           (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb,
+            pAppData) < 0) {
+               VideoLogInfo("[ERR] Fail to set MMC notification.");
+               //return FALSE;
+       }
+
+       return TRUE;
+}
+
+int MpUtilMMCstatusNotiIgnore(void)
+{
+       VideoLogInfo("");
+
+       if (vconf_ignore_key_changed
+           (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb) < 0) {
+               VideoLogInfo("[ERR] Fail to ignore MMC status.");
+               //return FALSE;
+       }
+
+       return TRUE;
+}
+
+int MpUtilGetRotationStateFromAppcore(void)
+{
+       VideoLogInfo("");
+       int bLocked = -1;
+
+       if (vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &bLocked) != 0)
+       {
+               VideoLogInfo("Get vlalue fail");
+               return nCurRotateValue;
+       }
+
+       if(bLocked == false)
+       {
+               switch(app_get_device_orientation())
+               {
+               case APP_DEVICE_ORIENTATION_0:
+                       VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL");
+                       nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL;
+                       break;
+
+               case APP_DEVICE_ORIENTATION_90:
+                       VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE");
+                       nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_REVERSE;
+                       break;
+
+               case APP_DEVICE_ORIENTATION_180:
+                       VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL");
+                       nCurRotateValue = VIDEO_ROTATE_PORTRAIT_REVERSE;
+                       break;
+
+               case APP_DEVICE_ORIENTATION_270:
+                       VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE");
+                       nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_NORMAL;
+                       break;
+               }
+       }
+       return nCurRotateValue;
+}
+
+int MpUtilGetRotationState(void)
+{
+       VideoLogInfo("");
+
+       return nCurRotateValue;
+}
+
+void MpUtilSetRotationState(int nCurRotation)
+{
+       VideoLogInfo("");
+
+       nCurRotateValue = nCurRotation;
+
+       if (pPopupWindow) {
+               MpUtilRotateWindow(nCurRotation, pPopupWindow);
+       }
+}
+
+bool MpUtilGetTitleFromFilepath(char *szFilepath, char *szTitle, int nLengthTitle)
+{
+       VideoLogInfo("");
+
+       if (!szFilepath || !szTitle) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       char *szTitleName;
+       char *szExt;
+
+       memset(szTitle, 0, nLengthTitle);
+
+       szTitleName = strrchr(szFilepath, '/');
+
+       if (szTitleName)
+               szTitleName++;
+       else
+               szTitleName = szFilepath;
+
+       szExt = strrchr(szTitleName, '.');
+
+       if (szExt) {
+               int nTmpStringSize = szExt - szTitleName;
+               strncpy(szTitle, szTitleName, nTmpStringSize);
+       } else {
+               strncpy(szTitle, szTitleName, STR_LEN_MAX - 1);
+       }
+
+       return TRUE;
+}
+
+void MpUtilInitSession(void)
+{
+       VideoLogInfo("");
+
+       sound_manager_set_session_type(SOUND_SESSION_TYPE_EXCLUSIVE);
+}
+
+void MpUtilFinishSession(void)
+{
+       VideoLogInfo("");
+       //sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
+}
+
+/*
+void MpUtilVolumeTypeSet(void)
+{
+       VideoLogInfo("");
+
+       sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
+}
+
+void MpUtilVolumeTypeUnset(void)
+{
+       VideoLogInfo("");
+
+        sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE);
+}
+
+void MpUtilSetVolumeChangeCbUnset()
+{
+       VideoLogInfo("");
+
+       sound_manager_unset_volume_changed_cb();
+}
+*/
+
+void MpUtilDeletePopupHandle(void)
+{
+       VideoLogInfo("");
+
+       if (pPopUpHandle) {
+               evas_object_del(pPopUpHandle);
+               pPopUpHandle = NULL;
+       } else {
+               VideoLogInfo("No exist popup.");
+       }
+
+       if (pPopupWindow) {
+               evas_object_del(pPopupWindow);
+               pPopupWindow = NULL;
+       } else {
+               VideoLogInfo("No exist popup window.");
+       }
+
+       MpUtilSetAlphaOfMainWindow(TRUE);
+}
+
+bool MpUtilNotifyPopUp(VideoAppData *pAppData, char *szContents, void *PopupButtonCallbackFunc)
+{
+       VideoLogInfo("");
+
+       if (pAppData == NULL || szContents == NULL) {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+
+       MpUtilDeletePopupHandle();
+
+       MpUtilSetAlphaOfMainWindow(FALSE);
+
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(pPopUpHandle, szContents);
+       elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR);
+       elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+       if(PopupButtonCallbackFunc)
+       {
+               evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
+       }
+
+       if(pPopupWindow)
+       {
+               MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow);
+       }
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}
+
+bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,
+                      void *PopupButtonCallbackFunc)
+{
+       VideoLogInfo("");
+
+       if (pAppData == NULL || szContents == NULL) {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+
+       MpUtilDeletePopupHandle();
+
+       MpUtilSetAlphaOfMainWindow(FALSE);
+
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(pPopUpHandle, szContents);
+       elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR);
+       elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+       if (PopupButtonCallbackFunc) {
+               evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
+       }
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}
+
+
+bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc)
+{
+       VideoLogInfo("");
+
+       if(szTitle == NULL || szContents == NULL || pAppData == NULL)
+       {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+
+       Evas_Object *pButton = NULL;
+
+       MpUtilDeletePopupHandle();
+
+       MpUtilSetAlphaOfMainWindow(FALSE);
+
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(pPopUpHandle, szContents);
+       elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
+
+       pButton = elm_button_add(pPopUpHandle);
+       elm_object_style_set ( pButton, "popup_button/default");
+       elm_object_text_set(pButton, MP_COM_SK_YES);
+       elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+       if(PopupYesButtonCallbackFunc)
+       {
+               evas_object_smart_callback_add(pButton, "clicked", PopupYesButtonCallbackFunc, (void*)pAppData);
+       }
+
+       pButton = elm_button_add(pPopUpHandle);
+       elm_object_text_set(pButton, MP_COM_SK_NO);
+       elm_object_style_set ( pButton, "popup_button/default");
+       elm_object_part_content_set(pPopUpHandle, "button2", pButton);
+
+       if(PopupNoButtonCallbackFunc)
+       {
+               evas_object_smart_callback_add(pButton, "clicked", PopupNoButtonCallbackFunc, (void*)pAppData);
+       }
+
+       //elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}
+
+bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if(pAppData == NULL)
+       {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+
+       Evas_Object *pButton = NULL;
+
+       MpUtilDeletePopupHandle();
+
+       MpUtilSetAlphaOfMainWindow(FALSE);
+
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_BODY_DELETE_Q);
+
+       pButton = elm_button_add(pPopUpHandle);
+       elm_object_text_set(pButton, MP_COM_BODY_DELETE);
+       elm_object_style_set(pButton, "sweep/delete");
+       elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+       if(PopupDeleteButtonCallbackFunc)
+       {
+               evas_object_smart_callback_add(pButton, "clicked", PopupDeleteButtonCallbackFunc, pUserData);
+       }
+
+       pButton = elm_button_add(pPopUpHandle);
+       elm_object_text_set(pButton, MP_COM_BUTTON_CANCEL);
+       elm_object_part_content_set(pPopUpHandle, "button2", pButton);
+
+       if(PopupCancelButtonCallbackFunc)
+       {
+               evas_object_smart_callback_add(pButton, "clicked", PopupCancelButtonCallbackFunc, pUserData);
+       }
+
+       //elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}
+
+void MpUtilSetLabelForDetail(Evas_Object *pBox, char *szString)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pLabel = NULL;
+
+       pLabel = elm_label_add(pBox);
+       elm_object_style_set(pLabel, "popup/default");
+       elm_object_text_set(pLabel, szString);
+       elm_label_ellipsis_set(pLabel, EINA_TRUE);
+       elm_label_wrap_width_set(pLabel, 614 * elm_config_scale_get());
+       evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_min_set(pLabel, 614 * elm_config_scale_get(), 35 * elm_config_scale_get());
+       elm_box_pack_end(pBox, pLabel);
+       evas_object_show(pLabel);
+}
+
+/*bool MpUtilDetailPopup(VideoAppData *pAppData, int nVideoItemIndex, char *szTitle, void *PopupButtonCallbackFunc)
+{
+       VideoLogInfo("");
+
+       if(szTitle == NULL || pAppData == NULL)
+       {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+       char *szFilePath = NULL;
+       char *szVideoTitle = NULL;
+
+       char szTmpStr[STR_LEN_MAX] = {0};
+       char szTmpFileDate[STR_LEN_MAX] = {0};
+       char szTmpFileExtension[STR_LEN_MAX] = {0};
+       char szTmpFileSize[STR_LEN_MAX] = {0};
+
+       double nLongtitude = 0.0;
+       double nLatitude = 0.0;
+
+       int nWidth = 0;
+       int nHeight = 0;
+
+       Evas_Object *pBox = NULL;
+       Evas_Object *pButton = NULL;
+
+       MpUtilDeletePopupHandle();
+
+       MpUtilSetAlphaOfMainWindow(FALSE);
+
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       szFilePath = MpUtilMediaSvcGetVideoUrl(nVideoItemIndex);
+       szVideoTitle = MpUtilMediaSvcGetVideoTitle(nVideoItemIndex);
+       nWidth = MpUtilMediaSvcGetVideoItemWidth(nVideoItemIndex);
+       nHeight = MpUtilMediaSvcGetVideoItemHeight(nVideoItemIndex);
+
+       MpVideoInfoCtrlGetFileInfo(szFilePath, szTmpFileDate, STR_LEN_MAX, szTmpFileExtension, STR_LEN_MAX, szTmpFileSize, STR_LEN_MAX);
+       MpVideoInfoCtrlGetGPS(szFilePath, &nLongtitude, &nLatitude);
+
+       pBox = elm_box_add(pPopUpHandle);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s </align></font_size>", MP_COM_BODY_DETAILS_TITLE, szVideoTitle);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_BODY_FORMAT, szTmpFileExtension);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_POP_DATE, szTmpFileDate);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_BODY_SIZE, szTmpFileSize);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %d x %d</align></font_size>", MP_IDLE_BODY_RESOLUTION, nWidth, nHeight);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %f</align></font_size>", _(MP_VPL_GPS_LATITUDE), nLatitude);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %f</align></font_size>", _(MP_VPL_GPS_LONGITUTD), nLongtitude);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       elm_object_content_set(pPopUpHandle, pBox);
+
+       elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
+       pButton = elm_button_add(pPopUpHandle);
+       elm_object_style_set (pButton, "popup_button/default");
+       elm_object_text_set(pButton, MP_COM_SK_BACK);
+       elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+       if(szFilePath)
+       {
+               free(szFilePath);
+               szFilePath = NULL;
+       }
+
+       if(szVideoTitle)
+       {
+               free(szVideoTitle);
+               szVideoTitle = NULL;
+       }
+
+       if(PopupButtonCallbackFunc)
+       {
+               evas_object_smart_callback_add(pButton, "clicked", PopupButtonCallbackFunc, (void*)pAppData);
+       }
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}*/
+
+bool MpUtilProgressPopUp(VideoAppData *pAppData, char *szLabel)
+{
+       VideoLogInfo("");
+
+       if (pAppData == NULL || szLabel == NULL) {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+
+       MpUtilDeletePopupHandle();
+
+       MpUtilSetAlphaOfMainWindow(FALSE);
+
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       Evas_Object *progressbar, *box, *label;
+
+       label = elm_label_add(pPopUpHandle);
+       elm_object_text_set(label, szLabel);
+       evas_object_show(label);
+
+       progressbar = elm_progressbar_add(pPopUpHandle);
+       elm_object_style_set(progressbar, "pending_list");
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_show(progressbar);
+
+       box = elm_box_add(pPopUpHandle);
+       elm_box_pack_end(box, label);
+       elm_box_pack_end(box, progressbar);
+       evas_object_show(box);
+       elm_object_content_set(pPopUpHandle, box);
+
+       if (pPopupWindow) {
+       MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow);
+       }
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}
+
+
+void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pButton = NULL;
+       Evas_Object *pIcon = NULL;
+
+       pButton = elm_button_add(pParent);
+
+       if(szIconPath)
+       {
+               pIcon = elm_icon_add(pParent);
+               elm_image_file_set(pIcon, szIconPath, NULL);
+               //evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_VERTICAL, nAspectWidth, nAspectHeight);
+               evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_NEITHER, nAspectWidth, nAspectHeight);
+               //elm_icon_resizable_set(pIcon, bSizeUp, bSizeDown);
+       }
+
+       if(szButtonStyle)
+       {
+               elm_object_style_set(pButton, szButtonStyle);
+       }
+
+       if(pIcon)
+       {
+               elm_object_part_content_set(pButton,PART_BUTTON_ICON, pIcon);
+       }
+
+       if(func)
+       {
+               evas_object_smart_callback_add(pButton, "clicked", func, (void *)pUserData);
+       }
+
+       elm_object_focus_allow_set(pButton, EINA_FALSE);
+       evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(pButton);
+
+       return (void *)pButton;
+}
+
+void *MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pButton = NULL;
+
+       pButton = elm_button_add(pParent);
+
+       if(szButtonStyle)
+       {
+               elm_object_style_set(pButton, szButtonStyle);
+       }
+
+       if(szButtonText)
+       {
+               elm_object_text_set(pButton, szButtonText);
+       }
+
+       if(func)
+       {
+               evas_object_smart_callback_add(pButton, "clicked", func, pUserData);
+       }
+
+       elm_object_focus_allow_set(pButton, EINA_FALSE);
+       evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(pButton);
+
+       return (void *)pButton;
+}
+
+void *MpUtilLoadEdjFile(Evas * pEvas, char *szEdjName, char *szGroupName)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pEdj = NULL;
+       int nWidth = 0;
+       int nHeight = 0;
+
+       pEdj = edje_object_add(pEvas);
+       if (!edje_object_file_set(pEdj, szEdjName, szGroupName)) {
+               VideoLogInfo("[ERR] EDJ file error : %s | %s\n", szEdjName,
+                            szGroupName);
+               return NULL;
+       }
+
+       edje_object_size_min_get(pEdj, &nWidth, &nHeight);
+       evas_object_resize(pEdj, nWidth, nHeight);
+
+       return (void *)pEdj;
+}
+
+bool MpUtilIsCallOff(void)
+{
+       VideoLogInfo("");
+
+       int nCallStatus = 0;
+
+       if (!vconf_get_int(VCONFKEY_CALL_STATE, &nCallStatus)) {
+               if (nCallStatus == VCONFKEY_CALL_OFF)
+               {
+                       VideoLogInfo("Call off");
+                       return TRUE;
+               }
+               else
+               {
+                       VideoLogInfo("!!! CALL ON !!!");
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+bool MpUtilIsCameraOff(void)
+{
+       VideoLogInfo("");
+
+       int nCameraStatus = 0;
+
+       if (!vconf_get_int(VCONFKEY_CAMERA_STATE, &nCameraStatus)) {
+               if (nCameraStatus == VCONFKEY_CAMERA_STATE_NULL)
+               {
+                       VideoLogInfo("Camera off");
+                       return TRUE;
+               }
+               else
+               {
+                       VideoLogInfo("!!! CAMERA ON !!!");
+               }
+       }
+
+       return FALSE;
+}
+
+bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData)
+{
+       if (!pCameraStatusCb) {
+               VideoLogInfo("pEarjackCb is empty.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       vconf_notify_key_changed(VCONFKEY_CAMERA_STATE, pCameraStatusCb, pUserData);
+
+       return TRUE;
+}
+
+bool MpUtilIsConnectEarjack(void)
+{
+       VideoLogInfo("");
+
+       int nEarjack = 0;
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &nEarjack)) {
+               if (nEarjack) {
+                       return TRUE;
+               }
+       }
+
+       return FALSE;
+}
+
+bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData)
+{
+       if (!pEarjackCb) {
+               VideoLogInfo("pEarjackCb is empty.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, pEarjackCb, pUserData);
+
+       return TRUE;
+}
+
+bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl)
+{
+       if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
+       {
+               VideoLogInfo("[ERR]");
+       }
+
+       VideoLogInfo("szPreviewUrl : %s", szPreviewUrl);
+
+       bool bRet = FALSE;
+
+       if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS, szPreviewUrl))
+       {
+               VideoLogInfo("Fail to write szPreviewUrl.");
+               bRet = FALSE;
+       }
+       else
+       {
+               VideoLogInfo("Success to write it.");
+               bRet = TRUE;
+       }
+
+       return bRet;
+}
+
+bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize)
+{
+       if(!szRetPreviewUrl)
+       {
+               VideoLogInfo("[ERR]");
+       }
+       else
+       {
+               memset(szRetPreviewUrl, 0, nStrSize);
+       }
+
+       VideoLogInfo("");
+
+       bool bRet = FALSE;
+       char *szPreviewUrl = NULL;
+
+
+       szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS);
+       if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
+       {
+               VideoLogInfo("Fail to get szPreviewUrl from vconf register.");
+               bRet = FALSE;
+       }
+       else
+       {
+               VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl);
+               strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1);
+               free(szPreviewUrl);
+               bRet = TRUE;
+       }
+
+       return bRet;
+}
+
+bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl)
+{
+       if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
+       {
+               VideoLogInfo("[ERR]");
+       }
+
+       VideoLogInfo("");
+
+       bool bRet = FALSE;
+
+       if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS, szPreviewUrl))
+       {
+               VideoLogInfo("Fail to write szPreviewUrl.");
+               bRet = FALSE;
+       }
+       else
+       {
+               VideoLogInfo("Success to write it.");
+               bRet = TRUE;
+       }
+
+       return bRet;
+}
+
+bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize)
+{
+       if(!szRetPreviewUrl)
+       {
+               VideoLogInfo("[ERR]");
+       }
+       else
+       {
+               memset(szRetPreviewUrl, 0, nStrSize);
+       }
+
+       VideoLogInfo("");
+
+       bool bRet = FALSE;
+       char *szPreviewUrl = NULL;
+
+
+       szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS);
+       if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
+       {
+               VideoLogInfo("Fail to get szPreviewUrl from vconf register.");
+               bRet = FALSE;
+       }
+       else
+       {
+               VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl);
+               strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1);
+               free(szPreviewUrl);
+               bRet = TRUE;
+       }
+
+       return bRet;
+}
+
+unsigned int MpUtilGetMainWindowXID(void)
+{
+       VideoLogInfo("");
+       if (pMainXwindow) {
+               VideoLogInfo("pMainXwindow : %d", pMainXwindow);
+               return pMainXwindow;
+       } else {
+               VideoLogInfo("No exist main window XID.");
+       }
+       return 0;
+}
+
+void MpUtilRotateWindow(int nRotateMode, void *pWindowHandle)
+{
+       VideoLogInfo("");
+
+       if (!pWindowHandle) {
+               return;
+       }
+
+       switch (nRotateMode) {
+       case VIDEO_ROTATE_UNKNOWN:
+               VideoLogInfo("VIDEO_ROTATE_UNKNOWN");
+               elm_win_rotation_with_resize_set(pWindowHandle, 0);
+               break;
+
+       case VIDEO_ROTATE_PORTRAIT_NORMAL:
+               VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL");
+               elm_win_rotation_with_resize_set(pWindowHandle, 0);
+               break;
+
+       case VIDEO_ROTATE_LANDSCAPE_NORMAL:
+               VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL");
+               elm_win_rotation_with_resize_set(pWindowHandle, 270);
+               break;
+
+       case VIDEO_ROTATE_PORTRAIT_REVERSE:
+               VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE");
+               elm_win_rotation_with_resize_set(pWindowHandle, 180);
+               break;
+
+       case VIDEO_ROTATE_LANDSCAPE_REVERSE:
+               VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE");
+               elm_win_rotation_with_resize_set(pWindowHandle, 90);
+               break;
+
+       default:
+               VideoLogInfo("DEFAULT - VIDEO_ROTATE_UNKNOWN");
+               elm_win_rotation_with_resize_set(pWindowHandle, 0);
+               break;
+       }
+}
+
+void MpUtilGetUserAgent(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       int nWifiMode = 0;
+
+       char *szUserAgent = NULL;
+       szUserAgent = vconf_get_str(VCONFKEY_ADMIN_UAGENT);
+       if(szUserAgent)
+       {
+               memset(pAppData->szUserAgent, 0, STR_LEN_MAX);
+               strncpy(pAppData->szUserAgent, szUserAgent, STR_LEN_MAX - 1);
+               free(szUserAgent);
+       }
+       else
+       {
+               VideoLogInfo("!!!!! NO EXIST USER AGENT !!!!!");
+       }
+
+#if 0
+       memset(pAppData->szUserAgent, 0, STR_LEN_MAX);
+       snprintf(pAppData->szUserAgent, STR_LEN_MAX, "%s", MP_UTIL_TEMP_USER_AGENT_VALUE);
+#endif
+
+       if(!vconf_get_int(VCONFKEY_WIFI_STATE, &nWifiMode))
+       {
+               VideoLogInfo("User Agent : %s, Wi-Fi : %d", pAppData->szUserAgent, nWifiMode);
+       }
+
+}
+
+double MpUtilGetSysTime(void)
+{
+       struct timeval tv;
+
+       gettimeofday(&tv, NULL);
+       return (double)tv.tv_sec + (double)tv.tv_usec / 1E6;
+}
+
+void MpUtilLcdNormalPowerLockForResume(void)
+{
+       VideoLogInfo("");
+
+       pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW | HOLD_KEY_BLOCK, 0);
+}
+
+void MpUtilLcdNormalPowerUnlockForPause(void)
+{
+       VideoLogInfo("");
+
+       pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
+}
+
+void MpUtilLcdOffForPowerButton(void)
+{
+       VideoLogInfo("");
+
+       pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
+}
+
+void MpUtilMultimediaKeyGrab(void)
+{
+       VideoLogInfo("");
+       MpUtilSetKeyGrab(PLAY_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(STOP_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(PAUSE_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(NEXT_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(PREV_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(REWIND_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(FORWARD_KEY, KEY_GRAB_OR_EXCLUSIVE);
+}
+
+void MpUtilMultimediaKeyUngrab(void)
+{
+       VideoLogInfo("");
+
+       MpUtilSetKeyUngrab(PAUSE_KEY);
+       MpUtilSetKeyUngrab(PLAY_KEY);
+       MpUtilSetKeyUngrab(STOP_KEY);
+       MpUtilSetKeyUngrab(NEXT_KEY);
+       MpUtilSetKeyUngrab(PREV_KEY);
+       MpUtilSetKeyUngrab(FORWARD_KEY);
+       MpUtilSetKeyUngrab(REWIND_KEY);
+
+}
+
+void MpUtilMultimediaVolumeKeyGrab(void)
+{
+       VideoLogInfo("");
+
+       MpUtilSetKeyGrab(VOLUME_UP_KEY, KEY_GRAB_EXCLUSIVE);
+       MpUtilSetKeyGrab(VOLUME_DOWN_KEY, KEY_GRAB_EXCLUSIVE);
+
+       int nRet = 0;
+       nRet = vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 1);
+       if(nRet != 0)
+       {
+               VideoLogError("VCONFKEY_STARTER_USE_VOLUME_KEY set fail: %d", nRet);
+       }
+}
+void MpUtilMultimediaVolumeKeyUngrab(void)
+{
+       VideoLogInfo("");
+
+       MpUtilSetKeyUngrab(VOLUME_UP_KEY);
+       MpUtilSetKeyUngrab(VOLUME_DOWN_KEY);
+}
+
+/*
+bool MpUtilSbeamIsActive(void)
+{
+       VideoLogInfo("bIsActiveNfcSbeam : %d", bIsActiveNfcSbeam);
+
+       return bIsActiveNfcSbeam;
+}
+
+void MpUtilSbeamP2pTargetDiscoveredCb(nfc_discovered_type_e nType, nfc_p2p_target_h pTarget, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if(nType == NFC_DISCOVERED_TYPE_ATTACHED)
+       {
+               VideoLogInfo("NFC_DISCOVERED_TYPE_ATTACHED");
+
+               if(bIsActiveNfcSbeam)
+               {
+                       char szWindowId[STR_LEN_MAX] = {0};
+
+                       if(strlen(pAppData->szMediaUri) <= 0)
+                       {
+                               VideoLogInfo("[ERR]No exist media uri.");
+                               return;
+                       }
+
+                       service_h svc_handle;
+                       service_create(&svc_handle);
+                       snprintf(szWindowId, STR_LEN_MAX-1, "%d", elm_win_xwindow_get(pAppData->pMainWindow));
+
+                       service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/nfc_sbeam_send");
+                       service_set_mime(svc_handle, "text/DirectShareVideos");
+                       service_set_window(svc_handle, elm_win_xwindow_get(pAppData->pMainWindow));
+                       service_set_uri(svc_handle, pAppData->szMediaUri);
+                       service_send_launch_request(svc_handle, NULL, NULL);
+                       service_destroy(svc_handle);
+               }
+               else
+               {
+                       VideoLogInfo("bIsActiveNfcSbeam is NULL.");
+               }
+       }
+}
+
+void MpUtilSbeamInit(void* pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int bSbeamState = VCONFKEY_NFC_SBEAM_OFF;
+
+       if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0)
+       {
+               VideoLogInfo("Fail to get value.");
+       }
+       else
+       {
+               if(bSbeamState != VCONFKEY_NFC_SBEAM_ON)
+               {
+                       VideoLogInfo("Off state about nfc sbeam");
+                       return;
+               }
+       }
+
+       if(bIsActiveNfcSbeam == FALSE)
+       {
+               if(nfc_manager_initialize(NULL, NULL) != NFC_ERROR_NONE)
+               {
+                       VideoLogInfo("[Err] Fail to initialize nfc manager.");
+                       return;
+               }
+
+               nfc_manager_set_p2p_target_discovered_cb(MpUtilSbeamP2pTargetDiscoveredCb, pUserData);
+
+               bIsActiveNfcSbeam = TRUE;
+       }
+       else
+       {
+               VideoLogInfo("Already set sbeam activation.");
+       }
+}
+
+void MpUtilSbeamDeinit(void)
+{
+       VideoLogInfo("");
+
+       int bSbeamState = VCONFKEY_NFC_SBEAM_OFF;
+
+       if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0)
+       {
+               VideoLogInfo("Fail to get value.");
+       }
+       else
+       {
+               if(bSbeamState != VCONFKEY_NFC_SBEAM_ON)
+               {
+                       VideoLogInfo("Off state about nfc sbeam");
+                       return;
+               }
+       }
+
+       if(bIsActiveNfcSbeam == TRUE)
+       {
+               if(nfc_manager_deinitialize() != NFC_ERROR_NONE)
+               {
+                       VideoLogInfo("[Err] Fail to deinitialize nfc manager.");
+               }
+
+               bIsActiveNfcSbeam = FALSE;
+       }
+       else
+       {
+               VideoLogInfo("Already set sbeam unactivation.");
+       }
+}
+*/
+
+char* MpUtilGetFileSize(unsigned int size)
+{
+       VideoLogInfo("");
+
+#define FILE_SIZE_LEN_MAX                      64
+#define BASIC_SIZE                                     1024    //used for file size check
+
+enum VIDEO_PLAYER_FILE_SIZE_TYPE
+{
+       SIZE_BYTE = 0,
+       SIZE_KB,
+       SIZE_MB,
+       SIZE_GB
+};
+
+       int nCount = 0;
+
+       char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1);
+       if(pTmp == NULL)
+       {
+               return NULL;
+       }
+
+       while(size >= (BASIC_SIZE))
+       {
+               size /= BASIC_SIZE;
+               nCount++;
+       }
+
+       if(nCount == SIZE_BYTE)
+       {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuB", size);
+       }
+       else if(nCount == SIZE_KB)
+       {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuKB", size);
+       }
+       else if(nCount == SIZE_MB)
+       {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", size);
+       }
+       else if(nCount == SIZE_GB)
+       {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuGB", size);
+       }
+       else
+       {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", 0);
+       }
+
+       VideoLogInfo("Size=%s", pTmp);
+
+       return pTmp;
+}
+
+void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour)
+{
+#define VIDEO_TIME_MSEC_PER_SEC         1000
+#define VIDEO_TIME_SEC_PER_MIN          60
+#define VIDEO_TIME_MIN_PER_HOUR         60
+#define VIDEO_TIME_SEC_PER_HOUR         (VIDEO_TIME_MIN_PER_HOUR * VIDEO_TIME_SEC_PER_MIN)
+
+       if(!szRetTime)
+       {
+               VideoLogInfo("[ERR] No exist szRetTime pointer.");
+               return;
+       }
+       else
+       {
+               memset(szRetTime, 0, STR_LEN_MAX);
+       }
+
+       if(nVideoTime <= 0)
+       {
+               VideoLogInfo("nVideoTime : %d", nVideoTime);
+       }
+
+       int nTime = floor(nVideoTime / VIDEO_TIME_MSEC_PER_SEC);
+       int nHour = 0;
+       int nMin = 0;
+       int nSec = 0;
+       int nTmp = 0;
+
+       if (nTime >= VIDEO_TIME_SEC_PER_HOUR)
+       {
+               nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
+               nTmp = floor(nTime / VIDEO_TIME_SEC_PER_MIN);
+               nMin = nTmp % VIDEO_TIME_MIN_PER_HOUR;
+               nHour = floor(nTmp / VIDEO_TIME_MIN_PER_HOUR);
+       }
+       else if (nTime >= VIDEO_TIME_SEC_PER_MIN)
+       {
+               nHour = 0;
+               nMin = floor(nTime / VIDEO_TIME_SEC_PER_MIN);
+               nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
+       }
+       else
+       {
+               nHour = 0;
+               nMin = 0;
+               nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
+       }
+
+       if(bIsHideHour)
+       {
+               if(nHour)
+               {
+                       snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec);
+               }
+               else
+               {
+                       snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d", nMin, nSec);
+               }
+       }
+       else
+       {
+               snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec);
+       }
+
+       szRetTime[strlen(szRetTime)] = '\0';
+
+       VideoLogInfo("szRetTime : %s", szRetTime);
+}
+
+void MpUtilLayoutVisibleOff(void *pWindowHandle)
+{
+       VideoLogInfo("");
+
+       if(pWindowHandle == NULL)
+       {
+               VideoLogError("Window handle is NULL");
+               return;
+       }
+
+       if(pX11DisplayHandle == NULL)
+       {
+               VideoLogError("Display handle is NULL");
+               return;
+       }
+
+       if (!strcmp ("mobile", elm_win_profile_get (pWindowHandle)))
+       {
+               utilx_set_fb_visible (pX11DisplayHandle, UTILX_FB_TYPE_UI, FALSE);
+       }
+       else
+       {
+               VideoLogError("Skip for Desktop mode : %s", elm_win_profile_get (pWindowHandle));
+       }
+       return;
+}
\ No newline at end of file
diff --git a/src/mp-video-animation-ctrl.c b/src/mp-video-animation-ctrl.c
new file mode 100755 (executable)
index 0000000..793f815
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-animation-ctrl.h"
+
+#define BUFFERING_TXT_MAX_LEN  16
+
+static Evas_Object *pAnimationEdj = NULL;
+static Ecore_Timer *pAnimationTimer = NULL;
+
+static int nIconIndex = 0;
+
+static Eina_Bool MpVideoAnimationCtrlTimerCb(void *data)
+{
+/*     VideoLogInfo(""); */
+
+       char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, };
+
+       snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d",
+                SIGNAL_ANIMATION_IMAGE_LOADING, nIconIndex);
+
+       edje_object_signal_emit(pAnimationEdj, sig_format, "*");
+
+       nIconIndex += 1;
+       if (nIconIndex > ANIMATION_MAX_COUNT)
+               nIconIndex = 1;
+
+       return EINA_TRUE;
+}
+
+void *MpVideoAnimationCtrlInit(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (pUserData == NULL) {
+               VideoLogInfo("data is NULL");
+               return NULL;
+       }
+
+       Evas *pMainWindowEvas = (Evas *) pUserData;
+
+       pAnimationEdj = MpUtilLoadEdjFile(pMainWindowEvas,
+                                         VIDEO_PLAYER_ANIMATION_EDJ,
+                                         ANIMATION_EDJ_GROUP);
+
+       evas_object_hide(pAnimationEdj);
+
+       return (void *)pAnimationEdj;
+}
+
+void MpVideoAnimationCtrlDestroy(void)
+{
+       VideoLogInfo("");
+
+       if (pAnimationTimer) {
+               ecore_timer_del(pAnimationTimer);
+               pAnimationTimer = NULL;
+       }
+
+       if (pAnimationEdj) {
+               evas_object_hide(pAnimationEdj);
+               evas_object_del(pAnimationEdj);
+               pAnimationEdj = NULL;
+       }
+
+       nIconIndex = 0;
+}
+
+void MpVideoAnimationCtrlSetPercent(int nPercent)
+{
+       VideoLogInfo("");
+       if (nPercent >= 0) {
+               char szBuffering[BUFFERING_TXT_MAX_LEN] = { 0, };
+
+               snprintf(szBuffering, BUFFERING_TXT_MAX_LEN, "Loading %d%%...",
+                        nPercent);
+               edje_object_part_text_set(pAnimationEdj, "loading.txt",
+                                         szBuffering);
+       } else {
+               edje_object_part_text_set(pAnimationEdj, "loading.txt",
+                                         "Loading...");
+       }
+}
+
+void MpVideoAnimationCtrlPlay(void)
+{
+       VideoLogInfo("");
+       if (pAnimationTimer == NULL) {
+               pAnimationTimer = ecore_timer_add(ANIMATION_TIMER_INTERVAL,
+                                                 MpVideoAnimationCtrlTimerCb,
+                                                 NULL);
+       }
+}
+
+void MpVideoAnimationCtrlStop(void)
+{
+       VideoLogInfo("");
+
+       if (pAnimationTimer) {
+               ecore_timer_del(pAnimationTimer);
+               pAnimationTimer = NULL;
+       }
+}
+
+void MpVideoAnimationCtrlShow(void)
+{
+       VideoLogInfo("");
+
+       if (pAnimationTimer == NULL) {
+               MpVideoAnimationCtrlPlay();
+               MpVideoAnimationCtrlSetPercent(-1);
+               evas_object_show(pAnimationEdj);
+       }
+}
+
+void MpVideoAnimationCtrlHide(void)
+{
+       VideoLogInfo("");
+
+       MpVideoAnimationCtrlStop();
+       evas_object_hide(pAnimationEdj);
+}
+
+bool MpVideoAnimationCtrlGetActiveState(void)
+{
+       VideoLogInfo("");
+       if (pAnimationTimer)
+               return true;
+       else
+               return false;
+}
diff --git a/src/mp-video-app-ctrl.c b/src/mp-video-app-ctrl.c
new file mode 100755 (executable)
index 0000000..a837ebe
--- /dev/null
@@ -0,0 +1,1368 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <app.h>
+#include <player.h>
+#include <mm_util_imgp.h>
+#include <image_util.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-app-ctrl.h"
+#include "mp-video-view-mgr.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-streaming-ctrl.h"
+#include "mp-external-ug.h"
+#include "mp-video-ctrl-mgr.h"
+#include "mp-video-service-ctrl.h"
+
+static int nPlayerErrorType = 0;
+static int nPlayerInterruptType = 0;
+static int nBufferingRate = 0;
+static bool bWindowForegroundState = FALSE;
+
+static MpPlayerInterrupteType  g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED;
+
+static Ecore_Pipe      *pEcorePipeHandleForErrorMsg = NULL;
+static Ecore_Pipe      *pEcorePipeHandleBOF = NULL;
+static Ecore_Pipe      *pEcorePipeHandleEOF = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForBuffering = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForResumed = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForInterruped = NULL;
+static Ecore_Pipe      *pEcorePipeHandlerForSeekComplete = NULL;
+
+
+static void MpVideoAppCtrlStart(VideoAppData *pAppData);
+static void MpVideoAppCtrlStop(VideoAppData *pAppData);
+static void MpVideoAppCtrlPause(VideoAppData *pAppData);
+static void MpVideoAppCtrlResume(VideoAppData *pAppData);
+static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData);
+static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData);
+static void MpVideoAppCtrlFFDown(VideoAppData *pAppData);
+static void MpVideoAppCtrlRewDown(VideoAppData *pAppData);
+static void MpVideoAppCtrlFFUp(VideoAppData *pAppData);
+static void MpVideoAppCtrlRewUp(VideoAppData *pAppData);
+static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData);
+static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData);
+static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData);
+static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState);
+static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData);
+static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData);
+static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData);
+static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData);
+static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData);
+static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData);
+static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData);
+static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData);
+static void MpVideoAppCtrlExit(VideoAppData *pAppData);
+static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData);
+static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData);
+static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData);
+static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData);
+static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData);
+
+
+/*
+ * Callback function
+ */
+
+static void MpVideoAppCtrlUnSupportFormatErrorCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpUtilLcdNormalPowerUnlockForPause();
+
+       MpVideoAppCtrlEndOfStream(pAppData);
+}
+
+
+static void MpVideoAppCtrlExitCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+}
+
+static int MpVideoAppCtrlPauseByInterrupteCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoAppCtrlPause(pAppData);
+
+       g_nCurrentInterrupt = nPlayerInterruptType;
+
+       switch(nPlayerInterruptType)
+       {
+       case MP_PLAYER_INTERRUPTED_COMPLETED:
+               VideoLogInfo("MP_PLAYER_INTERRUPTED_COMPLETED");
+               break;
+
+       case MP_PLAYER_INTERRUPTED_BY_OTHER_APP:
+               VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_OTHER_APP");
+               break;
+
+       case MP_PLAYER_INTERRUPTED_BY_CALL:
+               VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_CALL");
+               break;
+
+       case MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG:
+               VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG");
+               break;
+
+       case MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT:
+               VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT");
+               break;
+
+       case MP_PLAYER_INTERRUPTED_BY_ALARM:
+               VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_ALARM");
+               break;
+
+       default:
+               VideoLogInfo("OTHER");
+               break;
+       }
+
+       return 0;
+}
+
+static int MpVideoAppCtrlBeginOfPlayCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
+       if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoCtrlMgrMediaPlay((void *)pAppData);
+
+               pAppData->bStartSeek = FALSE;
+
+               if(pAppData->nSetPosition > 0)
+               {
+                       VideoLogInfo("Start position time : %dms", pAppData->nSetPosition);
+                       MpVideoAppCtrlSetPosition(pAppData);
+               }
+
+       }
+       else
+       {
+               pAppData->bStartSeek = FALSE;
+               if(pAppData->nSetPosition > 0)
+               {
+                       VideoLogInfo("Pending seek position time : %dms", pAppData->nSetPosition);
+                       MpVideoAppCtrlSetPosition(pAppData);
+                       pAppData->bStartSeek = TRUE;
+               }
+
+               if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
+               {
+                       MpVideoCtrlMgrSetMute(TRUE);
+               }
+
+               if(!pAppData->bStartSeek)
+               {
+                       MpVideoCtrlMgrMediaPlay((void *)pAppData);
+               }
+       }
+
+       MpVideoAppCtrlBeginOfStream(pAppData);
+       MpUtilLcdNormalPowerLockForResume();
+
+       return 0;
+}
+
+static int MpVideoAppCtrlEndOfPlayCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoViewCtrlPause(pAppData);
+       MpVideoAppCtrlStop(pAppData);
+       MpVideoCtrlMgrMediaDestroy(pAppData);
+
+       MpUtilLcdNormalPowerUnlockForPause();
+
+       MpVideoAppCtrlEndOfStream(pAppData);
+
+       return 0;
+}
+
+static int MpVideoAppCtrlBufferingCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       if(nBufferingRate < 10)
+       {
+               MpVideoAppCtrlShowLayout((VideoAppData *)pUserData);
+       }
+
+       MpVideoViewSetBufferingRateForStreamingView(nBufferingRate, pUserData);
+
+       return 0;
+}
+
+static int MpVideoAppCtrlSeekCompletePipeCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(pAppData->bStartSeek)
+       {
+               MpVideoCtrlMgrMediaPlay((void *)pAppData);
+               MpVideoAppCtrlBeginOfStream(pAppData);
+               MpUtilLcdNormalPowerLockForResume();
+               pAppData->bStartSeek = FALSE;
+       }
+
+       pAppData->bSeekComplete = TRUE;
+
+       if(pAppData->nSeekPosition > 0) {
+               pAppData->nSetPosition = pAppData->nSeekPosition;
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+               pAppData->nSeekPosition = 0;
+               MpVideoViewCtrlUpdateProgressbar((void *)pAppData);
+               return 0;
+       }
+
+       if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_PAUSE) {
+               VideoLogInfo("");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE;
+       }
+       else if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_RESUME) {
+               VideoLogInfo("");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE;
+       }
+
+       return 0;
+}
+
+static void MpVideoAppCtrlSeekCompleteCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       if(pEcorePipeHandlerForSeekComplete)
+       {
+               if(!ecore_pipe_write(pEcorePipeHandlerForSeekComplete, (void *)pAppData, sizeof(VideoAppData)))
+               {
+                       VideoLogDebug("Fail to write MpVideoAppCtrlSeekCompleteCb.");
+               }
+       }
+}
+
+
+static int MpVideoAppCtrlResumeByRewCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoAppCtrlResume(pAppData);
+
+       return 0;
+}
+
+static int MpVideoAppCtrlErrormsgCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       switch(MpVideoCtrlMgrGetErrorType(nPlayerErrorType))
+       {
+       case MP_PLAYER_ERROR_NONE:
+               VideoLogInfo("MP_PLAYER_ERROR_NONE");
+               break;
+
+       case MP_PLAYER_ERROR_OUT_OF_MEMORY:
+               VideoLogInfo("MP_PLAYER_ERROR_OUT_OF_MEMORY");
+               MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
+               break;
+
+       case MP_PLAYER_ERROR_INVALID_PARAMETER:
+               VideoLogInfo("MP_PLAYER_ERROR_INVALID_PARAMETER");
+               MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
+               break;
+
+       case MP_PLAYER_ERROR_NO_SUCH_FILE:
+               VideoLogInfo("MP_PLAYER_ERROR_NO_SUCH_FILE");
+               MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_FILE_NOT_FOUND, MpVideoAppCtrlExitCb);
+               break;
+
+       case MP_PLAYER_ERROR_INVALID_OPERATION:
+               VideoLogInfo("MP_PLAYER_ERROR_INVALID_OPERATION");
+               MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb);
+               break;
+
+       case MP_PLAYER_ERROR_SEEK_FAILED:
+               VideoLogInfo("MP_PLAYER_ERROR_SEEK_FAILED");
+               break;
+
+       case MP_PLAYER_ERROR_INVALID_STATE:
+               VideoLogInfo("MP_PLAYER_ERROR_INVALID_STATE");
+               break;
+
+       case MP_PLAYER_ERROR_NOT_SUPPORTED_FILE:
+               VideoLogInfo("MP_PLAYER_ERROR_NOT_SUPPORTED_FILE");
+               MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_POP_UNSUPPORTED_FILE_TYPE), MpVideoAppCtrlUnSupportFormatErrorCb);
+               break;
+
+       case MP_PLAYER_ERROR_INVALID_URI:
+               VideoLogInfo("MP_PLAYER_ERROR_INVALID_URI");
+               MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_INVALID_URL, MpVideoAppCtrlExitCb);
+               break;
+
+       case MP_PLAYER_ERROR_SOUND_POLICY:
+               VideoLogInfo("MP_PLAYER_ERROR_SOUND_POLICY");
+               break;
+
+       case MP_PLAYER_ERROR_CONNECTION_FAILED:
+               VideoLogInfo("MP_PLAYER_ERROR_CONNECTION_FAILED");
+               MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_CONNECTION_FAILED, MpVideoAppCtrlExitCb);
+               break;
+
+       case MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED:
+               VideoLogInfo("MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED");
+               break;
+
+       default:
+               MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
+               break;
+       }
+
+       return 0;
+}
+
+static void MpVideoAppCtrlPlayerPrepareCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if(pEcorePipeHandleBOF)
+       {
+               if(!ecore_pipe_write(pEcorePipeHandleBOF, pUserData, sizeof(VideoAppData)))
+               {
+                       VideoLogDebug("FAIL PIPE WRITE");
+               }
+       }
+}
+
+static void MpVideoAppCtrlPlayerCompletedCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if(pEcorePipeHandleEOF)
+       {
+               if(!ecore_pipe_write(pEcorePipeHandleEOF, pUserData, sizeof(VideoAppData)))
+               {
+                       VideoLogDebug("FAIL PIPE WRITE");
+               }
+       }
+}
+
+static void MpVideoAppCtrlPlayerInterruptedCb(player_interrupted_code_e nInterruptCode, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       nPlayerInterruptType = nInterruptCode;
+
+       if(pEcorePipeHandleForInterruped)
+       {
+               if(!ecore_pipe_write(pEcorePipeHandleForInterruped, pUserData, sizeof(VideoAppData)))
+               {
+                       VideoLogDebug("FAIL PIPE WRITE");
+               }
+       }
+}
+
+static void MpVideoAppCtrlPlayerErrorCb(int nPlayerErrorCode, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       nPlayerErrorType = nPlayerErrorCode;
+
+       if(pEcorePipeHandleForErrorMsg)
+       {
+               if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg, pUserData, sizeof(VideoAppData)))
+               {
+                       VideoLogDebug("FAIL PIPE WRITE");
+               }
+       }
+}
+
+static void MpVideoAppCtrlPlayerBufferingCb(int nPercent, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("Buffering : %d%% ", nPercent);
+
+       nBufferingRate = nPercent;
+
+       if(pEcorePipeHandleForBuffering)
+       {
+               if(!ecore_pipe_write(pEcorePipeHandleForBuffering, pUserData, sizeof(VideoAppData)))
+               {
+                       VideoLogDebug("FAIL PIPE WRITE");
+               }
+       }
+}
+
+static void MpVideoAppCtrlPlayerUpdateSubtitleCb(unsigned long nDuration, char* szText, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+}
+
+/*
+ * Internal function
+ */
+void MpVideoAppCtrlFuncInit(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       if(!pAppData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStart = (void *)MpVideoAppCtrlStart;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStop = (void *)MpVideoAppCtrlStop;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause = (void *)MpVideoAppCtrlPause;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume = (void *)MpVideoAppCtrlResume;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause = (void *)MpVideoAppCtrlStopByAppPause;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume = (void *)MpVideoAppCtrlStartByAppResume;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFDown = (void *)MpVideoAppCtrlFFDown;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewDown = (void *)MpVideoAppCtrlRewDown;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFUp = (void *)MpVideoAppCtrlFFUp;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewUp = (void *)MpVideoAppCtrlRewUp;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF = (void *)MpVideoAppCtrlSpeedFF;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew = (void *)MpVideoAppCtrlSpeedRew;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset = (void *)MpVideoAppCtrlSpeedReset;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen = (void *)MpVideoAppCtrlRotateScreen;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition = (void *)MpVideoAppCtrlGetPosition;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition = (void *)MpVideoAppCtrlSetPosition;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout = (void *)MpVideoAppCtrlHideLayout;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout = (void *)MpVideoAppCtrlShowLayout;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish = (void *)MpVideoAppCtrlHideFinish;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish = (void *)MpVideoAppCtrlShowFinish;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution = (void *)MpVideoAppCtrlGetVideoResolution;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime = (void *)MpVideoAppCtrlReqDurationTime;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlBeginOfStream = (void *)MpVideoAppCtrlBeginOfStream;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlEndOfStream = (void *)MpVideoAppCtrlEndOfStream;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit = (void *)MpVideoAppCtrlExit;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartStreaming = (void *)MpVideoAppCtrlStartStreaming;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching = (void *)MpVideoAppCtrlReLaunching;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition = (void *)MpVideoAppCtrlGetBufferingPosition;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume = (void *)MpVideoAppCtrlShowVolume;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume = (void *)MpVideoAppCtrlHideVolume;
+}
+
+static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               VideoLogInfo("Skip Normal Play mode");
+               return;
+       }
+
+       if(MpUtilCheckRTSPType(pAppData->szMediaUri))
+       {
+               return;
+       }
+
+       pAppData->nBufferingPosition = MpVideoCtrlMgrGetBufferingPosition();
+}
+
+static void MpVideoAppCtrlStart(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               if(!MpUtilCheckLocalFileExist(pAppData->szMediaUri))
+               {
+                       MpUtilNotifyPopUp(pAppData, MP_COM_POP_FILE_NOT_EXIST, MpVideoAppCtrlExitCb);
+                       return;
+               }
+
+               MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle, STR_LEN_MAX);
+               MpVideoViewCtrlChangeTitle(pAppData);
+               MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
+                                       (void *)MpUtilGetMainWindowXID(),
+                                       NULL,
+                                       pAppData->szSubtitle,
+                                       (void *)pAppData);
+
+               MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb,
+                                               MpVideoAppCtrlPlayerInterruptedCb,
+                                               MpVideoAppCtrlPlayerErrorCb,
+                                               MpVideoAppCtrlPlayerBufferingCb,
+                                               MpVideoAppCtrlPlayerUpdateSubtitleCb,
+                                               (void*)pAppData);
+
+               if(!MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData))
+               {
+                       MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb);
+                       return;
+               }
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               if(!MpVideoStreamingCtrlIsNetworkOn())
+               {
+                       MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoAppCtrlExitCb);
+                       return;
+               }
+
+               if(MpVideoStreamingCtrlInit((void *)pAppData))
+               {
+                       VideoLogInfo("Connect to network.");
+                       MpVideoAppCtrlStartStreaming((void *)pAppData);
+               }
+       }
+}
+
+static void MpVideoAppCtrlStop(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
+       MpVideoCtrlMgrMediaStop((void *)pAppData);
+}
+
+static void MpVideoAppCtrlPause(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE)
+       {
+               VideoLogInfo("Allready Pause video player.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
+
+       MpVideoCtrlMgrMediaPause(pAppData);
+       MpVideoViewCtrlPause(pAppData);
+       MpVideoAppCtrlShowLayout(pAppData);
+       MpUtilLcdNormalPowerUnlockForPause();
+}
+
+static void MpVideoAppCtrlResume(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
+       {
+               return;
+       }
+
+       if(pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY)
+       {
+               VideoLogInfo("Allready Resume video player.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
+       MpUtilMultimediaKeyGrab();
+
+       MpVideoAppCtrlGetPosition(pAppData);
+       MpVideoCtrlMgrMediaResume(pAppData);
+       MpVideoViewCtrlResume(pAppData);
+       MpVideoAppCtrlShowLayout(pAppData);
+       MpUtilLcdNormalPowerLockForResume();
+}
+
+static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       if(!MpVideoCtrlMgrIsExistPlayerHandle())
+       {
+               VideoLogInfo("Not exist Player handle.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoAppCtrlGetPosition(pAppData);
+       pAppData->nSetPosition = pAppData->nCurPosition;
+       VideoLogInfo("Current position time : %d", pAppData->nSetPosition);
+       MpVideoViewCtrlPause(pAppData);
+       MpVideoAppCtrlStop(pAppData);
+       MpVideoCtrlMgrMediaDestroy(pAppData);
+       MpUtilLcdNormalPowerUnlockForPause();
+
+       MpVideoViewCtrlResetProgressBar((void *)pAppData);
+
+       MpUtilMultimediaKeyUngrab();
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+       if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoViewSetBufferingRateForStreamingView(0, (void *)pAppData);
+       }
+}
+
+static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if(bWindowForegroundState == FALSE)
+       {
+               VideoLogInfo("The Window of the video player is hided.");
+       }
+
+       MpVideoAppCtrlStart(pAppData);
+       MpVideoViewCtrlResume(pAppData);
+       MpVideoAppCtrlShowLayout(pAppData);
+
+       return;
+}
+
+static void MpVideoAppCtrlFFDown(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlRewDown(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlFFUp(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlRewUp(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if(VIDEO_ROTATE_UNKNOWN > nRotateState || VIDEO_ROTATE_LANDSCAPE_REVERSE < nRotateState)
+       {
+               VideoLogInfo("Wrong rotate state. - %d", nRotateState);
+               return;
+       }
+
+       MpVideoCtrlMgrRotateVideoScreen(nRotateState);
+}
+
+static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData)
+{
+       pAppData->nCurPosition = MpVideoCtrlMgrGetPosition();
+}
+
+static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoCtrlMgrSetPosition(pAppData->nSetPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData);
+       if(MpUtilCheckRTSPType(pAppData->szMediaUri))
+       {
+               VideoLogInfo("RTSP SEEK Start");
+               nBufferingRate = 0;
+               MpVideoAppCtrlBufferingCb((void *)pAppData);
+       }
+}
+
+static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+       MpVideoAppCtrlGetPosition(pAppData);
+       MpVideoCtrlMgrSetPosition( pAppData->nCurPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData);
+       MpVideoCtrlMgrResetPlaySpeed((void *)pAppData);
+}
+
+static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+       MpVideoCtrlMgrSetPlaySpeedUp((void *)pAppData);
+}
+
+static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+       MpVideoCtrlMgrSetPlaySpeedDown((void *)pAppData);
+}
+
+static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewHideLayout((void *)pAppData);
+}
+
+static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewShowLayout((void *)pAppData);
+}
+
+static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewCtrlHideFinish((void *)pAppData, bWindowForegroundState);
+
+}
+static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewCtrlShowFinish((void *)pAppData);
+}
+
+static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       pAppData->nVideoWidthResolution = MpVideoCtrlMgrGetVideoWidthResolution();
+       pAppData->nVideoHeightResolution = MpVideoCtrlMgrGetVideoHeightResolution();
+}
+
+static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       pAppData->nDuration = MpVideoCtrlMgrGetDuration();
+}
+
+static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpUtilMultimediaKeyGrab();
+
+       MpVideoAppCtrlGetVideoResolution(pAppData);
+       pAppData->nDuration = MpVideoCtrlMgrGetDuration();
+
+       MpVideoViewCtrlInitAfterBeginOfStream((void*)pAppData);
+
+       if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
+       {
+               MpVideoAppCtrlPause(pAppData);
+               MpVideoCtrlMgrSetMute(FALSE);
+       }
+
+       if(MpVideoCtrlMgrIsOnlyAudio())
+       {
+               MpVideoViewCtrlShowNocontentImage((void*)pAppData);
+       }
+       else
+       {
+               MpVideoViewCtrlHideNocontentImage((void*)pAppData);
+       }
+}
+
+static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+       if(nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY)
+       {
+               if(pAppData->nCurPosition >= 0)
+               {
+                       MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, 0);
+               }
+               else
+               {
+                       VideoLogInfo("Invalid Plaing time or duration time.");
+               }
+       }
+       MpVideoAppCtrlExit(pAppData);
+}
+
+static void MpVideoAppCtrlExit(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if(pEcorePipeHandleForErrorMsg)
+       {
+               ecore_pipe_del(pEcorePipeHandleForErrorMsg);
+               pEcorePipeHandleForErrorMsg = NULL;
+       }
+
+       if(pEcorePipeHandleBOF)
+       {
+               ecore_pipe_del(pEcorePipeHandleBOF);
+               pEcorePipeHandleBOF = NULL;
+       }
+
+       if(pEcorePipeHandleEOF)
+       {
+               ecore_pipe_del(pEcorePipeHandleEOF);
+               pEcorePipeHandleEOF = NULL;
+       }
+
+       if(pEcorePipeHandleForBuffering)
+       {
+               ecore_pipe_del(pEcorePipeHandleForBuffering);
+               pEcorePipeHandleForBuffering = NULL;
+       }
+
+       if(pEcorePipeHandleForResumed)
+       {
+               ecore_pipe_del(pEcorePipeHandleForResumed);
+               pEcorePipeHandleForResumed = NULL;
+       }
+
+       if(pEcorePipeHandleForInterruped)
+       {
+               ecore_pipe_del(pEcorePipeHandleForInterruped);
+               pEcorePipeHandleForInterruped = NULL;
+       }
+
+       if(pEcorePipeHandlerForSeekComplete)
+       {
+               ecore_pipe_del(pEcorePipeHandlerForSeekComplete);
+               pEcorePipeHandlerForSeekComplete = NULL;
+       }
+
+       MpVideoAppCtrlStop(pAppData);
+       MpVideoCtrlMgrMediaDestroy(pAppData);
+       MpUtilDeletePopupHandle();
+       MpVideoViewCtrlDestroy((void *)pAppData);
+
+       if(MpVideoServiceCtrlGetPlayerType() == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingCtrlDestroy((void *)pAppData);
+       }
+
+       MpExternalUgDestroyAll();
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+       elm_exit();
+}
+
+static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       char *szCookie = MpVideoServiceCtrlGetCookieForStreaming();
+       if(szCookie)
+       {
+               strncpy(pAppData->szCookie, szCookie, STR_LEN_MAX - 1);
+       }
+
+       MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, (void *)MpUtilGetMainWindowXID(),
+                               NULL, NULL, (void *)pAppData);
+
+       MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb,
+                                       MpVideoAppCtrlPlayerInterruptedCb,
+                                       MpVideoAppCtrlPlayerErrorCb,
+                                       MpVideoAppCtrlPlayerBufferingCb,
+                                       MpVideoAppCtrlPlayerUpdateSubtitleCb,
+                                       (void*)pAppData);
+
+       MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData);
+
+       MpVideoAppCtrlRotateScreen(pAppData, MpUtilGetRotationState());
+}
+
+static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoAppCtrlStop(pAppData);
+       MpVideoCtrlMgrMediaDestroy(pAppData);
+
+       MpVideoViewCtrlHideVolume();
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               pAppData->nSetPosition = 0;
+               MpVideoViewCtrlChangeTitle(pAppData);
+       }
+
+       if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoAppCtrlStartStreaming(pAppData);
+       }
+}
+
+static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if(pEcorePipeHandlerForSeekComplete)
+       {
+               ecore_pipe_del(pEcorePipeHandlerForSeekComplete);
+               pEcorePipeHandlerForSeekComplete = NULL;
+       }
+       pEcorePipeHandlerForSeekComplete = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlSeekCompletePipeCb, (void *)pAppData);
+
+       if(pEcorePipeHandleForErrorMsg)
+       {
+               ecore_pipe_del(pEcorePipeHandleForErrorMsg);
+               pEcorePipeHandleForErrorMsg = NULL;
+       }
+
+       pEcorePipeHandleForErrorMsg = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlErrormsgCb, (void *)pAppData);
+
+       if(pEcorePipeHandleBOF)
+       {
+               ecore_pipe_del(pEcorePipeHandleBOF);
+               pEcorePipeHandleBOF = NULL;
+       }
+
+       pEcorePipeHandleBOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBeginOfPlayCb, (void *)pAppData);
+
+       if(pEcorePipeHandleEOF)
+       {
+               ecore_pipe_del(pEcorePipeHandleEOF);
+               pEcorePipeHandleEOF = NULL;
+       }
+
+       pEcorePipeHandleEOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlEndOfPlayCb, (void *)pAppData);
+
+       if(pEcorePipeHandleForBuffering)
+       {
+               ecore_pipe_del(pEcorePipeHandleForBuffering);
+               pEcorePipeHandleForBuffering = NULL;
+       }
+
+       pEcorePipeHandleForBuffering = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBufferingCb, (void *)pAppData);
+
+       if(pEcorePipeHandleForResumed)
+       {
+               ecore_pipe_del(pEcorePipeHandleForResumed);
+               pEcorePipeHandleForResumed = NULL;
+       }
+
+       pEcorePipeHandleForResumed = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlResumeByRewCb, (void *)pAppData);
+
+       if(pEcorePipeHandleForInterruped)
+       {
+               ecore_pipe_del(pEcorePipeHandleForInterruped);
+               pEcorePipeHandleForInterruped = NULL;
+       }
+
+       pEcorePipeHandleForInterruped = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlPauseByInterrupteCb, (void *)pAppData);
+}
+
+static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       MpVideoViewCtrlShowVolume();
+}
+
+static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       MpVideoViewCtrlHideVolume();
+}
+
+
+/*
+ * External function
+ */
+bool MpVideoAppCtrlInit(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("No exist appdata.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoLogInfo("Get rotation state from appcore. - %d", MpUtilGetRotationStateFromAppcore());
+
+       MpVideoAppCtrlFuncInit(pAppData);
+       MpVideoAppCtrlPipeInit(pAppData);
+       MpVideoViewCtrlInit(pAppData);
+
+       evas_object_show(pAppData->pMainWindow);
+       elm_win_activate(pAppData->pMainWindow);
+
+       if(!MpUtilIsCallOff())
+       {
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb);
+               return FALSE;
+       }
+
+       MpVideoAppCtrlInitCheckCallStatus();
+
+       if(!MpUtilCheckBatteryStatus())
+       {
+               MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpVideoAppCtrlExitCb);
+               return FALSE;
+       }
+
+       MpVideoAppCtrlStart(pAppData);
+
+       return TRUE;
+}
+
+bool MpVideoAppCtrlResetForRelaunching(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoAppCtrlStop(pAppData);
+
+       MpVideoCtrlMgrMediaDestroy(pAppData);
+       MpUtilDeletePopupHandle();
+       MpVideoViewCtrlDestroy((void *)pAppData);
+
+       MpUtilMediaSvcFinishSession();
+       MpUtilBatteryStatusNotiIgnore();
+
+       nBufferingRate = 0;
+       nPlayerErrorType = 0;
+       nPlayerInterruptType = 0;
+
+       pAppData->nDuration = 0;
+       pAppData->nSetPosition = 0;
+       pAppData->nCurPosition = 0;
+       pAppData->nBufferingPosition = 0;
+       pAppData->nVideoWidthResolution = 0;
+       pAppData->nVideoHeightResolution = 0;
+
+       memset(pAppData->szVideoTitle, 0, sizeof(char) * STR_LEN_MAX);
+       memset(pAppData->szMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+       memset(pAppData->szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+       memset(pAppData->szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+
+       pAppData->nPrePlayerState = MP_PLAYER_STATE_CLEAR;
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+       pAppData->nPlayingSpeed = 0;
+
+       memset(pAppData->szProxyAddress, 0, sizeof(char) * STR_LEN_MAX);
+       memset(pAppData->szUserAgent, 0, sizeof(char) * STR_LEN_MAX);
+       memset(pAppData->szCookie, 0, sizeof(char) * STR_LEN_MAX);
+
+       MpUtilResetForRelaunching();
+
+       MpVideoAppCtrlInitCheckCallStatus();
+
+       return TRUE;
+}
+
+bool MpVideoAppCtrlIsTopView(void* pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       return MpVideoViewCtrlIsTopView(pUserData);
+}
+
+bool MpVideoAppCtrlIsExistPlayerHandle(void)
+{
+       VideoLogInfo("");
+
+       return MpVideoCtrlMgrIsExistPlayerHandle();
+}
+
+void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState)
+{
+       VideoLogInfo("");
+
+       bWindowForegroundState = bForwgroundState;
+}
+
+void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       MpVideoViewCtrlSetRotation(nRotateMode, TRUE, pUserData);
+}
+
+bool MpVideoAppCtrlIsCheckCallStatus(void)
+{
+       VideoLogInfo("");
+
+       bool bCheckCallStatus = FALSE;
+
+       if(g_nCurrentInterrupt == MP_PLAYER_INTERRUPTED_BY_CALL)
+       {
+               bCheckCallStatus = TRUE;
+       }
+
+       return bCheckCallStatus;
+
+}
+void MpVideoAppCtrlInitCheckCallStatus(void)
+{
+       VideoLogInfo("");
+
+       g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED;
+}
+
diff --git a/src/mp-video-ctrl-mgr.c b/src/mp-video-ctrl-mgr.c
new file mode 100644 (file)
index 0000000..c8e2099
--- /dev/null
@@ -0,0 +1,572 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <image_util.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-ctrl-mgr.h"
+#include "mp-video-player-mgr.h"
+#include "mp-video-type-define.h"
+#include "mp-video-service-ctrl.h"
+
+bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pOverlayXid, void *pEvasSinkID, char* szSubtitleUri, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrCreate(szMediaURI))
+       {
+               VideoLogInfo("[ERR] Fail to create player handle.");
+               return FALSE;
+       }
+
+       MpUtilGetUserAgent(pAppData);
+
+       if(!MpPlayerMgrSetUseragentForStreaming(pAppData->szUserAgent))
+       {
+               VideoLogInfo("[ERR] Fail to set useragent.");
+               return FALSE;
+       }
+
+       if(!MpPlayerMgrSetProxyAddressForStreaming(pAppData->szProxyAddress))
+       {
+               VideoLogInfo("[ERR] Fail to set proxy address.");
+               return FALSE;
+       }
+
+       if(!MpPlayerMgrSetCookieForStreaming(pAppData->szCookie))
+       {
+               VideoLogInfo("[ERR] Fail to set Cookie.");
+               return FALSE;
+       }
+
+       if(szSubtitleUri && strlen((char*)szSubtitleUri) > 0)
+       {
+               VideoLogInfo("Subtitle URI : %s", szSubtitleUri);
+
+               if(!MpPlayerMgrSetSubtitle(szSubtitleUri))
+               {
+                       VideoLogInfo("Fail to set subtitle uri.");
+               }
+       }
+       else
+       {
+               VideoLogInfo("No exist subtitle uri.");
+       }
+
+       if(!MpPlayerMgrSetOverlayXid(pOverlayXid))
+       {
+               VideoLogInfo("[ERR] Fail to set overlay window.");
+               return FALSE;
+       }
+
+       if(!MpVideoCtrlMgrSetScaling(FALSE))
+       {
+               VideoLogInfo("[ERR] Fail to set scaling.");
+               return FALSE;
+       }
+
+       if(!MpPlayerMgrSetSoundPriority())
+       {
+               VideoLogInfo("[ERR] Fail to set sound priority.");
+               return FALSE;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+
+       return TRUE;
+}
+
+bool MpVideoCtrlMgrMediaRealize(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrRealize())
+       {
+               VideoLogInfo("[ERR] Fail relization.");
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrRealizeAsync(pReailzeCb, pUserData))
+       {
+               VideoLogInfo("[ERR] Fail relization.");
+               return FALSE;
+       }
+       return TRUE;
+}
+
+void MpVideoCtrlMgrMediaDestroy(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo(" Already destroy player handle.");
+               return;
+       }
+
+       if (!MpPlayerMgrUnrealize()) {
+               VideoLogInfo("[ERR] Fail to unrealize player handle.");
+               return;
+       }
+
+       if (!MpPlayerMgrDestroy()) {
+               VideoLogInfo("[ERR] Fail to destroy player handle.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+}
+
+bool MpVideoCtrlMgrMediaPlay(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrPlay()) {
+               VideoLogInfo("[ERR] Fail to play multimedia player.");
+               return FALSE;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
+
+       return TRUE;
+}
+
+void MpVideoCtrlMgrMediaStop(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR] Player handle is destroyed.");
+               return;
+       }
+
+       if (!MpPlayerMgrStop()) {
+               VideoLogInfo("[ERR] Fail to stop multimedia player.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
+}
+
+void MpVideoCtrlMgrMediaPause(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
+               VideoLogInfo
+                   ("It is not possible to pause when player state is stop.");
+               return;
+       }
+
+       if (!MpPlayerMgrPause()) {
+               VideoLogInfo("[ERR] Fail to pause multimedia player.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
+}
+
+void MpVideoCtrlMgrMediaResume(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
+               VideoLogInfo
+                   ("It is not possible to resume when player state is stop.");
+               return;
+       }
+
+       if (!MpPlayerMgrResume()) {
+               VideoLogInfo("[ERR] Fail to resume multimedia player.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
+}
+
+void MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *PlayerSubtitleCb, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       if(!PlayerCompletedCb || !PlayerInterruptedCb || !PlayerErrorCb || !PlayerBufferingCb)
+       {
+               VideoLogInfo("[ERR] No exist player callback function pointer.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpPlayerMgrRegistePlayerCallback(PlayerCompletedCb, PlayerInterruptedCb, PlayerErrorCb, PlayerBufferingCb, PlayerSubtitleCb, pUserData);
+}
+
+void MpVideoCtrlMgrSetOverlayXid(void *pXid)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrSetOverlayXid(pXid)) {
+               VideoLogInfo("[ERR] Fail to set overlay window.");
+               return;
+       }
+}
+void MpVideoCtrlMgrSetEvasSinkID(void *pEvasSinkID)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrSetEvasSinkID(pEvasSinkID)) {
+               VideoLogInfo("[ERR] Fail to set overlay window.");
+               return;
+       }
+}
+
+void MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData)
+{
+       VideoLogInfo("");
+
+       VideoLogInfo("Set position - %d", nSetPosition);
+
+       if (nSetPosition > -1) {
+               MpPlayerMgrSetPosition(nSetPosition, pSeekCb, pUserData);
+       }
+}
+void MpVideoCtrlMgrSetSubtitlePosition(int nSetPosition)
+{
+       VideoLogInfo("");
+
+       if (nSetPosition > -1) {
+               MpPlayerMgrSetSubtitlePosition(nSetPosition);
+       }
+}
+
+int MpVideoCtrlMgrGetPosition(void)
+{
+       /* VideoLogInfo(""); */
+
+       return MpPlayerMgrGetPosition();
+}
+
+int MpVideoCtrlMgrGetDuration(void)
+{
+       VideoLogInfo("");
+
+       int nDuration = 0;
+
+       nDuration = MpPlayerMgrGetDuration();
+
+       VideoLogInfo(" content duration : %d ms", nDuration);
+
+       return nDuration;
+}
+
+void MpVideoCtrlMgrResetPlaySpeed(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrSetPlaySpeed(1.0)) {
+               VideoLogInfo("[ERR] Fail to reset play speed.");
+               return;
+       }
+
+       pAppData->nPlayingSpeed = MP_PLAYING_SPEED_NORMAL;
+}
+
+void MpVideoCtrlMgrSetPlaySpeedUp(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) {
+               VideoLogInfo("Current speed is full.(5X)");
+               pAppData->nPlayingSpeed = MP_PLAYING_SPEED_5X;
+       }
+
+
+       float val = 0;
+       val = (float)pAppData->nPlayingSpeed;
+
+       MpPlayerMgrSetPlaySpeed(val);
+
+}
+
+void MpVideoCtrlMgrSetPlaySpeedDown(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) {
+               VideoLogInfo("Current speed is full.(5X)");
+               return;
+       }
+
+       float val = 0;
+       val = -(float)pAppData->nPlayingSpeed;
+       MpPlayerMgrSetPlaySpeed(val);
+
+}
+
+int MpVideoCtrlMgrGetVideoWidthResolution(void)
+{
+       VideoLogInfo("");
+
+       int nVideoWidthResolution = MpPlayerMgrGetVideoWidthResolution();
+
+       VideoLogInfo("Video width resolution : %d", nVideoWidthResolution);
+
+       return nVideoWidthResolution;
+}
+
+int MpVideoCtrlMgrGetVideoHeightResolution(void)
+{
+       VideoLogInfo("");
+
+       int nVideoHeightResolution = MpPlayerMgrGetVideoHeightResolution();
+
+       VideoLogInfo("Video height resolution : %d", nVideoHeightResolution);
+
+       return nVideoHeightResolution;
+}
+
+void MpVideoCtrlMgrSetRatioVideoScreen(void *pUserData, int nRatioScreenSize)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nDisplayMode = PLAYER_DISPLAY_MODE_LETTER_BOX;
+
+       MpPlayerMgrSetDisplayMode(nDisplayMode);
+}
+
+void MpVideoCtrlMgrRotateVideoScreen(int nVideoRotateValue)
+{
+       VideoLogInfo("");
+
+       switch (nVideoRotateValue) {
+       case VIDEO_ROTATE_PORTRAIT_NORMAL:
+               VideoLogInfo("Set Portrait.");
+               MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT);
+               break;
+
+       case VIDEO_ROTATE_LANDSCAPE_NORMAL:
+               VideoLogInfo("Set Landscape.");
+               MpPlayerMgrSetRotate(VIDEO_SCREEN_LANDSCAPE);
+               break;
+
+       case VIDEO_ROTATE_PORTRAIT_REVERSE:
+               VideoLogInfo("Set Portrait reverse.");
+               MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN);
+               break;
+
+       case VIDEO_ROTATE_LANDSCAPE_REVERSE:
+               VideoLogInfo("Set Landscape reverse.");
+               MpPlayerMgrSetRotate(VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN);
+               break;
+
+       default:
+               VideoLogInfo("Set Portrait.");
+               MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT);
+               break;
+       }
+}
+
+void MpVideoCtrlMgrSetMute(bool bMuteEnable)
+{
+       VideoLogInfo("");
+
+       MpPlayerMgrSetMute(bMuteEnable);
+}
+
+bool MpVideoCtrlMgrGetMuteState(void)
+{
+       VideoLogInfo("");
+
+       return MpPlayerMgrGetMute();
+}
+
+bool MpVideoCtrlMgrStartCapture(void *pVideoCaptureCb, void *pUserData)
+{
+       VideoLogInfo("");
+
+       return MpPlayerMgrCaptureVideo(pVideoCaptureCb, pUserData);
+}
+
+int MpVideoCtrlMgrGetBufferingPosition(void)
+{
+       return MpPlayerMgrGetBufferingPosition();
+}
+
+bool MpVideoCtrlMgrIsExistPlayerHandle(void)
+{
+       VideoLogInfo("");
+
+       return MpPlayerMgrIsActive();
+}
+
+bool MpVideoCtrlMgrIsOnlyAudio(void)
+{
+       VideoLogInfo("");
+
+       int nStreamFileType = MpPlayerMgrGetFileStreamType();
+
+       if(nStreamFileType == MP_FILE_STREAM_TYPE_AUDIO)
+       {
+               VideoLogInfo("A file stream type is only audio.");
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+bool MpVideoCtrlMgrSetScaling(bool bScale)
+{
+       VideoLogInfo("");
+
+       return MpPlayerMgrSetScaling(bScale);
+
+}
+
+int MpVideoCtrlMgrGetErrorType(int nErrorVal)
+{
+       VideoLogInfo("");
+
+       switch(nErrorVal)
+       {
+       case PLAYER_ERROR_NONE:
+               return MP_PLAYER_ERROR_NONE;
+
+       case PLAYER_ERROR_OUT_OF_MEMORY:
+               return MP_PLAYER_ERROR_OUT_OF_MEMORY;
+
+       case PLAYER_ERROR_INVALID_PARAMETER:
+               return MP_PLAYER_ERROR_INVALID_PARAMETER;
+
+       case PLAYER_ERROR_NO_SUCH_FILE:
+               return MP_PLAYER_ERROR_NO_SUCH_FILE;
+
+       case PLAYER_ERROR_INVALID_OPERATION:
+               return MP_PLAYER_ERROR_INVALID_OPERATION;
+
+       case PLAYER_ERROR_SEEK_FAILED:
+               return MP_PLAYER_ERROR_SEEK_FAILED;
+
+       case PLAYER_ERROR_INVALID_STATE:
+               return MP_PLAYER_ERROR_INVALID_STATE;
+
+       case PLAYER_ERROR_NOT_SUPPORTED_FILE:
+               return MP_PLAYER_ERROR_NOT_SUPPORTED_FILE;
+
+       case PLAYER_ERROR_INVALID_URI:
+               return MP_PLAYER_ERROR_INVALID_URI;
+
+       case PLAYER_ERROR_SOUND_POLICY:
+               return MP_PLAYER_ERROR_SOUND_POLICY;
+
+       case PLAYER_ERROR_CONNECTION_FAILED:
+               return MP_PLAYER_ERROR_CONNECTION_FAILED;
+
+       case PLAYER_ERROR_VIDEO_CAPTURE_FAILED:
+               return MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED;
+
+       default:
+               return MP_PLAYER_ERROR_UNKNOWN_ERROR;
+       }
+}
+
+int MpVideoCtrlMgrGetClosedCaptionCount(void)
+{
+       VideoLogInfo("");
+
+       return MpPlayerMgrGetClosedCaptionCount();
+
+}
\ No newline at end of file
diff --git a/src/mp-video-display-view.c b/src/mp-video-display-view.c
new file mode 100755 (executable)
index 0000000..1607e4c
--- /dev/null
@@ -0,0 +1,1314 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <aul.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <syspopup_caller.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-display-view.h"
+#include "mp-video-progressbar.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+#include "mp-video-sound-path-ctrl.h"
+
+#include "mp-external-ug.h"
+#include "mp-video-service-ctrl.h"
+
+#define CTRL_PANEL_SHOW_TIME                                   5.0
+#define MAX_SPEED_STEP                                                 4
+#define REWIND_SPACE_TIME                                              3000
+
+static Evas_Object *pNaviFrameHandle = NULL;
+static Evas_Object *pDisplayViewLayout = NULL;
+static Evas_Object *pDisplayViewPanelEdj = NULL;
+static Evas_Object *pDisplayViewCtrlEdj = NULL;
+static Evas_Object *pDisplayViewOptionEdj = NULL;
+static Evas_Object *pDisplayViewProgressbarEdj = NULL;
+static Evas_Object *pDisplaySoundpathButton = NULL;
+
+static Evas_Object *pDisplayViewSpeedboxEdj = NULL;
+
+static Ecore_Timer *pCtrlPanelHideTimer = NULL;
+static Ecore_Timer *pSpeedPressTimer = NULL;
+static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL;
+static ChangeDisplayViewCbFunc pChangeViewUserCbFunc = NULL;
+
+static bool bSwitchDisplayViewUI = TRUE;
+static bool bIsSpeedLongPress = FALSE;
+static bool bIsDisplayViewOnlyAudio = FALSE;
+static int nSpeedMode = 0;     /*  (-1:REW, 1: FF) */
+static int nControlMouseDownPos = 0;
+static int nControlMouseMovePos = 0;
+static bool bIsPauseByUser = FALSE;
+static bool bIsBeginOfStream = FALSE;
+static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+
+
+static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpUtilDeletePopupHandle();
+}
+
+
+static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+               VideoLogInfo("Connect BT or earjack.");
+               MpVideoSoundpathShow(pUserData);
+       } else {
+               MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb);
+       }
+}
+
+
+static void MpVideoDisplayViewPressOptionShareCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(!bIsBeginOfStream)
+       {
+               VideoLogInfo("Skip for BOF");
+               return;
+       }
+
+       if(pCtrlPanelHideTimer)
+       {
+               ecore_timer_del(pCtrlPanelHideTimer);
+               pCtrlPanelHideTimer = NULL;
+       }
+
+       MpExternalUgShow((void *)pAppData, pNaviFrameHandle);
+}
+
+static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(!bIsBeginOfStream)
+       {
+               VideoLogInfo("Skip for BOF");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS))
+       {
+               VideoLogInfo("Press Pause button.");
+
+               if(pAppData->bSeekComplete == FALSE)
+               {
+                       bIsPauseByUser = TRUE;
+                       pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE;
+                       return;
+               }
+
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY)
+               {
+                       bIsPauseByUser = TRUE;
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               }
+       }
+}
+
+static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(!bIsBeginOfStream)
+       {
+               VideoLogInfo("Skip for BOF");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
+               VideoLogInfo("Press Resume/Play button.");
+
+               if(pAppData->bSeekComplete == FALSE)
+               {
+                       bIsPauseByUser = FALSE;
+                       pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
+                       return;
+               }
+
+               if (pAppData->nCurPlayerState != MP_PLAYER_STATE_RESUME && pAppData->nCurPlayerState != MP_PLAYER_STATE_PLAY)
+               {
+                       bIsPauseByUser = FALSE;
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       }
+}
+
+static Eina_Bool MpVideoDisplayViewSpeedLongPressTimerCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pSpeedPressTimer) {
+               ecore_timer_del(pSpeedPressTimer);
+               pSpeedPressTimer = NULL;
+       }
+
+       bIsSpeedLongPress = TRUE;
+       pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
+
+       char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
+
+       if(nSpeedMode == 1)
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
+               snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
+
+               edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_FF, pDisplayViewSpeedboxEdj);
+               evas_object_show(pDisplayViewSpeedboxEdj);
+       }
+       else if(nSpeedMode == -1)
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
+               snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
+               edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_REW, pDisplayViewSpeedboxEdj);
+               evas_object_show(pDisplayViewSpeedboxEdj);
+       }
+
+       edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SHOW, "*");
+       edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
+
+       edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
+       edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_SHOW, "*");
+
+       return EINA_FALSE;
+}
+
+
+static void MpVideoDisplayViewFFDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN)) {
+               VideoLogInfo("Press FF down button.");
+               if (pCtrlPanelHideTimer) {
+                       ecore_timer_del(pCtrlPanelHideTimer);
+                       pCtrlPanelHideTimer = NULL;
+               }
+
+               if (pSpeedPressTimer) {
+                       ecore_timer_del(pSpeedPressTimer);
+                       pSpeedPressTimer = NULL;
+               }
+
+               nSpeedMode = 1;
+               pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
+       }
+}
+
+static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(!bIsBeginOfStream)
+       {
+               VideoLogInfo("Skip for BOF");
+               return;
+       }
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) {
+               VideoLogInfo("Press FF up button.");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+
+               if (pSpeedPressTimer) {
+                       ecore_timer_del(pSpeedPressTimer);
+                       pSpeedPressTimer = NULL;
+                       bIsPauseByUser = FALSE;
+               }
+               else
+               {
+                       edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
+                       edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
+
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
+               }
+               edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
+               edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
+               evas_object_hide(pDisplayViewSpeedboxEdj);
+
+
+               bIsSpeedLongPress = FALSE;
+       }
+}
+
+static void MpVideoDisplayViewFFClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(!bIsBeginOfStream)
+       {
+               VideoLogInfo("Skip for BOF");
+               return;
+       }
+
+       if(!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED))
+       {
+               VideoLogInfo("Press FF clicked button.");
+
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+
+               bIsPauseByUser = FALSE;
+       }
+}
+
+static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(!bIsBeginOfStream)
+       {
+               VideoLogInfo("Skip for BOF");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) {
+               VideoLogInfo("Press Rewind donw button.");
+
+               if (pCtrlPanelHideTimer) {
+                       ecore_timer_del(pCtrlPanelHideTimer);
+                       pCtrlPanelHideTimer = NULL;
+               }
+
+               if (pSpeedPressTimer) {
+                       ecore_timer_del(pSpeedPressTimer);
+                       pSpeedPressTimer = NULL;
+               }
+
+               nSpeedMode = -1;
+               pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
+       }
+}
+
+static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(!bIsBeginOfStream)
+       {
+               VideoLogInfo("Skip for BOF");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) {
+               VideoLogInfo("Press Rewind up button.");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+
+               if (pSpeedPressTimer) {
+                       ecore_timer_del(pSpeedPressTimer);
+                       pSpeedPressTimer = NULL;
+                       bIsPauseByUser = FALSE;
+               }
+               else
+               {
+                       edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
+                       edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
+
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
+               }
+
+               edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
+               evas_object_hide(pDisplayViewSpeedboxEdj);
+               edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
+
+
+               bIsSpeedLongPress = FALSE;
+       }
+}
+
+static void MpVideoDisplayViewRewClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(!bIsBeginOfStream)
+       {
+               VideoLogInfo("Skip for BOF");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED)) {
+               VideoLogInfo("Press Rewind clicked button.");
+
+               if(pAppData->nCurPosition > REWIND_SPACE_TIME)
+               {
+                       pAppData->nSetPosition = 0;
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+               }
+               else
+               {
+                       bIsPauseByUser = FALSE;
+               }
+       }
+}
+
+static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb);
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(pAppData->nCurPosition >= 0)
+       {
+               MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, pAppData->nCurPosition);
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
+
+       MpVideoDisplayViewPop(pNaviFrameHandle, pUserData);
+
+       edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
+}
+
+
+static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+}
+
+static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData,
+                                              Evas_Object *pObject,
+                                              const char *szEmission,
+                                              const char *szSource)
+{
+       VideoLogInfo("");
+       if (!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData);
+}
+
+static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No Exist pUserData.");
+               return EINA_FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pCtrlPanelHideTimer) {
+               ecore_timer_del(pCtrlPanelHideTimer);
+               pCtrlPanelHideTimer = NULL;
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+
+       return EINA_FALSE;
+}
+
+
+static void MpVideoDisplayViewSpeedChange(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No Exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int booster_step = 0;
+
+       if (nSpeedMode == 1) {
+               booster_step = nControlMouseDownPos - nControlMouseMovePos;
+               booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get());
+       } else if (nSpeedMode == -1) {
+               booster_step = nControlMouseDownPos - nControlMouseMovePos;
+               booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get());
+       } else {
+               VideoLogInfo("[ERR] Invalid SpeedMode.");
+               return;
+       }
+
+
+       if(booster_step == 0)
+       {
+               pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
+               edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
+       }
+       else if(booster_step == 1)
+       {
+               pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X;
+               edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_2, "*");
+       }
+       else if(booster_step > 2)
+       {
+               pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
+               edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_3, "*");
+       }
+
+       VideoLogInfo("STEP:(%d, %d)", booster_step, pAppData->nPlayingSpeed);
+
+       char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+
+       if(nSpeedMode == 1)
+       {
+               snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
+       }
+       else
+       {
+               snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
+       }
+
+       edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
+
+       return;
+}
+
+static void MpVideoDisplayViewControlMouseMoveCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
+{
+       if (!event) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No Exist pUserData.");
+               return;
+       }
+
+       Evas_Event_Mouse_Move *pBtnEvent = (Evas_Event_Mouse_Move *) event;
+
+       if (bIsSpeedLongPress) {
+               nControlMouseMovePos = pBtnEvent->cur.output.y;
+               MpVideoDisplayViewSpeedChange(pUserData);
+       }
+}
+
+static void MpVideoDisplayViewControlMouseDownCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
+{
+       VideoLogInfo("");
+
+       if (!event) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       Evas_Event_Mouse_Down *pBtnEvent = (Evas_Event_Mouse_Down *) event;
+
+       nControlMouseDownPos = pBtnEvent->output.y;
+}
+
+static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoSoundpathHide();
+       MpUtilDeletePopupHandle();
+
+       if (MpUtilIsConnectEarjack() || MpVideoSoundpathIsConnectOtherSoundpath()) {
+               VideoLogInfo("Connect earjack.");
+               if (pDisplaySoundpathButton) {
+                       elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
+               } else {
+                       pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
+                       elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
+               }
+       } else {
+               VideoLogInfo("Disconnect earjack.");
+
+               if (pDisplaySoundpathButton) {
+                       evas_object_del(pDisplaySoundpathButton);
+                       pDisplaySoundpathButton = NULL;
+               }
+
+               elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_right_btn");
+       }
+}
+
+static void MpVideoDisplayViewChangedCameraStatusCb(void *pNode, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(!MpUtilIsCameraOff())
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+}
+static void MpVideoDisplayViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogError("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
+
+       evas_object_hide(pDisplayViewLayout);
+}
+
+static void MpVideoDisplayViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogError("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData);
+}
+
+void MpVideoDisplayViewInitLayout(void *pUserData, int nPlayerType)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pDisplayViewLayout = elm_layout_add(pNaviFrameHandle);
+       if (pDisplayViewLayout) {
+               Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+               elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
+
+               pDisplayViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
+               elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pDisplayViewOptionEdj);
+
+               edje_object_signal_emit(pDisplayViewOptionEdj, SIGNAL_OPTION_MODE_LOCAL, "*");
+
+               pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
+
+               evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_DOWN, (void *)MpVideoDisplayViewControlMouseDownCb, pAppData);
+               evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_MOVE, (void *)MpVideoDisplayViewControlMouseMoveCb, pAppData);
+
+               if(nPlayerType == MP_VIDEO_PLAYER_GALLERY)
+               {
+                       int width = 0;
+                       int height = 0;
+
+                       int item_width = 120;
+                       int item_height = 90;
+
+                       ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
+                       if(width > 0) {
+                               item_width = 170 * width/DEFAULT_SCALE_WIDTH;
+                       }
+
+                       if(height > 0) {
+                               item_height = 145 * height/DEFAULT_SCALE_HEIGHT;
+                       }
+               }
+
+               pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
+
+               edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj);
+
+               pDisplayViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
+               if (pDisplayViewProgressbarEdj) {
+                       edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pDisplayViewProgressbarEdj);
+               } else {
+                       VideoLogInfo("Progressbar edj handle is null.");
+               }
+
+               elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj);
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*");
+
+               edje_object_signal_callback_add(pDisplayViewOptionEdj,
+                                       SIGNAL_OPTION_SHARE_DOWN,
+                                       PART_OPTION_SHARE,
+                                       (void *)MpVideoDisplayViewPressOptionShareCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
+                                               SIGNAL_CONTROL_PART_PLAY_BUTTON,
+                                               (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_PLAY_RESUME_PRESS,
+                                               SIGNAL_CONTROL_PART_PLAY_BUTTON,
+                                               (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN,
+                                               SIGNAL_CONTROL_PART_FF_BUTTON,
+                                               (void *)MpVideoDisplayViewFFDownButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP,
+                                               SIGNAL_CONTROL_PART_FF_BUTTON,
+                                               (void *)MpVideoDisplayViewFFUpButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED,
+                                               SIGNAL_CONTROL_PART_FF_BUTTON,
+                                               (void *)MpVideoDisplayViewFFClickedButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN,
+                                               SIGNAL_CONTROL_PART_REW_BUTTON,
+                                               (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP,
+                                               SIGNAL_CONTROL_PART_REW_BUTTON,
+                                               (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED,
+                                               SIGNAL_CONTROL_PART_REW_BUTTON,
+                                               (void *)MpVideoDisplayViewRewClickedButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_BACK_BUTTON_DOWN,
+                                               SIGNAL_CONTROL_PART_BACK_BUTTON,
+                                               (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_VOL_BUTTON_DOWN,
+                                               SIGNAL_CONTROL_PART_VOL_BUTTON,
+                                               (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_VOL_BUTTON_UP,
+                                               SIGNAL_CONTROL_PART_VOL_BUTTON,
+                                               (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_MUTE_BUTTON_DOWN,
+                                               SIGNAL_CONTROL_PART_MUTE_BUTTON,
+                                               (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_MUTE_BUTTON_UP,
+                                               SIGNAL_CONTROL_PART_MUTE_BUTTON,
+                                               (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
+
+               pDisplayViewSpeedboxEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ, SPEEDBOX_EDJ_GROUP);
+               evas_object_hide(pDisplayViewSpeedboxEdj);
+
+               MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
+               MpUtilRegisteCameraStatusCbFunc((void *)MpVideoDisplayViewChangedCameraStatusCb, pUserData);
+       }
+}
+
+void MpVideoDisplayViewInit(void *pUserData, int nPlayerType)
+{
+       VideoLogInfo("");
+
+       if (!pNaviFrameHandle|| !pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+       bIsPauseByUser = FALSE;
+
+       MpVideoDisplayViewInitLayout(pUserData, nPlayerType);
+}
+
+
+/*
+ * External function
+ */
+void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb)
+{
+       if (!pNaviFrame || !pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pNaviFrameHandle = pNaviFrame;
+       pChangeViewUserCbFunc = pChangeViewCb;
+
+       MpVideoDisplayViewInit(pUserData, nPlayerType);
+       pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line");
+
+       elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoDisplayViewShowLayoutFinish, pUserData);
+       elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoDisplayViewHideLayoutFinish, pUserData);
+
+       if(MpVideoSoundpathIsConnectOtherSoundpath())
+       {
+               pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
+               elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
+       }
+
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+}
+
+void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData);
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+}
+
+void MpVideoDisplayViewDestroy(void *pUserData)
+{
+       VideoLogInfo("");
+
+       MpVideoDisplayViewHideControlPanel(pUserData);
+       MpVideoProgressbarDestroy();
+
+       pNaviFrameHandle = NULL;
+       pDisplayViewProgressbarEdj = NULL;
+
+       if (pDisplayViewPanelEdj) {
+               evas_object_del(pDisplayViewPanelEdj);
+               pDisplayViewPanelEdj = NULL;
+       }
+
+       if (pDisplayViewCtrlEdj) {
+               evas_object_del(pDisplayViewCtrlEdj);
+               pDisplayViewCtrlEdj = NULL;
+       }
+
+       if (pDisplayViewOptionEdj) {
+               evas_object_del(pDisplayViewOptionEdj);
+               pDisplayViewOptionEdj = NULL;
+       }
+
+       if (pSpeedPressTimer) {
+               ecore_timer_del(pSpeedPressTimer);
+               pSpeedPressTimer = NULL;
+       }
+
+       if (pCtrlPanelHideTimer) {
+               ecore_timer_del(pCtrlPanelHideTimer);
+               pCtrlPanelHideTimer = NULL;
+       }
+
+       if (pDisplayViewLayout) {
+               evas_object_del(pDisplayViewLayout);
+               pDisplayViewLayout = NULL;
+       }
+
+       if (pDisplaySoundpathButton) {
+               evas_object_del(pDisplaySoundpathButton);
+               pDisplaySoundpathButton = NULL;
+       }
+
+       if (pDisplayViewSpeedboxEdj) {
+               evas_object_del(pDisplayViewSpeedboxEdj);
+               pDisplayViewSpeedboxEdj = NULL;
+       }
+
+       bSwitchDisplayViewUI = TRUE;
+       nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+       bIsDisplayViewOnlyAudio = FALSE;
+       bIsPauseByUser = FALSE;
+}
+
+void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       bIsBeginOfStream = TRUE;
+
+       pAppData->bSeekComplete = TRUE;
+
+       MpVideoProgressbarBeginOfStream((void *)pAppData);
+
+       if (pAppData->nDuration > 1) {
+               char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
+
+               snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000));
+
+               MpVideoProgressbarUpdateDurationTime(szDurationTime);
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+
+       if(MpVideoDisplayViewIsPauseByUser() == FALSE)
+       {
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+       }
+}
+
+void MpVideoDisplayViewUpdatePauseKey(void)
+{
+       VideoLogInfo("");
+
+       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
+}
+
+void MpVideoDisplayViewUpdateResumeKey(void)
+{
+       VideoLogInfo("");
+
+       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+}
+
+
+
+
+void MpVideoDisplayViewShowControlPanel(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!pDisplayViewPanelEdj) {
+               VideoLogInfo("No exist play control panel edc.");
+               return;
+       }
+
+       if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
+               VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(bIsBeginOfStream)
+       {
+               MpVideoProgressbarCreateTimer((void *)pAppData);
+       }
+
+       bSwitchDisplayViewUI = TRUE;
+       evas_object_show(pDisplayViewLayout);
+
+       elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm");
+       int nRotate = MpUtilGetRotationState();
+       if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
+       {
+               elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*");
+       }
+       else
+       {
+               elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*");
+       }
+
+       if (pCtrlPanelHideTimer) {
+               ecore_timer_del(pCtrlPanelHideTimer);
+               pCtrlPanelHideTimer = NULL;
+       }
+
+       VideoLogInfo("");
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsDisplayViewOnlyAudio == TRUE) {
+               VideoLogInfo("");
+       } else {
+               VideoLogInfo("");
+               pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
+       }
+
+       MpVideoDisplayViewActivate();
+}
+
+void MpVideoDisplayViewHideControlPanel(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
+               VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
+               return;
+       }
+
+       if (!pDisplayViewPanelEdj) {
+               VideoLogInfo("No exist play control panel edc.");
+               return;
+       }
+
+       if(bIsDisplayViewOnlyAudio)
+       {
+               VideoLogInfo("Not hide control panel and UI because of audio only.");
+               return;
+       }
+
+       bSwitchDisplayViewUI = FALSE;
+
+       MpVideoProgressbarDeleteTimer();
+       MpExternalUgHide();
+
+       if (pCtrlPanelHideTimer) {
+               ecore_timer_del(pCtrlPanelHideTimer);
+               pCtrlPanelHideTimer = NULL;
+       }
+
+       elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
+       elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*");
+}
+
+void MpVideoDisplayViewActivate(void)
+{
+       VideoLogInfo("");
+
+       nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
+}
+
+void MpVideoDisplayViewUnactivate(void)
+{
+       VideoLogInfo("");
+
+       nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+}
+
+void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
+
+       bIsBeginOfStream = FALSE;
+       MpVideoProgressbarDeleteTimer();
+
+       if (pSpeedPressTimer) {
+               ecore_timer_del(pSpeedPressTimer);
+               pSpeedPressTimer = NULL;
+       }
+
+       edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
+       edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
+
+       if (pNaviFrameItemForDisplayerView != NULL) {
+               VideoLogInfo("%s", pAppData->szVideoTitle);
+               elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle);
+       }
+}
+
+bool MpVideoDisplayViewIsTopView(void)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pTmpContents = NULL;
+       Elm_Object_Item *pTmpItem = NULL;
+
+       if (!pNaviFrameHandle) {
+               VideoLogInfo("[ERR] No exist navigationbar handle.");
+               return FALSE;
+       }
+
+       pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
+       pTmpContents = elm_object_item_content_get(pTmpItem);
+       if (pTmpContents) {
+               if (pTmpContents == pDisplayViewLayout) {
+                       VideoLogInfo("Video display view is staing in top view.");
+                       return TRUE;
+               } else {
+                       VideoLogInfo("Video display view is not staied in top view.");
+                       return FALSE;
+               }
+       } else {
+               VideoLogInfo("[ERR] No exist navigationbar top item.");
+               return FALSE;
+       }
+
+       return FALSE;
+}
+
+void MpVideoDisplayViewShowNocontentImage(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (pDisplayViewLayout) {
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
+       }
+
+       bIsDisplayViewOnlyAudio = TRUE;
+
+       MpVideoDisplayViewShowControlPanel(pUserData);
+}
+
+void MpVideoDisplayViewHideNocontentImage(void)
+{
+       VideoLogInfo("");
+
+       if (pDisplayViewLayout) {
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
+       }
+
+       bIsDisplayViewOnlyAudio = FALSE;
+}
+
+void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogError("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(bIsSpeedLongPress)
+       {
+               edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
+
+               edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
+               edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
+
+               evas_object_hide(pDisplayViewSpeedboxEdj);
+               bIsSpeedLongPress = FALSE;
+
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
+       }
+
+       elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
+       edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
+       edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
+       edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
+       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PORTRATE_MODE, "*");
+       if(bLayoutHide)
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
+       }
+}
+
+void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogError("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(bIsSpeedLongPress)
+       {
+               edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
+
+               edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
+               edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
+
+               evas_object_hide(pDisplayViewSpeedboxEdj);
+               bIsSpeedLongPress = FALSE;
+
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
+       }
+
+       elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
+
+       edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
+       edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
+       edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
+       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_LANDSCAPE_MODE, "*");
+
+       if(bLayoutHide)
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
+       }
+
+}
+
+void MpVideoDisplayViewResetProgressBar(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (pDisplayViewLayout) {
+               MpVideoProgressbarReset(pUserData);
+       }
+}
+
+bool MpVideoDisplayViewIsPauseByUser(void)
+{
+       VideoLogInfo("%d", bIsPauseByUser);
+
+       return bIsPauseByUser;
+}
+
+void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser)
+{
+       VideoLogInfo("");
+
+       bIsPauseByUser = bPauseByUser;
+}
+
+
+void MpVideoDisplayViewUpdateProgressBar(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(bIsBeginOfStream)
+       {
+               MpVideoProgressbarCreateTimer(pUserData);
+       }
+
+}
diff --git a/src/mp-video-player-mgr.c b/src/mp-video-player-mgr.c
new file mode 100644 (file)
index 0000000..12f85f4
--- /dev/null
@@ -0,0 +1,856 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+
+#include "mp-video-log.h"
+#include "mp-video-player-mgr.h"
+
+#define MAX_PATH_LEN 2048
+
+
+static player_h pPlayerHandle;
+
+
+bool MpPlayerMgrIsActive(void)
+{
+       return pPlayerHandle ? true : false;
+}
+
+bool MpPlayerMgrRegistePlayerCallback(void *PlayerCompletedCbFunc, void *PlayerInterruptedCbFunc, void *PlayerErrorCbFunc, void *PlayerBufferingCbFunc, void *PlayerSubtitleCbFunc, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if(player_set_completed_cb(pPlayerHandle, PlayerCompletedCbFunc, pUserData) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if(player_set_interrupted_cb(pPlayerHandle, PlayerInterruptedCbFunc, pUserData) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if(player_set_error_cb(pPlayerHandle, PlayerErrorCbFunc, pUserData) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if(player_set_buffering_cb(pPlayerHandle, PlayerBufferingCbFunc, pUserData) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if(player_set_subtitle_updated_cb(pPlayerHandle, PlayerSubtitleCbFunc, pUserData) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+}
+
+       return true;
+}
+
+bool MpPlayerMgrCreate(const char *szPath)
+{
+       VideoLogInfo("");
+
+       if(!szPath)
+       {
+               VideoLogInfo("[ERR] Not correct Meida URI.");
+               return false;
+       }
+
+       int nPathLength = strlen(szPath);
+       int nErr = PLAYER_ERROR_NONE;
+
+       VideoLogInfo(" Media path (%s)", szPath);
+
+       if(nPathLength > 0 && nPathLength < MAX_PATH_LEN)
+       {
+               nErr = player_create(&pPlayerHandle);
+               if(nErr != PLAYER_ERROR_NONE)
+               {
+                       VideoLogInfo("[ERR] Fail to create player handle. (MMF Error code : %x)", nErr);
+                       return false;
+               }
+
+               nErr = player_set_uri(pPlayerHandle, szPath);
+               if(nErr != PLAYER_ERROR_NONE)
+               {
+                       VideoLogInfo("[ERR] (%x) Fail to set attribute ", nErr);
+                       return false;
+               }
+       }
+       else
+       {
+               VideoLogInfo("[ERR] File path is too long.");
+               return false;
+       }
+
+       nErr = player_set_sound_type(pPlayerHandle, SOUND_TYPE_MEDIA);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] (%x):: Fail to set attribute ", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrDestroy(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_destroy(pPlayerHandle);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+       pPlayerHandle = NULL;
+
+       return true;
+}
+
+bool MpPlayerMgrRealize(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_prepare(pPlayerHandle);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrRealizeAsync(void *pPrepareCb, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_prepare_async(pPlayerHandle, pPrepareCb, pUserData);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrUnrealize(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_unprepare (pPlayerHandle);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrPlay(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_start(pPlayerHandle);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrStop(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_stop (pPlayerHandle);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrResume(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_start(pPlayerHandle);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrPause(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_pause(pPlayerHandle);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+int MpPlayerMgrGetPosition(void)
+{
+       if(!MpPlayerMgrIsActive())
+       {
+               return 0;
+       }
+
+       int nPos = 0;
+       int nErr = 0;
+
+       nErr = player_get_position(pPlayerHandle, &nPos);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
+               return 0;
+       }
+
+       return nPos;
+}
+
+void MpPlayerMgrSetPosition(unsigned int nPos, void *pSeekCb, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("Set position - %d", nPos);
+
+       int nErr = player_set_position(pPlayerHandle, (int)nPos, pSeekCb, pUserData);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
+       }
+}
+
+void MpPlayerMgrSetSubtitlePosition(unsigned int nPos)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       int nErr = player_set_subtitle_position(pPlayerHandle, nPos);
+
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
+       }
+}
+
+
+void MpPlayerMgrSetMute(bool bMuteEnable)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(player_set_mute(pPlayerHandle, bMuteEnable) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Fail to set mute.");
+       }
+}
+
+bool MpPlayerMgrGetMute(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       bool bIsMute = false;
+
+       if(player_is_muted(pPlayerHandle, &bIsMute) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Fail to get mute state.");
+               return false;
+       }
+
+       return bIsMute;
+}
+
+bool MpPlayerMgrSetSurroundFilters(int nSurround)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       audio_effect_preset_e ePresetValue = (audio_effect_preset_e)nSurround;
+
+       bool available = false;
+
+       player_audio_effect_preset_is_available (pPlayerHandle, ePresetValue, &available);
+
+       if(available == false)
+       {
+               VideoLogInfo("[ERR] unavailable to set audio effect.");
+               return false;
+       }
+
+       if(player_audio_effect_set_preset(pPlayerHandle,ePresetValue) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Fail to set audio effect.");
+               return false;
+       }
+
+       return true;
+}
+
+int MpPlayerMgrGetDuration(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return 0;
+       }
+
+       int nDuration = -1;
+
+       int nErr = player_get_duration(pPlayerHandle, &nDuration);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr);
+               return 0;
+       }
+
+       return nDuration;
+}
+
+bool MpPlayerMgrSetOverlayXid(void *pOverlayXid)
+{
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+/*
+       if(!pOverlayXid)
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+*/
+       VideoLogInfo("XID : %x, %d", pOverlayXid, (int)pOverlayXid);
+       int nErr = player_set_display(pPlayerHandle, PLAYER_DISPLAY_TYPE_X11, (void*)pOverlayXid);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr);
+               return false;
+       }
+       return true;
+}
+
+bool MpPlayerMgrSetEvasSinkID(void *pEvasSinkID)
+{
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+/*
+       if(!pEvasSinkID)
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+*/
+       VideoLogInfo("Evas Sink ID : %x", pEvasSinkID);
+
+       int nErr = player_set_display(pPlayerHandle, PLAYER_DISPLAY_TYPE_EVAS, (void*)pEvasSinkID);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrSetSoundPriority(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = player_set_sound_type(pPlayerHandle, SOUND_TYPE_MEDIA);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x -  Fail to set attribute ", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+int MpPlayerMgrSetPlaySpeed(float nSpeedValue)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return -1;
+       }
+       int nErr = player_set_playback_rate(pPlayerHandle, nSpeedValue);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr);
+               return -1;
+       }
+
+       return 0;
+}
+
+int MpPlayerMgrGetVideoWidthResolution(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return 0;
+       }
+
+       int nWidth = 0;
+       int nHeight = 0;
+       int nErr = player_get_video_size(pPlayerHandle, &nWidth, &nHeight);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr);
+               return 0;
+       }
+
+       return nWidth;
+}
+
+int MpPlayerMgrGetVideoHeightResolution(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return 0;
+       }
+
+       int nWidth = 0;
+       int nHeight = 0;
+       int nErr = player_get_video_size(pPlayerHandle, &nWidth, &nHeight);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr);
+               return 0;
+       }
+
+       return nHeight;
+}
+
+bool MpPlayerMgrSetSubtitle(char *szSubtitlePath)
+{
+       VideoLogInfo("%s", szSubtitlePath);
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if(!szSubtitlePath)
+       {
+               VideoLogInfo("[ERR] subtitle path is null.");
+               return false;
+       }
+
+       int nErr = player_set_subtitle_path(pPlayerHandle, szSubtitlePath);
+       if(nErr != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+       int nRet = player_set_display_mode (pPlayerHandle , nMethodMode);
+       if(nRet != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nRet);
+               return false;
+       }
+       return true;
+}
+
+bool MpPlayerMgrSetRotate(MpVideoRotation nRotation)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nRotVal = PLAYER_DISPLAY_ROTATION_NONE;
+
+       if(nRotation == VIDEO_SCREEN_PORTRAIT) {
+               nRotVal = PLAYER_DISPLAY_ROTATION_NONE;
+       }
+       else if(nRotation == VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN) {
+               nRotVal = PLAYER_DISPLAY_ROTATION_180;
+       }
+       else if(nRotation == VIDEO_SCREEN_LANDSCAPE) {
+               nRotVal = PLAYER_DISPLAY_ROTATION_270;
+       }
+       else if(nRotation == VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN) {
+               nRotVal = PLAYER_DISPLAY_ROTATION_90;
+       }
+
+       int nRet = player_set_x11_display_rotation (pPlayerHandle , nRotVal);
+       if(nRet != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nRet);
+               return false;
+       }
+       return true;
+}
+
+bool MpPlayerMgrSetUseragentForStreaming(const char *szUserAgent)
+{
+       VideoLogInfo("!!!!!! NO EXIST FUNCTION FOR SETTING USER AGENT. !!!!!!");
+
+       return true;
+}
+
+bool MpPlayerMgrSetProxyAddressForStreaming(const char *szProxyAddress)
+{
+       VideoLogInfo("!!!!!! NO EXIST FUNCTION FOR SETTING PROXY ADDRESS. !!!!!!");
+       return true;
+}
+
+bool MpPlayerMgrSetCookieForStreaming(const char *szCookie)
+{
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if(!szCookie)
+       {
+               VideoLogInfo("No exist cookie.");
+               return false;
+       }
+
+       VideoLogInfo("");
+
+       int nRet = player_set_streaming_cookie(pPlayerHandle , szCookie, strlen(szCookie));
+       if(nRet == PLAYER_ERROR_INVALID_PARAMETER)
+       {
+               VideoLogInfo("PLAYER_ERROR_INVALID_PARAMETER");
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrStartCapture()
+{
+       VideoLogInfo("");
+       return true;
+}
+
+bool MpPlayerMgrCaptureVideo(void *pCallbackFunc, void *pUserData)
+{
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("");
+               return false;
+       }
+
+       VideoLogInfo("");
+
+       int nRet = player_capture_video(pPlayerHandle, pCallbackFunc, pUserData);
+       if(nRet == PLAYER_ERROR_INVALID_PARAMETER)
+       {
+               VideoLogInfo("PLAYER_ERROR_INVALID_PARAMETER");
+               return false;
+       }
+
+       if(nRet == PLAYER_ERROR_INVALID_OPERATION)
+       {
+               VideoLogInfo("PLAYER_ERROR_INVALID_OPERATION");
+               return false;
+       }
+
+       if(nRet == PLAYER_ERROR_INVALID_STATE)
+       {
+               VideoLogInfo("PLAYER_ERROR_INVALID_STATE");
+               return false;
+       }
+
+       return true;
+}
+
+int MpPlayerMgrGetBufferingPosition(void)
+{
+       int nStartPos = 0;
+       int nCurrentPos = 0;
+
+       if(player_get_streaming_download_progress(pPlayerHandle,&nStartPos, &nCurrentPos) != PLAYER_ERROR_NONE)
+       {
+               VideoLogError("");
+       return 0;
+}
+
+       return nCurrentPos;
+}
+
+bool MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData)
+{
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       // !!! CHECK player_buffering_cb !!!
+       if(player_set_buffering_cb(pPlayerHandle, pCallbackFunc, pUserData) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("");
+               return false;
+       }
+
+       return true;
+}
+
+int MpPlayerMgrGetFileStreamType(void)
+{
+       VideoLogInfo("");
+
+// jdlee
+       return FILE_STREAM_TYPE_VIDEO;
+}
+
+bool MpPlayerMgrSetScaling(bool bScale)
+{
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       VideoLogInfo("");
+
+       if(player_enable_evas_display_scaling(pPlayerHandle, bScale) != PLAYER_ERROR_NONE) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+       return true;
+}
+
+player_state_e MpPlayerMgrGetPlayerState(void)
+{
+       int ret = 0;
+       player_state_e player_state = PLAYER_STATE_NONE;
+       ret = player_get_state(pPlayerHandle, &player_state);
+       if (ret != PLAYER_ERROR_NONE) {
+               player_state = PLAYER_STATE_NONE;
+       }
+       return player_state;
+}
+
+void MpPlayerMgrSetVolume(float volume)
+{
+       VideoLogInfo("volume = %f", volume);
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(player_set_volume(pPlayerHandle, volume, volume) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Fail to set volume.");
+       }
+}
+
+float MpPlayerMgrGetVolume(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return 0.0;
+       }
+
+       float volume_left = 0.0;
+       float volume_right = 0.0;
+
+       if(player_get_volume(pPlayerHandle, &volume_left, &volume_right) != PLAYER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Fail to get volume.");
+               return 0.0;
+       }
+
+       return volume_left;
+}
+
+int MpPlayerMgrGetClosedCaptionCount(void)
+{
+       VideoLogInfo("");
+
+       if(!MpPlayerMgrIsActive())
+       {
+               VideoLogInfo("[ERR]");
+               return 0;
+       }
+       int nCount = 0;
+
+       if(player_get_track_count(pPlayerHandle, PLAYER_TRACK_TYPE_TEXT, &nCount) != PLAYER_ERROR_NONE)
+       {
+               VideoLogError("[ERR] player_get_track_count.");
+               return 0;
+       }
+
+       VideoLogError("== %d ===========================================", nCount);
+
+       return nCount;
+}
+
diff --git a/src/mp-video-progressbar.c b/src/mp-video-progressbar.c
new file mode 100644 (file)
index 0000000..66f8c84
--- /dev/null
@@ -0,0 +1,752 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-service-ctrl.h"
+#include "mp-video-progressbar.h"
+
+#define PROGRESS_BAR_START_TERM                        130
+#define PROGRESS_BAR_WIDTH_TERM                        200
+
+#define PROGRESS_ADJUSTMENT_TIME_INTERVAL      2.0
+#define PROGRESS_ADJUSTMENT_RUN_INTERVAL       0.3
+
+#define PROGRESS_ADJUSTMENT_MOVE_LIMIT         20
+#define PROGRESS_ADJUSTMENT_MODE_LIMIT         20
+
+
+static Evas_Object *pProgressbarEdj = NULL;
+static Ecore_Timer *pProgressbarTimer = NULL;
+
+static Ecore_Timer *pProgressAdjustCheckTimer = NULL;
+static Ecore_Timer *pProgressAdjustRunTimer = NULL;
+
+static bool bIsEventSkip = FALSE;
+static bool bIsDrag = FALSE;
+static int nDragPosition = 0;
+
+static bool bIsAdjustmentMode = FALSE;
+static int nDownPosX = 0;
+static int nOldPosX = 0;
+static bool bPrevAdjustment = FALSE;
+
+
+static void MpVideoProgressbarSetAdjustmentMode(bool bShow)
+{
+       VideoLogInfo("");
+
+       if(bShow) {
+               edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_SHOW, "*");
+       }
+       else {
+               edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_HIDE, "*");
+       }
+}
+
+
+static void MpVideoProgressbarSetPointerVisible(bool bVisible)
+{
+       VideoLogInfo("");
+
+       if(bVisible) {
+               edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_SHOW, "*");
+       }
+       else {
+               edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_HIDE, "*");
+       }
+}
+
+/*
+ * Internal function
+ */
+static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData)
+{
+       //VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist userdata.");
+               return EINA_TRUE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       double nPlayedRatio = 0.0;
+       char szPlayingTime[PLAY_TIME_LENGTH] = { 0, };
+
+       nPlayedRatio = ((double)nDragPosition / (double)pAppData->nDuration);
+
+       snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT,
+                PLAY_TIME_ARGS(nDragPosition / 1000));
+
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing",
+                                       nPlayedRatio, 0.0);
+
+       edje_object_part_text_set(pProgressbarEdj, "progress.txt.played",
+                                 szPlayingTime);
+
+       if(bIsAdjustmentMode) {
+               edje_object_part_text_set(pProgressbarEdj, "progress.adjustment.txt",
+                                 szPlayingTime);
+       }
+
+       return EINA_TRUE;
+}
+
+static void MpVideoProgressbarUpdateBufferingValue(void *pUserData)
+{
+       //VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist userdata.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       double buffering_ratio = 0.0;
+       pAppData->
+           VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition(pAppData);
+
+       buffering_ratio = ((double)pAppData->nBufferingPosition / (double)100);
+
+       //VideoLogInfo("%d:%lf", pAppData->nBufferingPosition, buffering_ratio);
+
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.buffering",
+                                       buffering_ratio, 0.0);
+}
+
+/*
+ * Callback function.
+ */
+static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData)
+{
+       /* VideoLogInfo(""); */
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist userdata.");
+               return EINA_TRUE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pAppData->nDuration < 1) {
+               VideoLogInfo("Try to update duration time.");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData);
+               return EINA_TRUE;
+       }
+
+       if (bIsEventSkip || bIsDrag)
+               return EINA_TRUE;
+
+       double nPlayedRatio = 0.0;
+       char szPlayingTime[PLAY_TIME_LENGTH] = { 0, };
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+
+       nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration);
+       snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000));
+
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0);
+       edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime);
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
+       if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoProgressbarUpdateBufferingValue(pUserData);
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool MpVideoProgressbarAdjustmentTimerCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogError("[ERR] No exist userdata.");
+               return EINA_FALSE;
+       }
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       bIsAdjustmentMode = TRUE;
+
+       VideoLogInfo("%d, %d",pAppData->nCurPosition , nDragPosition);
+
+       pAppData->nSetPosition = nDragPosition;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+
+       MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode);
+       MpVideoProgressbarUpdateValue(pUserData);
+       return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoProgressbarAdjustmentRunTimerCb(void *pUserData)
+{
+//     VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist userdata.");
+               return EINA_TRUE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+
+       if(bPrevAdjustment) {
+               pAppData->nSetPosition = nDragPosition - 1000;
+       }
+       else {
+               pAppData->nSetPosition = nDragPosition + 1000;
+       }
+
+       if (pAppData->nSetPosition < 0) {
+               pAppData->nSetPosition = 0;
+       }
+
+       if (pAppData->nSetPosition > pAppData->nDuration) {
+               pAppData->nSetPosition = pAppData->nDuration;
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+
+       nDragPosition = pAppData->nSetPosition;
+
+       MpVideoProgressbarUpdateValue((void *)pAppData);
+
+
+
+       return EINA_TRUE;
+}
+
+
+
+static void MpVideoProgressbarDownCb(void *pUserData, Evas * e,
+                                    Evas_Object *obj, void *event_info)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!event_info) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (bIsEventSkip)
+               return;
+
+       MpVideoProgressbarDeleteTimer();
+       MpVideoProgressbarSetPointerVisible(TRUE);
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
+       if(nTmpPlayerType != MP_STREAMING_PLAYER)
+       {
+               if(pProgressAdjustCheckTimer) {
+                       ecore_timer_del(pProgressAdjustCheckTimer);
+                       pProgressAdjustCheckTimer = NULL;
+               }
+
+               if(pProgressAdjustRunTimer) {
+                       ecore_timer_del(pProgressAdjustRunTimer);
+                       pProgressAdjustRunTimer = NULL;
+               }
+
+               pProgressAdjustCheckTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_TIME_INTERVAL,
+                                       MpVideoProgressbarAdjustmentTimerCb, (void *)pUserData);
+
+       }
+       bIsDrag = TRUE;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       Evas_Event_Mouse_Up *ev = event_info;
+       Evas_Object *progressbar = obj;
+       int w = 0, current = 0;
+       double ratio = 0.0;
+
+       int term = 0;
+       int w_term = 0;
+       int width = 0;
+       int height = 0;
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
+       term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH;
+       w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH;
+       evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+       nDownPosX = ev->canvas.x;
+       nOldPosX = ev->canvas.x;;
+       current = ev->canvas.x - term;
+       w = w - w_term;
+       if (current < 0)
+               current = 0;
+       else if (current > w)
+               current = w;
+
+       ratio = (double)current / w;
+
+       nDragPosition = ratio * pAppData->nDuration;
+       pAppData->nSetPosition = nDragPosition;
+
+       if(nTmpPlayerType != MP_STREAMING_PLAYER)
+       {
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY ||
+                   pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
+                       //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+                       pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME;
+                       pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE;
+               }
+               pAppData->bSeekComplete = FALSE;
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+       }
+       else {
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY ||
+                   pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+                       pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME;
+               }
+       }
+
+       MpVideoProgressbarUpdateValue(pUserData);
+
+}
+
+static void MpVideoProgressbarUpCb(void *pUserData, Evas * e, Evas_Object *obj,
+                                  void *event_info)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!event_info) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (bIsEventSkip)
+               return;
+
+       bIsDrag = FALSE;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       MpVideoProgressbarSetPointerVisible(FALSE);
+
+       if(pProgressAdjustRunTimer) {
+               ecore_timer_del(pProgressAdjustRunTimer);
+               pProgressAdjustRunTimer = NULL;
+       }
+
+       if(pProgressAdjustCheckTimer) {
+               ecore_timer_del(pProgressAdjustCheckTimer);
+               pProgressAdjustCheckTimer = NULL;
+       }
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
+       if(nTmpPlayerType != MP_STREAMING_PLAYER)
+       {
+               if(bIsAdjustmentMode) {
+                       bIsAdjustmentMode = FALSE;
+                       MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode);
+
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+
+                       if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY ||
+                           pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) {
+                               //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+                               pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE;
+                               pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
+                       }
+                       nOldPosX = 0;
+                       return;
+               }
+       }
+
+       Evas_Event_Mouse_Up *ev = event_info;
+       Evas_Object *progressbar = obj;
+       int w = 0, current = 0;
+       double ratio = 0.0;
+
+       int term = 0;
+       int w_term = 0;
+       int width = 0;
+       int height = 0;
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
+       term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH;
+       w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH;
+
+       evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+       current = ev->canvas.x - term;
+       w = w - w_term;
+
+       if (current < 0)
+               current = 0;
+       else if (current > w)
+               current = w;
+
+       ratio = (double)current / w;
+
+       pAppData->nSetPosition = (int)pAppData->nDuration * ratio;
+
+       if (pAppData->nSetPosition > pAppData->nDuration)
+               pAppData->nSetPosition = pAppData->nDuration;
+
+       if (pAppData->nSetPosition < 0)
+               pAppData->nSetPosition = 0;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+
+       MpVideoProgressbarCreateTimer((void *)pAppData);
+
+       if(nTmpPlayerType != MP_STREAMING_PLAYER)
+       {
+
+               if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY ||
+                   pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) {
+                       //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+                       pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE;
+                       pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
+               }
+
+               if(!pAppData->bSeekComplete)
+               {
+                       pAppData->nSeekPosition = pAppData->nSetPosition;
+                       if((pAppData->nCurPosition < pAppData->nSeekPosition + 5000) &&
+                               (pAppData->nCurPosition > pAppData->nSeekPosition - 5000))
+                       {
+                               VideoLogError("Skip for same position");
+                               pAppData->nSeekPosition = 0;
+                       }
+               }
+               else
+               {
+                       if((pAppData->nCurPosition < pAppData->nSetPosition + 5000) &&
+                               (pAppData->nCurPosition > pAppData->nSetPosition - 5000))
+                       {
+                               VideoLogError("Skip for same position");
+               }
+               else
+               {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+               }
+               }
+       }
+       else
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+               MpVideoProgressbarCreateTimer((void *)pAppData);
+
+               if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY ||
+                   pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) {
+                       pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
+                       pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE;
+               }
+
+       }
+}
+static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e,
+                                    Evas_Object *obj, void *event_info)
+{
+//     VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!event_info) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (bIsEventSkip || bIsDrag == FALSE)
+               return;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       Evas_Event_Mouse_Up *ev = event_info;
+       Evas_Object *progressbar = obj;
+       int w = 0, current = 0;
+       double ratio = 0.0;
+
+       int term = 0;
+       int w_term = 0;
+       int width = 0;
+       int height = 0;
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
+       term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH;
+       w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH;
+
+       evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+       if(bIsAdjustmentMode) {
+               if((nOldPosX + PROGRESS_ADJUSTMENT_MODE_LIMIT) < ev->canvas.x) {
+                       if(bPrevAdjustment == TRUE) {
+                               if(pProgressAdjustRunTimer) {
+                                       ecore_timer_del(pProgressAdjustRunTimer);
+                                       pProgressAdjustRunTimer = NULL;
+                               }
+                       }
+                       bPrevAdjustment = FALSE;
+                       nOldPosX = ev->canvas.x;
+               }
+               else if((nOldPosX - PROGRESS_ADJUSTMENT_MODE_LIMIT) > ev->canvas.x) {
+                       if(bPrevAdjustment == FALSE) {
+                               if(pProgressAdjustRunTimer) {
+                                       ecore_timer_del(pProgressAdjustRunTimer);
+                                       pProgressAdjustRunTimer = NULL;
+                               }
+                       }
+                       bPrevAdjustment = TRUE;
+                       nOldPosX = ev->canvas.x;
+               }
+
+               if(pProgressAdjustRunTimer == NULL) {
+                       pProgressAdjustRunTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_RUN_INTERVAL,
+                                                       MpVideoProgressbarAdjustmentRunTimerCb, (void *)pAppData);
+
+               }
+
+       }
+       else {
+               if(((nDownPosX + PROGRESS_ADJUSTMENT_MOVE_LIMIT) < ev->canvas.x ) ||
+                       ((nDownPosX - PROGRESS_ADJUSTMENT_MOVE_LIMIT) > ev->canvas.x)) {
+                       VideoLogInfo("Adjustment Off");
+
+                       if(pProgressAdjustCheckTimer) {
+                               ecore_timer_del(pProgressAdjustCheckTimer);
+                               pProgressAdjustCheckTimer = NULL;
+                       }
+
+                       if(pProgressAdjustRunTimer) {
+                               ecore_timer_del(pProgressAdjustRunTimer);
+                               pProgressAdjustRunTimer = NULL;
+                       }
+               }
+               current = ev->canvas.x - term;
+               w = w - w_term;
+
+               if (current < 0)
+                       current = 0;
+               else if (current > w)
+                       current = w;
+
+               ratio = (double)current / w;
+               nDragPosition = ratio * pAppData->nDuration;
+               pAppData->nSetPosition = nDragPosition;
+               int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
+               if(nTmpPlayerType != MP_STREAMING_PLAYER)
+               {
+                       if(pAppData->bSeekComplete) {
+                               pAppData->bSeekComplete = FALSE;
+                               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+                       }
+               }
+               MpVideoProgressbarUpdateValue(pUserData);
+       }
+}
+
+/*
+ * External function
+ */
+void MpVideoProgressbarSetSkipEvent(bool bSkip)
+{
+//     VideoLogInfo("");
+
+       bIsEventSkip = bSkip;
+}
+
+void *MpVideoProgressbarGetEdjHandle(void)
+{
+       VideoLogInfo("");
+
+       if (pProgressbarEdj) {
+               return (void *)pProgressbarEdj;
+       } else {
+               VideoLogInfo("Progressbar edj handle is null.");
+               return NULL;
+       }
+}
+
+void *MpVideoProgressbarInit(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return NULL;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+       pProgressbarEdj = (Evas_Object *)MpUtilLoadEdjFile(pMainWindowEvas,
+                                                          VIDEO_PLAYER_PROGRESS_EDJ,
+                                                          PROGRESS_EDJ_GROUP);
+
+       evas_object_event_callback_add(pProgressbarEdj,
+                                      EVAS_CALLBACK_MOUSE_DOWN,
+                                      MpVideoProgressbarDownCb, pAppData);
+
+       evas_object_event_callback_add(pProgressbarEdj,
+                                      EVAS_CALLBACK_MOUSE_UP,
+                                      MpVideoProgressbarUpCb, pAppData);
+
+       evas_object_event_callback_add(pProgressbarEdj,
+                                      EVAS_CALLBACK_MOUSE_MOVE,
+                                      MpVideoProgressbarMoveCb, pAppData);
+
+       MpVideoProgressbarUpdateDurationTime("--:--:--");
+
+       return (void *)pProgressbarEdj;
+}
+
+void MpVideoProgressbarDestroy(void)
+{
+       VideoLogInfo("");
+
+       if (pProgressbarEdj) {
+               evas_object_del(pProgressbarEdj);
+               pProgressbarEdj = NULL;
+       }
+
+       if (pProgressbarTimer) {
+               ecore_timer_del(pProgressbarTimer);
+               pProgressbarTimer = NULL;
+       }
+
+       if(pProgressAdjustCheckTimer) {
+               ecore_timer_del(pProgressAdjustCheckTimer);
+               pProgressAdjustCheckTimer = NULL;
+       }
+
+       if(pProgressAdjustRunTimer) {
+               ecore_timer_del(pProgressAdjustRunTimer);
+               pProgressAdjustRunTimer = NULL;
+       }
+
+       bIsEventSkip = FALSE;
+       nDragPosition = 0;
+}
+
+void MpVideoProgressbarCreateTimer(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pProgressbarTimer) {
+               ecore_timer_del(pProgressbarTimer);
+               pProgressbarTimer = NULL;
+       }
+
+       if (bIsEventSkip)
+               return;
+
+       double nPlayedRatio = 0.0;
+       char szPlayingTime[PLAY_TIME_LENGTH] = { 0, };
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+
+       nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration);
+       snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000));
+
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0);
+       edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime);
+
+       pProgressbarTimer = ecore_timer_add(0.3, MpVideoProgressbarTimerCb, (void *)pAppData);
+}
+
+void MpVideoProgressbarDeleteTimer(void)
+{
+       VideoLogInfo("");
+
+       if (pProgressbarTimer) {
+               ecore_timer_del(pProgressbarTimer);
+               pProgressbarTimer = NULL;
+       }
+
+       if(pProgressAdjustCheckTimer) {
+               ecore_timer_del(pProgressAdjustCheckTimer);
+               pProgressAdjustCheckTimer = NULL;
+       }
+
+       if(pProgressAdjustRunTimer) {
+               ecore_timer_del(pProgressAdjustRunTimer);
+               pProgressAdjustRunTimer = NULL;
+       }
+}
+
+void MpVideoProgressbarUpdateDurationTime(char *szDurationTime)
+{
+       VideoLogInfo("");
+
+       if (!szDurationTime) {
+               VideoLogInfo("Fail to ser duration time");
+               return;
+       }
+
+       edje_object_part_text_set(pProgressbarEdj, "progress.txt.total",
+                                 szDurationTime);
+}
+
+void MpVideoProgressbarBeginOfStream(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoProgressbarDeleteTimer();
+
+       pAppData->nCurPosition = 0;
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0);
+       edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00");
+
+       MpVideoProgressbarCreateTimer(pUserData);
+}
+
+void MpVideoProgressbarReset(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       MpVideoProgressbarDeleteTimer();
+
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0);
+       edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00");
+}
+
diff --git a/src/mp-video-service-ctrl.c b/src/mp-video-service-ctrl.c
new file mode 100755 (executable)
index 0000000..ec2a320
--- /dev/null
@@ -0,0 +1,629 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <app.h>
+#include <aul.h>
+#include <glib.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-service-ctrl.h"
+
+
+#define MP_VIDEO_LAUNCHED_BY_APP_KEY           "launching_application"
+#define MP_VIDEO_SORT_TYPE_KEY                         "order_type"
+#define MP_VIDEO_LIST_TYPE_KEY                         "video_list_type"
+#define MP_VIDEO_TAG_NAME_KEY                          "tag_name"
+#define MP_VIDEO_EDIT_MODE_KEY                         "edit_mode"
+#define MP_VIDEO_START_POS_TIME_KEY                    "start_pos_time"
+#define MP_VIDEO_URI_PATH                                      "path"
+#define MP_VIDEO_COOKIE                                                "cookie"
+#define MP_VIDEO_MULTI_WIN_TYPE_KEY                    "is_multi_win_type"
+#define MP_VIDEO_LAUNCH_TYPE                           "launch-type"
+#define MP_VIDEO_SHORTCUT_VIDEO                                "shortcut-videoplayer"
+
+static service_h pAppSvcHandle = NULL;
+static int nPlayerType = MP_NONE_VIEW_TYPE;
+static int nPrevPlayerType = MP_NONE_VIEW_TYPE;
+static int nGalleryLatestTime = 0;
+static char *g_szStreamingCookie = NULL;
+static bool bIsShortcutType = FALSE;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Internal Function
+
+bool MpVideoServiceCtrlCheckMime(service_h pVideoServiceHandle, char **szMediaUri)
+{
+       VideoLogInfo("");
+
+       if(!pVideoServiceHandle)
+       {
+               VideoLogInfo("[ERR] No Exist Service handle.");
+               return FALSE;
+       }
+
+       bool bRet = TRUE;
+       char *szMimeContent = NULL;
+
+       if(service_get_extra_data(pVideoServiceHandle, AUL_K_MIME_CONTENT, &szMimeContent) != SERVICE_ERROR_NONE)
+       {
+               VideoLogInfo("No exist mime type.");
+               bRet = FALSE;
+       }
+
+       if(szMimeContent)
+       {
+               *szMediaUri = (char*)malloc(strlen(szMimeContent) + 1);
+               memset(*szMediaUri, 0, strlen(szMimeContent) + 1);
+               strncpy(*szMediaUri, szMimeContent, strlen(szMimeContent));
+               VideoLogInfo("Mime content : %s", *szMediaUri);
+               free(szMimeContent);
+               bRet = TRUE;
+       }
+       else
+       {
+               VideoLogInfo("No exist MIME type.");
+               bRet = FALSE;
+       }
+
+       return bRet;
+}
+
+bool MpVideoServiceCtrlCheckBundle(service_h pVideoServiceHandle, char **szMediaUri)
+{
+       if(!pVideoServiceHandle)
+       {
+               VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value.");
+               return FALSE;
+       }
+
+       bool bRet = TRUE;
+       char *szStrVideoURI = NULL;
+
+       if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_URI_PATH, &szStrVideoURI) != SERVICE_ERROR_NONE)
+       {
+               VideoLogInfo("No exist KEY of video/streaming URI.");
+               bRet = FALSE;
+               return bRet;
+       }
+
+       if(szStrVideoURI)
+       {
+               *szMediaUri = (char*)malloc(strlen(szStrVideoURI) + 1);
+               memset(*szMediaUri, 0, strlen(szStrVideoURI) + 1);
+               strncpy(*szMediaUri, szStrVideoURI, strlen(szStrVideoURI));
+               VideoLogInfo("Video/Streaming URI path : %s", *szMediaUri);
+               free(szStrVideoURI);
+               szStrVideoURI = NULL;
+               bRet = TRUE;
+       }
+       else
+       {
+               VideoLogInfo("No exist video/streaming URI.");
+               bRet = FALSE;
+       }
+
+       return bRet;
+}
+
+bool MpVideoServiceCtrlCheckAUL(service_h pVideoServiceHandle, char **szMediaUri)
+{
+       if(!pVideoServiceHandle)
+       {
+               VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value.");
+               return FALSE;
+       }
+
+
+       char *pGetOperation = NULL;
+
+       service_get_operation(pVideoServiceHandle, &pGetOperation);
+
+       if(pGetOperation == NULL)
+       {
+               return FALSE;
+       }
+
+       if(!strcmp(SERVICE_OPERATION_VIEW , pGetOperation))
+       {
+               char *szStrVideoURI = NULL;
+
+               service_get_uri(pVideoServiceHandle, &szStrVideoURI);
+
+               if(szStrVideoURI)
+               {
+                       *szMediaUri = (char*)malloc(strlen(szStrVideoURI) + 1);
+                       memset(*szMediaUri, 0, strlen(szStrVideoURI) + 1);
+                       strncpy(*szMediaUri, szStrVideoURI, strlen(szStrVideoURI));
+                       VideoLogInfo("Video/Streaming URI path : %s", *szMediaUri);
+                       free(szStrVideoURI);
+                       szStrVideoURI = NULL;
+               }
+               else
+               {
+                       VideoLogInfo("[ERR] No exist video/streaming URI.");
+
+                       if(pGetOperation)
+                       {
+                               free(pGetOperation);
+                               pGetOperation = NULL;
+                       }
+
+                       return FALSE;
+               }
+       }
+       else
+       {
+               VideoLogInfo("No exist Operation.");
+
+               if(pGetOperation)
+               {
+                       free(pGetOperation);
+                       pGetOperation = NULL;
+               }
+
+               return FALSE;
+       }
+
+       VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s", *szMediaUri);
+
+       if(pGetOperation)
+       {
+       free(pGetOperation);
+               pGetOperation = NULL;
+       }
+
+       return TRUE;
+}
+
+
+bool MpVideoServiceCtrlParseUri(service_h pVideoServiceHandle, char** szMediaUri)
+{
+       VideoLogInfo("");
+
+       if(!MpVideoServiceCtrlCheckMime(pVideoServiceHandle, szMediaUri))
+       {
+               if(!MpVideoServiceCtrlCheckBundle(pVideoServiceHandle, szMediaUri))
+               {
+                       if(!MpVideoServiceCtrlCheckAUL(pVideoServiceHandle, szMediaUri))
+                       {
+                               VideoLogInfo("No exist URI path.");
+                               return FALSE;
+                       }
+               }
+       }
+
+       VideoLogInfo("szMediaUri : %s", *szMediaUri);
+
+       return TRUE;
+}
+
+int MpVideoServiceCtrlCheckUriType(char* szMediaUri)
+{
+       if(!szMediaUri)
+       {
+               VideoLogInfo("[ERR] No exist media uri.");
+               return MP_ERROR_PLAYER_TYPE;
+       }
+
+       VideoLogInfo("");
+
+       int nRet = 0;
+
+       if(MpUtilCheckUriType(szMediaUri))
+               {
+                       VideoLogInfo("MP_STREAMING_PLAYER");
+                       nRet = MP_STREAMING_PLAYER;
+               }
+               else
+               {
+                       VideoLogInfo("MP_VIDEO_PLAYER");
+                       nRet = MP_VIDEO_PLAYER;
+               }
+
+       return nRet;
+}
+
+bool MpVideoServiceCtrlCheckCookieForStreaming(service_h pVideoServiceHandle)
+{
+       if(!pVideoServiceHandle)
+       {
+               VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value.");
+               return FALSE;
+       }
+
+       bool bRet = TRUE;
+       char *pStrVideoCookie = NULL;
+
+       if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_COOKIE, &pStrVideoCookie) != SERVICE_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] No exist KEY of streaming COOKIE.");
+               bRet = FALSE;
+       }
+
+       if(pStrVideoCookie)
+       {
+               g_szStreamingCookie = (char*)malloc(strlen(pStrVideoCookie) + 1);
+               memset(g_szStreamingCookie, 0, strlen(pStrVideoCookie) + 1);
+               strncpy(g_szStreamingCookie, pStrVideoCookie, strlen(pStrVideoCookie));
+               VideoLogInfo("Video/Streaming URI path Cookie : %s", g_szStreamingCookie);
+               free(pStrVideoCookie);
+       }
+       else
+       {
+               VideoLogInfo("[ERR] No exist video/streaming URI.");
+               bRet = FALSE;
+       }
+
+       return TRUE;
+}
+
+int MpVideoServiceCtrlCheckStartPositionTime(service_h pVideoServiceHandle, char *szBundleKey)
+{
+       VideoLogInfo("");
+
+       if(!pVideoServiceHandle)
+       {
+               VideoLogInfo("No exist Service handle data.");
+               return 0;
+       }
+
+       int nStartPositionTime = 0;
+       char *szStartPosTime = NULL;
+
+       if(service_get_extra_data(pVideoServiceHandle, szBundleKey, &szStartPosTime) != SERVICE_ERROR_NONE)
+       {
+               VideoLogInfo("No exist mime type.");
+               return 0;
+       }
+
+       if(!szStartPosTime)
+       {
+               VideoLogInfo("No exist pointer of position time.");
+               return 0;
+       }
+
+       nStartPositionTime = atoi(szStartPosTime);
+
+       VideoLogInfo("Start position time : %d", nStartPositionTime);
+
+       free(szStartPosTime);
+
+       if(nStartPositionTime < 0)
+       {
+               nStartPositionTime = 0;
+       }
+
+       return nStartPositionTime;
+}
+
+bool MpVideoServiceCtrlGetTagNameOfGallery(service_h pVideoServiceHandle, char *szBundleKey, char *szTagName)
+{
+       VideoLogInfo("");
+
+       if(!pVideoServiceHandle)
+       {
+               VideoLogInfo("No exist Service handle.");
+               return FALSE;
+       }
+
+       if(!szBundleKey)
+       {
+               VideoLogInfo("No exist Service handle kay.");
+               return FALSE;
+       }
+
+       if(!szTagName)
+       {
+               VideoLogInfo("No exist pAppData.");
+               return FALSE;
+       }
+
+       bool nRet = TRUE;
+       char *szVideoTagName = NULL;
+
+       if(service_get_extra_data(pVideoServiceHandle, szBundleKey, &szVideoTagName) != SERVICE_ERROR_NONE)
+       {
+               VideoLogInfo("No exist mime type.");
+               nRet = FALSE;
+       }
+
+       if(szVideoTagName)
+       {
+               strncpy(szTagName, szVideoTagName, STR_LEN_MAX - 1);
+               VideoLogInfo("szTagName : %s", szTagName);
+               free(szVideoTagName);
+               nRet = TRUE;
+       }
+       else
+       {
+               VideoLogInfo("No exist pointer of szVideoTagName.");
+               nRet = FALSE;
+       }
+
+       return nRet;
+}
+
+int MpVideoServiceCtrlCheckLauncher(service_h pVideoServiceHandle)
+{
+       VideoLogInfo("");
+
+       if(!pVideoServiceHandle)
+       {
+               VideoLogInfo("No exist Service handle data.");
+               return MP_VIDEO_PLAYER_SIMPLE;
+       }
+
+       char *szLaunchingByOtherApp = NULL;
+
+       if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_LAUNCHED_BY_APP_KEY, &szLaunchingByOtherApp) != SERVICE_ERROR_NONE)
+       {
+               VideoLogInfo("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY");
+               return MP_VIDEO_PLAYER_SIMPLE;
+       }
+
+       if(!szLaunchingByOtherApp)
+       {
+               VideoLogInfo("No exist pointer of szLaunchingByOtherApp");
+               return MP_VIDEO_PLAYER_SIMPLE;
+       }
+
+       MpPlayerViewType nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE;
+
+       if(!strcmp(szLaunchingByOtherApp, "gallery"))
+       {
+               nTmpLaunchingAppType = MP_VIDEO_PLAYER_GALLERY;
+
+               nGalleryLatestTime = MpVideoServiceCtrlCheckStartPositionTime(pVideoServiceHandle, MP_VIDEO_START_POS_TIME_KEY);
+       }
+       else if(!strcmp(szLaunchingByOtherApp, "image_viewer"))
+       {
+                       nTmpLaunchingAppType = MP_VIDEO_PLAYER_GALLERY;
+               }
+       else if(!strcmp(szLaunchingByOtherApp, "email"))
+       {
+               nTmpLaunchingAppType = MP_VIDEO_PLAYER_EMAIL;
+       }
+       else if(!strcmp(szLaunchingByOtherApp, "message"))
+       {
+               nTmpLaunchingAppType = MP_VIDEO_PLAYER_MMS;
+       }
+       else if(!strcmp(szLaunchingByOtherApp, "light_play_view"))
+       {
+               nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE;
+       }
+       else
+       {
+               nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE;
+       }
+
+       VideoLogInfo("Start position time : %d", nTmpLaunchingAppType);
+
+       free(szLaunchingByOtherApp);
+
+       return (int)nTmpLaunchingAppType;
+}
+
+bool MpVideoServiceCtrlCheckShortcut(service_h pVideoServiceHandle)
+{
+       if(!pVideoServiceHandle)
+       {
+               VideoLogInfo("No exist Service handle.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       char *pGetOperation = NULL;
+
+       service_get_operation(pVideoServiceHandle, &pGetOperation);
+
+       if(pGetOperation == NULL)
+       {
+               bIsShortcutType = FALSE;
+               return bIsShortcutType;
+       }
+
+       if(!strcmp(pGetOperation, SERVICE_OPERATION_DEFAULT))
+       {
+               char *szOperationType = NULL;
+
+               if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_LAUNCH_TYPE, &szOperationType) != SERVICE_ERROR_NONE)
+               {
+                       VideoLogInfo("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY");
+                       bIsShortcutType = FALSE;
+               }
+
+               if(!szOperationType)
+               {
+                       VideoLogInfo("No exist pointer of szOperationType");
+                       bIsShortcutType = FALSE;
+               }
+               else
+               {
+                       if(!strcmp(szOperationType, MP_VIDEO_SHORTCUT_VIDEO))
+                       {
+                               bIsShortcutType = TRUE;
+                       }
+                       else
+                       {
+                               bIsShortcutType = FALSE;
+                       }
+
+                       if(szOperationType)
+                       {
+                               free(szOperationType);
+                               szOperationType = NULL;
+                       }
+               }
+       }
+
+       return bIsShortcutType;
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// External Function
+
+void MpVideoServiceCtrlReset(void)
+{
+       VideoLogInfo("");
+
+       pAppSvcHandle = NULL;
+
+       nGalleryLatestTime = 0;
+
+       if(g_szStreamingCookie)
+       {
+               free(g_szStreamingCookie);
+               g_szStreamingCookie = NULL;
+       }
+}
+
+int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char** szMediaUri)
+{
+       if(!pAppServiceHandle)
+       {
+               VideoLogInfo("");
+               return MP_ERROR_PLAYER_TYPE;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoServiceCtrlReset();
+
+       pAppSvcHandle = (service_h)pAppServiceHandle;
+       nPlayerType = MP_NONE_VIEW_TYPE;
+
+       if(!MpVideoServiceCtrlParseUri(pAppSvcHandle, szMediaUri))
+       {
+               VideoLogInfo("MP_VIDEO_PLAYER_LIST");
+               nPlayerType = MP_VIDEO_PLAYER;
+       }
+
+       if(!*szMediaUri)
+               {
+                       return nPlayerType;
+               }
+       else
+       {
+               VideoLogInfo("szMediaUri : %s", *szMediaUri);
+       }
+
+       int nUriType = 0;
+
+       nUriType = MpVideoServiceCtrlCheckUriType(*szMediaUri);
+
+       if(nUriType == MP_VIDEO_PLAYER)
+               {
+                       nPlayerType = MpVideoServiceCtrlCheckLauncher(pAppSvcHandle);
+               }
+
+       if(nUriType == MP_STREAMING_PLAYER)
+               {
+                       nPlayerType = MP_STREAMING_PLAYER;
+               MpVideoServiceCtrlCheckCookieForStreaming(pAppSvcHandle);
+               }
+
+       return nPlayerType;
+               }
+
+int MpVideoServiceCtrlGetLatestTime(void)
+{
+       VideoLogInfo("");
+
+       if(nGalleryLatestTime < 0)
+       {
+               nGalleryLatestTime = 0;
+       }
+
+       return nGalleryLatestTime;
+}
+
+int MpVideoServiceCtrlGetPlayerTypeWithoutLog(void)
+{
+       if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType)
+       {
+               nPlayerType = MP_ERROR_PLAYER_TYPE;
+       }
+
+       return nPlayerType;
+}
+
+int MpVideoServiceCtrlGetPlayerType(void)
+{
+       VideoLogInfo("");
+
+       if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType)
+       {
+               nPlayerType = MP_ERROR_PLAYER_TYPE;
+       }
+
+       VideoLogInfo("nPlayerType : %d", nPlayerType);
+
+       return nPlayerType;
+}
+
+void MpVideoServiceCtrlSetPlayerType(int nSetPlayerType)
+{
+       VideoLogInfo("nSetPlayerType : %d", nSetPlayerType);
+
+       if(MP_ERROR_PLAYER_TYPE < nSetPlayerType || MP_MAX_PLAYER_TYPE > nSetPlayerType)
+       {
+               MpVideoServiceCtrlSetPrevPlayerType(nPlayerType);
+               nPlayerType = nSetPlayerType;
+       }
+}
+
+int MpVideoServiceCtrlGetPrevPlayerType(void)
+{
+       VideoLogInfo("");
+
+       if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType)
+       {
+               nPrevPlayerType = MP_ERROR_PLAYER_TYPE;
+       }
+
+       VideoLogInfo("nPrevPlayerType : %d", nPrevPlayerType);
+
+       return nPrevPlayerType;
+}
+
+void MpVideoServiceCtrlSetPrevPlayerType(int nSetPlayerType)
+{
+       VideoLogInfo("nSetPlayerType : %d", nSetPlayerType);
+
+       if(MP_ERROR_PLAYER_TYPE < nSetPlayerType || MP_MAX_PLAYER_TYPE > nSetPlayerType)
+       {
+               nPrevPlayerType = nSetPlayerType;
+       }
+}
+
+char* MpVideoServiceCtrlGetCookieForStreaming(void)
+{
+       VideoLogInfo("");
+
+       if(!g_szStreamingCookie)
+       {
+               VideoLogInfo("No exist streaming cookie.");
+               return NULL;
+       }
+
+       return g_szStreamingCookie;
+}
\ No newline at end of file
diff --git a/src/mp-video-sound-path-ctrl.c b/src/mp-video-sound-path-ctrl.c
new file mode 100755 (executable)
index 0000000..72666e8
--- /dev/null
@@ -0,0 +1,605 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <app.h>
+#include <player.h>
+#include <sound_manager.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-sound-path-ctrl.h"
+
+#define MP_VIDEO_SOUND_PATH_NUM                        10
+#define MP_VIDEO_SOUND_PATH_SPEAKER            "Speaker"
+#define MP_VIDEO_SOUND_PATH_EARJACK            "Headphones"
+
+static Evas_Object *pVideoSoundPathPopUpHandle = NULL;
+//static Evas_Object *pVideoSoundPathpPopupWindow = NULL;
+static Evas_Object *pGroupRadio = NULL;
+static Evas_Object *pGenList = NULL;
+
+static char **szSoundPathItems = NULL;
+static bool bIsConnectBluetooth = FALSE;
+static bool bIsConnectEarjack = FALSE;
+
+void MpVideoSoundpathDeleteRadioButton(void)
+{
+       VideoLogInfo("");
+
+       if (pGroupRadio) {
+               evas_object_del(pGroupRadio);
+               pGroupRadio = NULL;
+       }
+}
+
+void MpVideoSoundpathDeletePopupHandle(void)
+{
+       VideoLogInfo("");
+
+       int nCount = 0;
+
+       if(szSoundPathItems)
+       {
+               for(nCount = 0; nCount < MP_VIDEO_SOUND_PATH_NUM; nCount++)
+               {
+                       if(szSoundPathItems[nCount])
+                       {
+                               free(szSoundPathItems[nCount]);
+                               szSoundPathItems[nCount] = NULL;
+                       }
+               }
+               free(szSoundPathItems);
+               szSoundPathItems = NULL;
+       }
+
+       MpVideoSoundpathDeleteRadioButton();
+
+       if (pGenList) {
+               evas_object_del(pGenList);
+               pGenList = NULL;
+       }
+
+       if (pVideoSoundPathPopUpHandle) {
+               evas_object_del(pVideoSoundPathPopUpHandle);
+               pVideoSoundPathPopUpHandle = NULL;
+       }
+
+       MpUtilSetAlphaOfMainWindow(TRUE);
+
+       /*
+       if (pVideoSoundPathpPopupWindow) {
+               evas_object_del(pVideoSoundPathpPopupWindow);
+               pVideoSoundPathpPopupWindow = NULL;
+       }
+       */
+}
+
+static char *MpVideoSoundpathGetLabelOfGenlistItemCb(const void *pUserData,
+                                                    Evas_Object *pObject,
+                                                    const char *pPart)
+{
+       VideoLogInfo("");
+
+       int nIndex = (int)pUserData;
+
+       if (!strcmp(pPart, "elm.text")) {
+               VideoLogInfo("Index : %d", nIndex);
+               return strdup(szSoundPathItems[nIndex]);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *MpVideoSoundpathGetIconOfGenlistItemCb(const void
+                                                          *pUserData,
+                                                          Evas_Object *pObject,
+                                                          const char *pPart)
+{
+       VideoLogInfo("");
+
+       int nIndex = (int)pUserData;
+       Evas_Object *pTmpRadio = NULL;
+
+       if (!strcmp(pPart, "elm.icon")) {
+               VideoLogInfo("Index : %d", nIndex);
+               pTmpRadio = elm_radio_add(pObject);
+               elm_radio_state_value_set(pTmpRadio, nIndex);
+               evas_object_show(pTmpRadio);
+               elm_radio_group_add(pTmpRadio, pGroupRadio);
+       }
+
+       return pTmpRadio;
+}
+
+static void MpVideoSoundpathSelectSoundPathItemCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if(pUserData == NULL)
+       {
+               VideoLogInfo("[ERR]No have pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nIndex = 0;
+       Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+
+       if(pItem)
+       {
+               nIndex = (int)elm_object_item_data_get(pItem);
+               VideoLogInfo("Select sound path : %s", szSoundPathItems[nIndex]);
+
+               if(!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_SPEAKER))
+               {
+                       int nRet = 0;
+                       nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_SPEAKER);
+
+                       elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+               }
+               else if (!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_EARJACK))
+               {
+                       int nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_WIRED_ACCESSORY);
+                       if(nRet != SOUND_MANAGER_ERROR_NONE)
+                       {
+                               VideoLogInfo("[ERR] set_system_policy(0x%x)", nRet);
+                       }
+                       else
+                       {
+                               elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
+                       }
+               }
+               else
+               {
+                       //int nRet = sound_manager_set_route_policy(SOUND_ROUTE_DEFAULT);
+                       int nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_BLUETOOTH);
+                       if(nRet != SOUND_MANAGER_ERROR_NONE)
+                       {
+                               VideoLogInfo("[ERR] set_system_policy(0x%x)", nRet);
+                       }
+                       else
+                       {
+                               elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH);
+                       }
+               }
+       }
+
+       MpVideoSoundpathDeletePopupHandle();
+}
+
+static void MpVideoSoundpathPopupCb(void *pUserData, Evas_Object *pObject,
+                                   void *pEventInfo)
+{
+       VideoLogInfo("");
+
+       if (pUserData == NULL) {
+               VideoLogInfo("[ERR]No have pUserData");
+               return;
+       }
+
+       MpVideoSoundpathDeletePopupHandle();
+}
+
+static void MpVideoSoundpathCurrentState()
+{
+       VideoLogInfo("");
+
+       bool bBluetoothConnect = 0;
+       char *szBluetoothName = NULL;
+       bIsConnectEarjack = FALSE;
+       bIsConnectBluetooth = FALSE;
+
+       /* Speaker */
+       strncpy(szSoundPathItems[MP_SOUND_PATH_SPEAKER], MP_VIDEO_SOUND_PATH_SPEAKER, STR_LEN_MAX - 1);
+
+       /*  Check and Add earjack sound path. */
+       if(MpUtilIsConnectEarjack())
+       {
+               VideoLogInfo("Connect earjack.");
+               bIsConnectEarjack = TRUE;
+               strncpy(szSoundPathItems[MP_SOUND_PATH_EARJACK], MP_VIDEO_SOUND_PATH_EARJACK, STR_LEN_MAX - 1);
+       }
+       else
+       {
+               VideoLogInfo("No connect earjack.");
+       }
+
+       /*  Add bluetooth stereo sound path. */
+       if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName))
+       {
+               VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+       }
+       else
+       {
+               if(bBluetoothConnect)
+               {
+                       if(szBluetoothName)
+                       {
+                               VideoLogInfo("Connect szBluetoothName : %s", szBluetoothName);
+                               bIsConnectBluetooth = TRUE;
+                               strncpy(szSoundPathItems[MP_SOUND_PATH_BLUETOOTH], szBluetoothName, STR_LEN_MAX - 1);
+                               free(szBluetoothName);
+                               szBluetoothName = NULL;
+                       }
+               }
+               else
+               {
+                       if(szBluetoothName)
+                       {
+                               free(szBluetoothName);
+                               szBluetoothName = NULL;
+                       }
+                       VideoLogInfo("Unactivate Bluetooth stereo A2DP.");
+               }
+       }
+
+}
+
+void MpVideoSoundpathSetRadioButton(void)
+{
+       VideoLogInfo("");
+
+       sound_device_in_e in;
+       sound_device_out_e out;
+
+       sound_manager_get_active_device(&in, &out);
+
+       switch(out)
+       {
+       case SOUND_DEVICE_OUT_SPEAKER:
+               elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+               break;
+
+       case SOUND_DEVICE_OUT_WIRED_ACCESSORY:
+               elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
+               break;
+
+       case SOUND_DEVICE_OUT_BT_A2DP:
+               elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH);
+               break;
+
+       default:
+               elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+               break;
+       }
+
+/*
+       bool bBluetoothConnect = 0;
+       char *szBluetoothName = NULL;
+       sound_route_policy_e nPolicy = 0;
+
+       if(sound_manager_get_route_policy(&nPolicy) != SOUND_MANAGER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Fail to get sound path route policy.");
+               return;
+       }
+
+       if(nPolicy == SOUND_ROUTE_DEFAULT)
+       {
+               VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
+
+               if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName))
+               {
+                       VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+               }
+
+               if(bBluetoothConnect)
+               {
+                       elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH);
+               }
+               else if(MpUtilIsConnectEarjack())
+               {
+                       elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
+               }
+               else
+               {
+                       elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+               }
+       }
+       else if(nPolicy == SOUND_ROUTE_IGNORE_A2DP)
+       {
+               VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP");
+
+               if(MpUtilIsConnectEarjack())
+               {
+                       elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
+               }
+               else
+               {
+                       elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+               }
+       }
+       else
+       {
+               VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY");
+
+               elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+       }
+*/
+}
+
+/*
+ * External function
+ */
+bool MpVideoSoundpathShow(void *pUserData)
+{
+       if (pUserData == NULL) {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoSoundpathIsConnectOtherSoundpath();
+
+       if (!bIsConnectBluetooth && !bIsConnectEarjack) {
+               VideoLogInfo("Soundpath is only speaker.");
+               return FALSE;
+       }
+
+       Evas_Object *pBox = NULL;
+       Evas_Object *pButton = NULL;
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoSoundpathDeletePopupHandle();
+
+       MpUtilSetAlphaOfMainWindow(FALSE);
+
+       /*  Popup handle */
+       //pVideoSoundPathpPopupWindow = (Evas_Object *)MpUtilCreateWindow("soundpath_popup_window");
+       //pVideoSoundPathPopUpHandle = elm_popup_add(pVideoSoundPathpPopupWindow);
+       pVideoSoundPathPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+
+       szSoundPathItems = (char **)calloc(1, sizeof(char *) * MP_VIDEO_SOUND_PATH_NUM);
+       int idx = 0;
+       for(idx = 0; idx < MP_VIDEO_SOUND_PATH_NUM; idx++)
+       {
+               szSoundPathItems[idx] = (char *)calloc(1, STR_LEN_MAX * sizeof(char));
+       }
+
+       MpVideoSoundpathCurrentState();
+
+       elm_object_style_set(pVideoSoundPathPopUpHandle, "menustyle");
+       elm_object_part_text_set(pVideoSoundPathPopUpHandle, "title,text", MP_VIDEO_SOUND_PATH);
+       evas_object_size_hint_weight_set(pVideoSoundPathPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       pButton = elm_button_add(pVideoSoundPathPopUpHandle);
+       elm_object_style_set (pButton, "popup_button/default");
+       elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_BUTTON_CANCEL));
+       elm_object_part_content_set(pVideoSoundPathPopUpHandle, "button1", pButton);
+       evas_object_smart_callback_add(pButton, "clicked", MpVideoSoundpathPopupCb, (void*)pAppData);
+
+       /*  Set item of Genlist. */
+       Elm_Genlist_Item_Class *st_Itc = NULL;
+       st_Itc = elm_genlist_item_class_new();
+       st_Itc->item_style = "1text.1icon.3";
+       st_Itc->func.text_get = (void *)MpVideoSoundpathGetLabelOfGenlistItemCb;
+       st_Itc->func.content_get = (void *)MpVideoSoundpathGetIconOfGenlistItemCb;
+       st_Itc->func.state_get = NULL;
+       st_Itc->func.del = NULL;
+
+       /* Create genlist handle */
+       pGenList = elm_genlist_add(pVideoSoundPathPopUpHandle);
+       evas_object_size_hint_weight_set(pGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(pGenList, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       //MpUtilRotateWindow(MpUtilGetRotationState(), pVideoSoundPathpPopupWindow);
+
+       pGroupRadio = elm_radio_add(pGenList);
+
+       if (bIsConnectBluetooth) {
+               elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_BLUETOOTH, NULL,
+                                       ELM_GENLIST_ITEM_NONE,
+                                       MpVideoSoundpathSelectSoundPathItemCb,
+                                       pAppData);
+       }
+
+       if (bIsConnectEarjack) {
+               elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_EARJACK, NULL,
+                                       ELM_GENLIST_ITEM_NONE,
+                                       MpVideoSoundpathSelectSoundPathItemCb,
+                                       pAppData);
+       }
+
+       elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_SPEAKER, NULL,
+                                       ELM_GENLIST_ITEM_NONE,
+                                       MpVideoSoundpathSelectSoundPathItemCb,
+                                       pAppData);
+
+       elm_genlist_item_class_free(st_Itc);
+
+       MpVideoSoundpathSetRadioButton();
+
+       pBox = elm_box_add(pVideoSoundPathPopUpHandle);
+       if(bIsConnectBluetooth && bIsConnectEarjack)
+       {
+               evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get());
+       }
+       else if(bIsConnectBluetooth || bIsConnectEarjack)
+       {
+               evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 225 * elm_config_scale_get());
+       }
+       else
+       {
+               evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 451 * elm_config_scale_get());
+       }
+
+       elm_box_pack_end(pBox, pGenList);
+       elm_object_content_set(pVideoSoundPathPopUpHandle, pBox);
+
+       evas_object_show(pGenList);
+       evas_object_show(pVideoSoundPathPopUpHandle);
+
+       return TRUE;
+}
+
+void MpVideoSoundpathHide(void)
+{
+       VideoLogInfo("");
+
+       MpVideoSoundpathDeletePopupHandle();
+}
+
+void MpVideoSoundpathRotatePopupWindow(int nRotateMode)
+{
+       /*
+       if (!pVideoSoundPathpPopupWindow) {
+               VideoLogInfo("No exist genlist popup window handle.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpUtilRotateWindow(nRotateMode, pVideoSoundPathpPopupWindow);
+       */
+
+       return;
+}
+
+bool MpVideoSoundpathIsConnectOtherSoundpath(void)
+{
+       VideoLogInfo("");
+
+       bool bBluetoothConnect = 0;
+       char *szBluetoothName = NULL;
+
+       bIsConnectEarjack = FALSE;
+       bIsConnectBluetooth = FALSE;
+
+       if(MpUtilIsConnectEarjack())
+       {
+               VideoLogInfo("Connect earjack.");
+               bIsConnectEarjack= TRUE;
+               return TRUE;
+       }
+       sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName);
+
+       if(bBluetoothConnect)
+       {
+               if(szBluetoothName) {
+                       free(szBluetoothName);
+                       szBluetoothName = NULL;
+               }
+
+               VideoLogInfo("Connect bluetooth.");
+               bIsConnectBluetooth = TRUE;
+               return TRUE;
+       }
+
+       if(szBluetoothName) {
+               free(szBluetoothName);
+               szBluetoothName = NULL;
+       }
+
+       VideoLogInfo("Only spaker.");
+       return FALSE;
+}
+
+int MpVideoSoundpathGetCurrConnectedSoundpath(void)
+{
+       VideoLogInfo("");
+
+       sound_device_in_e in;
+       sound_device_out_e out;
+       MpSoundPathType nType = MP_SOUND_PATH_SPEAKER;
+
+       sound_manager_get_active_device(&in, &out);
+
+       switch(out)
+       {
+       case SOUND_DEVICE_OUT_SPEAKER:
+               nType =  MP_SOUND_PATH_SPEAKER;
+               break;
+
+       case SOUND_DEVICE_OUT_WIRED_ACCESSORY:
+               nType =  MP_SOUND_PATH_EARJACK;
+               break;
+
+       case SOUND_DEVICE_OUT_BT_A2DP:
+               nType =  MP_SOUND_PATH_BLUETOOTH;
+               break;
+
+       default:
+               nType =  MP_SOUND_PATH_SPEAKER;
+               break;
+       }
+
+       return nType;
+
+/*
+       bool bBluetoothConnect = 0;
+       char *szBluetoothName = NULL;
+       sound_route_policy_e nPolicy = 0;
+
+       if(sound_manager_get_route_policy(&nPolicy) != SOUND_MANAGER_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] Fail to get sound path route policy.");
+               return MP_SOUND_PATH_SPEAKER;
+       }
+
+       if(nPolicy == SOUND_ROUTE_DEFAULT)
+       {
+               VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
+
+               if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName))
+               {
+                       VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+               }
+
+               if(bBluetoothConnect)
+               {
+                       return MP_SOUND_PATH_BLUETOOTH;
+               }
+               else if(MpUtilIsConnectEarjack())
+               {
+                       return MP_SOUND_PATH_EARJACK;
+               }
+               else
+               {
+                       return MP_SOUND_PATH_SPEAKER;
+               }
+       }
+       else if(nPolicy == SOUND_ROUTE_IGNORE_A2DP)
+       {
+               VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP");
+
+               if(MpUtilIsConnectEarjack())
+               {
+                       return MP_SOUND_PATH_EARJACK;
+               }
+               else
+               {
+                       return MP_SOUND_PATH_SPEAKER;
+               }
+       }
+       else
+       {
+               VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY");
+
+               return MP_SOUND_PATH_SPEAKER;
+       }
+
+       return MP_SOUND_PATH_SPEAKER;
+*/
+}
diff --git a/src/mp-video-streaming-ctrl.c b/src/mp-video-streaming-ctrl.c
new file mode 100644 (file)
index 0000000..dbb2a36
--- /dev/null
@@ -0,0 +1,818 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <app.h>
+#include <vconf.h>
+#include <string.h>
+#include <vconf-keys.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-type-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-streaming-ctrl.h"
+
+
+#define NETWORK_TIMEOUT                30.0
+
+static MpNetworkType nNetworkStatus = MP_NETWORK_TYPE_OFF;
+static MpNetworkWifiState nWifiState = MP_NETWORK_WIFI_OFF;
+static MpNetworkCellularState nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+
+static Ecore_Pipe      *pEcorePipeHandleForPause = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForResume = NULL;
+
+static Eina_Bool       bIsInitCallbackFunc = FALSE;
+
+static Ecore_Timer     *pNetworkTimeoutTimer = NULL;
+
+
+
+/*
+ * Callback function.
+ */
+
+static void MpVideoStreamingCtrlExitCb(void *pUserData, Evas_Object *pObject,
+                                void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+}
+
+static int MpVideoStreamingCtrlResumeCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pNetworkTimeoutTimer) {
+               ecore_timer_del(pNetworkTimeoutTimer);
+               pNetworkTimeoutTimer = NULL;
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData);
+
+       return 0;
+}
+
+static Eina_Bool MpVideoStreamingCtrlPopupCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return EINA_FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pNetworkTimeoutTimer) {
+               ecore_timer_del(pNetworkTimeoutTimer);
+               pNetworkTimeoutTimer = NULL;
+       }
+
+       MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoStreamingCtrlExitCb);
+
+       return EINA_FALSE;
+}
+
+static int MpVideoStreamingCtrlPauseCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
+
+       if (pNetworkTimeoutTimer) {
+               ecore_timer_del(pNetworkTimeoutTimer);
+               pNetworkTimeoutTimer = NULL;
+       }
+
+       pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT,
+                                               MpVideoStreamingCtrlPopupCb,
+                                               pAppData);
+
+       return 0;
+}
+
+
+static void MpVideoStreamingCtrlNetworkOnOffCb(keynode_t *pKeyNode,void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       char *szkeyname = NULL;
+
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND)) {
+                switch(vconf_keynode_get_int(pKeyNode))
+                {
+               case MP_NETWORK_CLOSE:
+                       VideoLogInfo("MP_NETWORK_CLOSE");
+                       if(pEcorePipeHandleForPause) {
+                               if(!ecore_pipe_write(pEcorePipeHandleForPause,
+                                               pUserData, sizeof(VideoAppData))) {
+                                       VideoLogDebug("FAIL PIPE WRITE");
+                               }
+                       }
+                       break;
+
+               case MP_NETWORK_ON:
+                       VideoLogInfo("MP_NETWORK_ON");
+                       if(pEcorePipeHandleForResume) {
+                               if(!ecore_pipe_write(pEcorePipeHandleForResume,
+                                               pUserData, sizeof(VideoAppData))) {
+                                       VideoLogDebug("FAIL PIPE WRITE");
+                               }
+                       }
+                       break;
+
+               default:
+                       VideoLogInfo("UNKNOWN NETWORK CONFIG");
+                       break;
+                }
+       } else {
+       }
+}
+
+static void MpVideoStreamingCtrlNetworkStatusCb(keynode_t *pKeyNode,void *pUserData)
+{
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoLogInfo("");
+       char *szkeyname = NULL;
+
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_STATUS)) {
+               switch(vconf_keynode_get_int(pKeyNode))
+               {
+               case VCONFKEY_NETWORK_OFF:
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       VideoLogInfo("MP_NETWORK_TYPE_OFF");
+                       /*
+                       if(pEcorePipeHandleForPause) {
+                               if(!ecore_pipe_write(pEcorePipeHandleForPause,
+                                               pUserData, sizeof(VideoAppData))) {
+                                       VideoLogDebug("FAIL PIPE WRITE");
+                               }
+                       }
+                       */
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR:
+                       VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+                       /*
+                       if(pEcorePipeHandleForResume) {
+                               if(!ecore_pipe_write(pEcorePipeHandleForResume,
+                                               pUserData, sizeof(VideoAppData))) {
+                                       VideoLogDebug("FAIL PIPE WRITE");
+                               }
+                       }
+                       nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
+                       */
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI:
+                       VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+                       /*
+                       if(pEcorePipeHandleForResume) {
+                               if(!ecore_pipe_write(pEcorePipeHandleForResume,
+                                               pUserData, sizeof(VideoAppData))) {
+                                       VideoLogDebug("FAIL PIPE WRITE");
+                               }
+                       }
+                       nNetworkStatus = MP_NETWORK_TYPE_WIFI;
+                       */
+                       break;
+
+               default:
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       VideoLogInfo("UNKNOWN NETWORK STATE");
+                       if(pEcorePipeHandleForPause) {
+                               if(!ecore_pipe_write(pEcorePipeHandleForPause,
+                                               pUserData, sizeof(VideoAppData))) {
+                                       VideoLogDebug("FAIL PIPE WRITE");
+                               }
+                       }
+                       break;
+               }
+       }
+       else {
+               if(pEcorePipeHandleForPause) {
+                       if(!ecore_pipe_write(pEcorePipeHandleForPause,
+                                       pUserData, sizeof(VideoAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+       }
+}
+
+static void MpVideoStreamingCtrlChangeIpCb(keynode_t *pKeyNode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       char *szkeyname = NULL;
+       char *szTmp = NULL;
+
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if(szkeyname == NULL) {
+               VideoLogInfo("key name value is NULL");
+               return;
+       }
+
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_IP)) {
+               szTmp = vconf_keynode_get_str(pKeyNode);
+
+               if(szTmp == NULL) {
+                       VideoLogInfo("node string value is NULL");
+                       return;
+               }
+
+               VideoLogInfo("Network ip address : %s", szTmp);
+       }
+       else {
+               VideoLogInfo("Invalid ip address.");
+       }
+}
+
+static void MpVideoStreamingCtrlWiFiStateCb(keynode_t *pKeyNode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       char *szkeyname = NULL;
+
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_WIFI_STATE)) {
+                switch(vconf_keynode_get_int(pKeyNode))
+                {
+               case VCONFKEY_NETWORK_WIFI_OFF:
+                       nWifiState = MP_NETWORK_WIFI_OFF;
+                       VideoLogInfo("MP_NETWORK_WIFI_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
+                       nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
+                       VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI_CONNECTED:
+                       nWifiState = MP_NETWORK_WIFI_CONNECTED;
+                       VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
+                       break;
+
+               default:
+                       nWifiState = MP_NETWORK_WIFI_OFF;
+                       VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
+                       break;
+                }
+       } else {
+               nWifiState = MP_NETWORK_WIFI_OFF;
+               VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
+       }
+}
+
+static void MpVideoStreamingCtrlCellularStateCb(keynode_t *pKeyNode,void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       char *szkeyname = NULL;
+
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_CELLULAR_STATE)) {
+                switch(vconf_keynode_get_int(pKeyNode))
+                {
+               case VCONFKEY_NETWORK_CELLULAR_ON:
+                       nCellularState = MP_NETWORK_CELLULAR_ON;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_ON");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
+                       nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
+                       nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
+                       nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
+                       nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
+                       break;
+
+               default:
+                       nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
+                       break;
+                }
+       } else {
+               nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+               VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
+       }
+}
+
+static void MpVideoStreamingCtrlPipeInit(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(pEcorePipeHandleForPause) {
+               ecore_pipe_del(pEcorePipeHandleForPause);
+               pEcorePipeHandleForPause = NULL;
+       }
+
+       pEcorePipeHandleForPause = ecore_pipe_add(
+                       (Ecore_Pipe_Cb)MpVideoStreamingCtrlPauseCb,
+                       (void *)pAppData);
+
+       if(pEcorePipeHandleForResume) {
+               ecore_pipe_del(pEcorePipeHandleForResume);
+               pEcorePipeHandleForResume = NULL;
+       }
+
+       pEcorePipeHandleForResume = ecore_pipe_add(
+                       (Ecore_Pipe_Cb)MpVideoStreamingCtrlResumeCb,
+                       (void *)pAppData);
+
+}
+
+/*
+ * Internal function.
+ */
+
+bool MpVideoStreamingCtrlSetNotifyNetworkOnOff(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND,
+                                       MpVideoStreamingCtrlNetworkOnOffCb,
+                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set network on/off notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyNetworkStatus(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS,
+                                                                       MpVideoStreamingCtrlNetworkStatusCb,
+                                                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set network status notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyChangingIp(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_IP,
+                                                                       MpVideoStreamingCtrlChangeIpCb,
+                                                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set ip address changing notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyWiFiState(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_WIFI_STATE,
+                                                                       MpVideoStreamingCtrlWiFiStateCb,
+                                                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set wifi state notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyCellularState(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CELLULAR_STATE,
+                                                                       MpVideoStreamingCtrlCellularStateCb,
+                                                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set cellular notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+/*
+ * External function.
+ */
+bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress)
+{
+       VideoLogInfo("");
+
+       char *szTmp = NULL;
+
+       szTmp = vconf_get_str(VCONFKEY_NETWORK_IP);
+       if (szTmp) {
+               memset(szRetIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+               strncpy(szRetIpAddress, szTmp, STR_LEN_MAX - 1);
+
+               VideoLogInfo("Current network ip address : %s", szRetIpAddress);
+
+               if(szTmp)
+                       free(szTmp);
+
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+bool MpVideoStreamingCtrlGetProxy(char* szRetProxy)
+{
+       VideoLogInfo("");
+
+       char *szTmp = NULL;
+
+       szTmp = vconf_get_str(VCONFKEY_NETWORK_PROXY);
+       if (szTmp) {
+               memset(szRetProxy, 0, sizeof(char) * STR_LEN_MAX);
+               strncpy(szRetProxy, szTmp, STR_LEN_MAX - 1);
+
+               VideoLogInfo("Current network ip address : %s", szRetProxy);
+
+               if(szTmp)
+                       free(szTmp);
+
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+bool MpVideoStreamingCtrlIsNetworkOn(void)
+{
+       VideoLogInfo("");
+
+       int ntmpCheckNetworkON = 0;
+
+       if (!vconf_get_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, &ntmpCheckNetworkON)) {
+               switch(ntmpCheckNetworkON)
+               {
+               case MP_NETWORK_CLOSE:
+                       VideoLogInfo("Network close.");
+                       return FALSE;
+
+               case MP_NETWORK_ON:
+                       VideoLogInfo("Network on.");
+                       return TRUE;
+               }
+       } else {
+               VideoLogInfo("Network close.");
+       }
+
+       return FALSE;
+}
+
+int MpVideoStreamingCtrlGetNetworkStatus(void)
+{
+       VideoLogInfo("");
+
+       int ntmpGetNetworkStatus = 0;
+
+       if (!vconf_get_int(VCONFKEY_NETWORK_STATUS, &ntmpGetNetworkStatus)) {
+               switch(ntmpGetNetworkStatus)
+               {
+               case VCONFKEY_NETWORK_OFF:
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       VideoLogInfo("MP_NETWORK_TYPE_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR:
+                       nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
+                       VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI:
+                       nNetworkStatus = MP_NETWORK_TYPE_WIFI;
+                       VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+                       break;
+
+               default:
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       VideoLogInfo("MP_NETWORK_TYPE_OFF - default");
+                       break;
+               }
+       } else {
+               nNetworkStatus = MP_NETWORK_TYPE_OFF;
+               VideoLogInfo("MP_NETWORK_TYPE_OFF - invalid value");
+       }
+
+       return nNetworkStatus;
+}
+
+int MpVideoStreamingCtrlGetWifiState()
+{
+       VideoLogInfo("");
+
+       int ntmpGetWifiState = 0;
+
+       if (!vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &ntmpGetWifiState)) {
+               switch(ntmpGetWifiState)
+               {
+               case VCONFKEY_NETWORK_WIFI_OFF:
+                       nWifiState = MP_NETWORK_WIFI_OFF;
+                       VideoLogInfo("MP_NETWORK_WIFI_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
+                       nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
+                       VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI_CONNECTED:
+                       nWifiState = MP_NETWORK_WIFI_CONNECTED;
+                       VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
+                       break;
+
+               default:
+                       nWifiState = MP_NETWORK_WIFI_OFF;
+                       VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
+                       break;
+                }
+       } else {
+               nWifiState = MP_NETWORK_WIFI_OFF;
+               VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
+       }
+
+       return nWifiState;
+
+}
+
+int MpVideoStreamingCtrlGetCellularState()
+{
+       VideoLogInfo("");
+
+       int ntmpGetCellularState = 0;
+
+       if (!vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &ntmpGetCellularState)) {
+               switch(ntmpGetCellularState)
+               {
+               case VCONFKEY_NETWORK_CELLULAR_ON:
+                       nCellularState = MP_NETWORK_CELLULAR_ON;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_ON");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
+                       nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
+                       nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
+                       nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
+                       nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
+                       break;
+
+               default:
+                       nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
+                       break;
+               }
+       } else {
+               nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+               VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
+       }
+
+       return nCellularState;
+}
+
+void MpVideoStreamingCtrlDestroy(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (pNetworkTimeoutTimer) {
+               ecore_timer_del(pNetworkTimeoutTimer);
+               pNetworkTimeoutTimer = NULL;
+       }
+
+       if(pEcorePipeHandleForPause) {
+               ecore_pipe_del(pEcorePipeHandleForPause);
+               pEcorePipeHandleForPause = NULL;
+       }
+
+       if(pEcorePipeHandleForResume) {
+               ecore_pipe_del(pEcorePipeHandleForResume);
+               pEcorePipeHandleForResume = NULL;
+       }
+}
+
+
+
+bool MpVideoStreamingCtrlInit(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       char szTmp[STR_LEN_MAX] = {0};
+       bool bNetworkState = FALSE;
+       
+       if(bIsInitCallbackFunc == EINA_FALSE) {
+               MpVideoStreamingCtrlPipeInit(pUserData);
+
+               MpVideoStreamingCtrlSetNotifyNetworkStatus(pUserData);
+               MpVideoStreamingCtrlSetNotifyChangingIp(pUserData);
+               MpVideoStreamingCtrlSetNotifyWiFiState(pUserData);
+               MpVideoStreamingCtrlSetNotifyCellularState(pUserData);
+
+               bIsInitCallbackFunc = EINA_TRUE;
+       }
+
+       if (pNetworkTimeoutTimer) {
+               ecore_timer_del(pNetworkTimeoutTimer);
+               pNetworkTimeoutTimer = NULL;
+       }
+
+       switch(MpVideoStreamingCtrlGetNetworkStatus())
+       {
+       case MP_NETWORK_TYPE_OFF:
+               VideoLogInfo("MP_NETWORK_TYPE_OFF");
+               pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT,
+                                               MpVideoStreamingCtrlPopupCb,
+                                               pAppData);
+               bNetworkState = FALSE;
+               break;
+
+       case MP_NETWORK_TYPE_CELLULAR:
+               VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+               if(MpVideoStreamingCtrlGetCellularState() == MP_NETWORK_CELLULAR_ON)
+                       bNetworkState = TRUE;
+               break;
+
+       case MP_NETWORK_TYPE_WIFI:
+               VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+               if(MpVideoStreamingCtrlGetWifiState() == MP_NETWORK_WIFI_CONNECTED)
+                       bNetworkState = TRUE;
+               break;
+       }
+
+       if(bNetworkState) {
+               MpVideoStreamingCtrlGetIpAddress(szTmp);
+               VideoLogInfo("Current IP Address : %s", szTmp);
+
+               memset(szTmp, 0, STR_LEN_MAX);
+               MpVideoStreamingCtrlGetProxy(szTmp);
+               VideoLogInfo("Current Proxy Address : %s", szTmp);
+
+               memset(pAppData->szProxyAddress, 0, STR_LEN_MAX);
+               strncpy(pAppData->szProxyAddress, szTmp, STR_LEN_MAX - 1);
+       }
+
+       return bNetworkState;
+}
diff --git a/src/mp-video-streaming-view.c b/src/mp-video-streaming-view.c
new file mode 100644 (file)
index 0000000..b084677
--- /dev/null
@@ -0,0 +1,718 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <aul.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <syspopup_caller.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-progressbar.h"
+#include "mp-video-animation-ctrl.h"
+#include "mp-video-streaming-view.h"
+#include "mp-video-service-ctrl.h"
+
+#define CTRL_PANEL_SHOW_TIME                                   5.0
+
+static Evas_Object *pNaviFrameHandle = NULL;
+static Evas_Object *pStreamingViewNaviControlBar = NULL;
+static Evas_Object *pBufferingAnimationHandle = NULL;
+
+static Evas_Object *pStreamingViewLayout = NULL;
+static Evas_Object *pStreamingViewPanelEdj = NULL;
+static Evas_Object *pStreamingViewCtrlEdj = NULL;
+static Evas_Object *pStreamingViewOptionEdj = NULL;
+static Evas_Object *pStreamingViewProgressbarEdj = NULL;
+
+static Ecore_Timer *pStreamingViewCtrlPanelHideTimer = NULL;
+static Elm_Object_Item *pNaviFrameItemStreamingView = NULL;
+
+static ChangeStreamingViewCbFunc pChangeViewUserCbFunc = NULL;
+
+static bool bIsStreamingViewScreenLock = FALSE;
+static bool bSwitchStreamingViewUI = TRUE;
+static bool bIsStreamingHightQuality = TRUE;
+static bool bIsChangeResolution = FALSE;
+static bool bIsStreamingViewOnlyAudio = FALSE;
+static VideoStreamingViewState nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+
+/*
+ *     Callback function.
+ */
+
+static void MpVideoStreamingViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) {
+               VideoLogInfo("Press Pause button.");
+
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               }
+       }
+}
+
+static void MpVideoStreamingViewPressResumeButtonCb(void *pUserData,
+                                                   Evas_Object *pObject,
+                                                   const char *szEmission,
+                                                   const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
+               VideoLogInfo("Press Resume/Play button.");
+
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       }
+}
+
+static void MpVideoStreamingViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       edje_object_signal_callback_del(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb);
+
+       MpVideoStreamingViewPop(pNaviFrameHandle, pUserData);
+
+       edje_object_signal_callback_add(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb, pUserData);
+}
+
+static void MpVideoStreamingViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogError("[ERR] No Exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData);
+}
+
+static void MpVideoStreamingViewVolumeButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+       //syspopup_launch("volume", NULL);
+}
+
+static Eina_Bool MpVideoStreamingViewCtrlPanelHideCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No Exist pUserData.");
+               return EINA_FALSE;
+       }
+
+       if(bIsStreamingViewOnlyAudio)
+       {
+               VideoLogInfo("Not hide control panel and UI because of audio only.");
+               return EINA_FALSE;
+       }
+
+       if (MpVideoStreamingViewGetBufferingState()) {
+               VideoLogInfo("skip for Buffering");
+               return EINA_TRUE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pStreamingViewCtrlPanelHideTimer) {
+               ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+               pStreamingViewCtrlPanelHideTimer = NULL;
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+
+       return EINA_FALSE;
+
+}
+
+static void MpVideoStreamingViewChangedCameraStatusCb(void *pNode, void *pUserData)
+{
+       if(!pUserData)
+{
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(!MpUtilIsCameraOff())
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+               }
+
+static void MpVideoStreamingViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogError("[ERR]");
+               return;
+               }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
+
+       evas_object_hide(pStreamingViewLayout);
+       }
+
+static void MpVideoStreamingViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogError("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData);
+}
+
+
+/*
+ * Internal function
+ */
+
+void MpVideoStreamingViewInitLayout(void *pParent, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pStreamingViewLayout = elm_layout_add(pParent);
+       if (pStreamingViewLayout) {
+               Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+               elm_layout_file_set(pStreamingViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
+
+               // Option Button (Screen size, Share, Info, 5.1 Surround)
+               pStreamingViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
+               elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pStreamingViewOptionEdj);
+               edje_object_signal_emit(pStreamingViewOptionEdj, SIGNAL_OPTION_MODE_WEB, "*");
+
+               pStreamingViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
+               pStreamingViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
+               pBufferingAnimationHandle = MpVideoAnimationCtrlInit(pMainWindowEvas);
+
+               edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_CONTROL, pStreamingViewCtrlEdj);
+               elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_ANIMATION, pBufferingAnimationHandle);
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
+
+               MpVideoAnimationCtrlShow();
+
+               pStreamingViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
+               MpVideoProgressbarSetSkipEvent(TRUE);
+               if (pStreamingViewProgressbarEdj) {
+                       edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pStreamingViewProgressbarEdj);
+               } else {
+                       VideoLogInfo("Progressbar edj handle is null.");
+               }
+
+               elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_CONTROL, pStreamingViewPanelEdj);
+
+               edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_MODE_STREAMING, "*");
+
+               edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+                                       SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
+                                       SIGNAL_CONTROL_PART_PLAY_BUTTON,
+                                       (void *)MpVideoStreamingViewPressPauseButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+                                       SIGNAL_CONTROL_PLAY_RESUME_PRESS,
+                                       SIGNAL_CONTROL_PART_PLAY_BUTTON,
+                                       (void *)MpVideoStreamingViewPressResumeButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+                                       SIGNAL_CONTROL_BACK_BUTTON_DOWN,
+                                       SIGNAL_CONTROL_PART_BACK_BUTTON,
+                                       (void *)MpVideoStreamingViewBackButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+                                       SIGNAL_CONTROL_VOL_BUTTON_DOWN,
+                                       SIGNAL_CONTROL_PART_VOL_BUTTON,
+                                       (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+                                       SIGNAL_CONTROL_VOL_BUTTON_UP,
+                                       SIGNAL_CONTROL_PART_VOL_BUTTON,
+                                       (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+                                       SIGNAL_CONTROL_MUTE_BUTTON_DOWN,
+                                       SIGNAL_CONTROL_PART_MUTE_BUTTON,
+                                       (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+                                       SIGNAL_CONTROL_MUTE_BUTTON_UP,
+                                       SIGNAL_CONTROL_PART_MUTE_BUTTON,
+                                       (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData);
+
+               MpUtilRegisteCameraStatusCbFunc((void *)MpVideoStreamingViewChangedCameraStatusCb, pUserData);
+       }
+}
+
+void MpVideoStreamingViewInit(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pNaviFrameHandle|| !pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       MpVideoStreamingViewInitLayout(pNaviFrameHandle, pUserData);
+}
+
+
+
+/*
+ * External function
+ */
+void MpVideoStreamingViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeStreamingViewCbFunc pChangeViewCb)
+{
+       VideoLogInfo("");
+
+       pNaviFrameHandle = pNaviFrame;
+       pChangeViewUserCbFunc = pChangeViewCb;
+
+       MpVideoStreamingViewInit(pUserData);
+
+       pNaviFrameItemStreamingView = elm_naviframe_item_push(pNaviFrameHandle,MP_STREAMING_PLAYER_STR, NULL, NULL, pStreamingViewLayout, "video/1line");
+
+       elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoStreamingViewShowLayoutFinish, pUserData);
+       elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoStreamingViewHideLayoutFinish, pUserData);
+
+       int nRotate = MpUtilGetRotationState();
+       if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
+       {
+               MpVideoStreamingViewPortrate();
+       }
+       else
+       {
+               MpVideoStreamingViewLandscape();
+       }
+
+
+}
+
+void MpVideoStreamingViewPop(void *pNaviFrame, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData);
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+       if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+       else
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+}
+
+void MpVideoStreamingViewDestroy(void *pUserData)
+{
+       VideoLogInfo("");
+
+       MpVideoStreamingViewHideControlPanel(pUserData);
+       MpVideoProgressbarDestroy();
+       MpVideoAnimationCtrlDestroy();
+
+       pNaviFrameHandle = NULL;
+       pBufferingAnimationHandle = NULL;
+       pNaviFrameItemStreamingView = NULL;
+       pStreamingViewProgressbarEdj = NULL;
+
+       if (pStreamingViewNaviControlBar) {
+               evas_object_del(pStreamingViewNaviControlBar);
+               pStreamingViewNaviControlBar = NULL;
+       }
+
+       if (pStreamingViewLayout) {
+               evas_object_del(pStreamingViewLayout);
+               pStreamingViewLayout = NULL;
+       }
+
+       if (pStreamingViewPanelEdj) {
+               evas_object_del(pStreamingViewPanelEdj);
+               pStreamingViewPanelEdj = NULL;
+       }
+
+       if (pStreamingViewCtrlEdj) {
+               evas_object_del(pStreamingViewCtrlEdj);
+               pStreamingViewCtrlEdj = NULL;
+       }
+
+       if (pStreamingViewCtrlPanelHideTimer) {
+               ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+               pStreamingViewCtrlPanelHideTimer = NULL;
+       }
+
+       if (pStreamingViewOptionEdj) {
+               evas_object_del(pStreamingViewOptionEdj);
+               pStreamingViewOptionEdj = NULL;
+       }
+
+       bIsStreamingViewScreenLock = FALSE;
+       bIsStreamingViewOnlyAudio = FALSE;
+
+       bSwitchStreamingViewUI = TRUE;
+       nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+
+       bIsStreamingHightQuality = TRUE;
+       bIsChangeResolution = FALSE;
+}
+
+void MpVideoStreamingViewInitAfterBeginOfStream(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       MpVideoProgressbarSetSkipEvent(FALSE);
+       MpVideoProgressbarBeginOfStream((void *)pAppData);
+
+       if (pAppData->nDuration > 1) {
+               char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
+               snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT,
+                        PLAY_TIME_ARGS(pAppData->nDuration / 1000));
+               MpVideoProgressbarUpdateDurationTime(szDurationTime);
+       }
+
+       MpVideoAnimationCtrlHide();
+       edje_object_signal_emit(_EDJ(pStreamingViewLayout),
+                                               SIGNAL_MAIN_ANIMATION_HIDE, "*");
+
+       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData);
+
+       if(pAppData->nDuration < 1)
+               pAppData->nDuration = 1;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+}
+
+void MpVideoStreamingViewUpdatePauseKey(void)
+{
+       VideoLogInfo("");
+
+       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
+}
+
+void MpVideoStreamingViewUpdateResumeKey(void)
+{
+       VideoLogInfo("");
+
+       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+}
+
+void MpVideoStreamingViewShowControlPanel(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!pStreamingViewPanelEdj) {
+               VideoLogInfo("No exist play control panel edc.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) {
+               VideoLogInfo("");
+               return;
+       }
+
+       bSwitchStreamingViewUI = TRUE;
+       MpVideoProgressbarCreateTimer((void *)pAppData);
+
+       evas_object_show(pStreamingViewLayout);
+
+       elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm");
+
+       int nRotate = MpUtilGetRotationState();
+       if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
+       {
+               elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*");
+       }
+       else
+       {
+               elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*");
+       }
+
+       if (pStreamingViewCtrlPanelHideTimer) {
+               ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+               pStreamingViewCtrlPanelHideTimer = NULL;
+       }
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsStreamingViewOnlyAudio == TRUE) {
+       } else {
+               pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData);
+       }
+
+       MpVideoStreamingViewActivate();
+}
+
+void MpVideoStreamingViewHideControlPanel(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) {
+               VideoLogInfo("");
+               return;
+       }
+
+       if (!pStreamingViewPanelEdj) {
+               VideoLogInfo("No exist play control panel edc.");
+               return;
+       }
+
+       if(bIsStreamingViewOnlyAudio)
+       {
+               VideoLogInfo("Not hide control panel and UI because of audio only.");
+               return;
+       }
+
+       bSwitchStreamingViewUI = FALSE;
+       MpVideoProgressbarDeleteTimer();
+
+       elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
+       elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*");
+
+       if (pStreamingViewCtrlPanelHideTimer) {
+               ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+               pStreamingViewCtrlPanelHideTimer = NULL;
+       }
+}
+
+void MpVideoStreamingViewActivate(void)
+{
+       VideoLogInfo("");
+
+       nStreamingViewState = MP_STREAMING_VIEW_STATE_ACTIVATE;
+}
+
+void MpVideoStreamingViewUnactivate(void)
+{
+       VideoLogInfo("");
+
+       nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+}
+
+void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide)
+{
+       VideoLogInfo("");
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (MpVideoStreamingViewGetBufferingState())
+       {
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
+       }
+       else
+       {
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
+               if(bLayoutHide)
+               {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
+               }
+       }
+}
+
+void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate)
+{
+       if (nSetBufferingRate > 95) {
+               MpVideoAnimationCtrlHide();
+               MpVideoProgressbarSetSkipEvent(FALSE);
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
+       } else {
+               MpVideoProgressbarSetSkipEvent(TRUE);
+               MpVideoAnimationCtrlShow();
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
+
+               if(nSetBufferingRate >= 0)
+                       MpVideoAnimationCtrlSetPercent(nSetBufferingRate);
+       }
+}
+
+bool MpVideoStreamingViewGetBufferingState(void)
+{
+       VideoLogInfo("");
+
+       return MpVideoAnimationCtrlGetActiveState();
+}
+
+bool MpVideoStreamingViewIsTopView(void)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pTmpContents = NULL;
+       Elm_Object_Item *pTmpItem = NULL;
+
+       if (!pNaviFrameHandle) {
+               VideoLogInfo("[ERR] No exist navigationbar handle.");
+               return FALSE;
+       }
+
+       pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
+       pTmpContents = elm_object_item_content_get(pTmpItem);
+       if (pTmpContents) {
+               if (pTmpContents == pStreamingViewLayout) {
+                       VideoLogInfo("Streaming display view is staing in top view.");
+                       return TRUE;
+               } else {
+                       VideoLogInfo("Streaming display view is not staied in top view.");
+                       return FALSE;
+               }
+       } else {
+               VideoLogInfo("[ERR] No exist naviFrame top item.");
+               return FALSE;
+       }
+
+       return FALSE;
+}
+
+void MpVideoStreamingViewShowNocontentImage(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (pStreamingViewLayout) {
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
+       }
+
+       bIsStreamingViewOnlyAudio = TRUE;
+
+       MpVideoStreamingViewShowControlPanel(pUserData);
+}
+
+void MpVideoStreamingViewHideNocontentImage(void)
+{
+       VideoLogInfo("");
+
+       if (pStreamingViewLayout) {
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
+       }
+
+       bIsStreamingViewOnlyAudio = FALSE;
+}
+
+void MpVideoStreamingViewPortrate(void)
+{
+       VideoLogInfo("");
+
+       elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
+       edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
+       edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
+       edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
+       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_PORTRATE_MODE, "*");
+}
+
+void MpVideoStreamingViewLandscape(void)
+{
+       VideoLogInfo("");
+
+       elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
+       edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
+       edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
+       edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
+       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE, "*");
+}
+
+void MpVideoStreamingViewUpdateProgressBar(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       MpVideoProgressbarCreateTimer(pUserData);
+
+}
diff --git a/src/mp-video-subtitle-ctrl.c b/src/mp-video-subtitle-ctrl.c
new file mode 100755 (executable)
index 0000000..b497c4f
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-service-ctrl.h"
+#include "mp-video-subtitle-ctrl.h"
+
+#define MP_VIDEO_SUBTITLE_MENU_NUM             2
+
+#define MP_SUBTITLE_FONT_SMALL                 22
+#define MP_SUBTITLE_FONT_MEDIUM                        35
+#define MP_SUBTITLE_FONT_LARGE                 48
+#define MP_SUBTITLE_MIN_VALUE                  3
+
+
+/* subtitle edc layout */
+static Evas_Object *pSubTitleEdj = NULL;
+
+static bool bExistSubtitleFile = FALSE;
+static char *szSubtitleFileUri = NULL;
+static char szSubTitleExtWildkey[MP_SUBTITLE_TYPE_MAX][5] = { ".srt", ".sub", ".smi" };
+
+static MpSubTitleSizeType nSubtitleSize = MP_SUBTITLE_SIZE_SMALL;
+
+static bool bShowStatus = TRUE;
+
+
+/*
+ * Internal function
+ */
+
+static void MpVideoSubtitleCtrlClear(void)
+{
+       VideoLogInfo("");
+
+       bExistSubtitleFile = FALSE;
+
+       if(szSubtitleFileUri)
+       {
+               free(szSubtitleFileUri);
+               szSubtitleFileUri = NULL;
+       }
+
+       if(pSubTitleEdj) {
+               evas_object_del(pSubTitleEdj);
+               pSubTitleEdj = NULL;
+       }
+
+}
+
+/*
+ * External function
+ */
+
+bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath)
+{
+       if (!szMediaUriPath) {
+               VideoLogInfo("No Exist szMediaUri.");
+               return FALSE;
+       }
+
+       if (strlen(szMediaUriPath) < 1) {
+               VideoLogInfo("No Exist szMediaUri.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       struct stat buf;
+       int nCount = 0;
+       int nStrLength = 0;
+
+       bExistSubtitleFile = FALSE;
+
+       if(szSubtitleFileUri == NULL)
+       {
+               szSubtitleFileUri = calloc(1, sizeof(char) * STR_LEN_MAX);
+       }
+
+       char *szExt;
+
+       szExt = strrchr(szMediaUriPath, '.');
+
+       if (szExt) {
+               nStrLength  = strlen(szMediaUriPath) - strlen(szExt);
+       }
+       else {
+               nStrLength = strlen(szMediaUriPath);
+       }
+
+       for (nCount = 0; nCount < MP_SUBTITLE_TYPE_MAX; nCount++)
+       {
+               memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+               strncpy(szSubtitleFileUri, szMediaUriPath, nStrLength);
+               strcat(szSubtitleFileUri, szSubTitleExtWildkey[nCount]);
+               VideoLogInfo("%s",szSubtitleFileUri);
+
+               if (!stat(szSubtitleFileUri, &buf)) {
+                       VideoLogInfo("Success finding subtitle file. - %d", nCount);
+                       bExistSubtitleFile = TRUE;
+                       break;
+               } else {
+                       memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+               }
+       }
+
+       if (!bExistSubtitleFile) {
+               VideoLogInfo("Fail finding subtitle file.");
+       }
+
+       return bExistSubtitleFile;
+}
+
+void *MpVideoSubtitleCtrlInit(void *pUserData, void *pParent)
+{
+       if (pUserData == NULL) {
+               VideoLogInfo("[ERR]No have pUserData");
+               return NULL;
+       }
+
+       if (pParent == NULL) {
+               VideoLogInfo("[ERR]No have pParent");
+               return NULL;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoSubtitleCtrlClear();
+
+       if(!MpVideoSubtitleCtrlCheckSubtitleFile(pAppData->szMediaUri))         {
+               VideoLogInfo("Sub tiltle file is not exist.");
+       }
+
+       pSubTitleEdj = elm_layout_add(pParent);
+       elm_layout_file_set(pSubTitleEdj, VIDEO_PLAYER_SUBTITLE_EDJ, SUBTITLE_EDJ_GROUP);
+
+       return (void *)pSubTitleEdj;
+}
+
+void MpVideoSubtitleCtrlDestroy(void)
+{
+       VideoLogInfo("");
+
+       MpVideoSubtitleCtrlClear();
+}
+
+void MpVideoSubtitleCtrlUpdate(char *szTxt)
+{
+       VideoLogInfo("%d",strlen(szTxt));
+
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               return;
+       }
+
+       if(pSubTitleEdj == NULL) {
+               VideoLogInfo("Subtitle handle is NULL");
+               return;
+       }
+
+       edje_object_part_text_set(_EDJ(pSubTitleEdj), "subtitle.label.txt",szTxt);
+}
+
+
+bool MpVideoSubtitleCtrlIsExistSubtitle(void)
+{
+       VideoLogInfo("");
+
+       return bExistSubtitleFile;
+}
+
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUri)
+{
+       VideoLogInfo("");
+
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               return FALSE;
+       }
+
+       if (strlen(szSubtitleFileUri) < 1) {
+               VideoLogInfo("[ERR]No have szSubtitleFileUri");
+               return FALSE;
+       }
+
+       strncpy(szSubtitleUri, szSubtitleFileUri, STR_LEN_MAX -1);
+
+       return TRUE;
+}
+
+void MpVideoSubtitleCtrlSetLayoutShow(bool bShow)
+{
+       VideoLogInfo("");
+
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               return;
+       }
+
+       if(pSubTitleEdj == NULL) {
+               VideoLogInfo("Subtitle handle is NULL");
+               return;
+       }
+       if(bShow) {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LAYOUT_SHOW, "*");
+       }
+       else {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LAYOUT_HIDE, "*");
+       }
+
+}
+
+void MpVideoSubtitleCtrlSetSizeMode(int nSizeMode)
+{
+       VideoLogInfo("");
+
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               return;
+       }
+
+       if(pSubTitleEdj == NULL) {
+               VideoLogInfo("Subtitle handle is NULL");
+               return;
+       }
+
+       MpSubTitleSizeType type = nSizeMode;
+
+       if(type == MP_SUBTITLE_SIZE_LARGE) {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_LARGE, "*");
+       }
+       else if(type == MP_SUBTITLE_SIZE_MEDIUM) {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_MEDIUM, "*");
+       }
+       else if(type == MP_SUBTITLE_SIZE_SMALL) {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_SMALL, "*");
+       }
+
+       nSubtitleSize = type;
+
+}
+
+int MpVideoSubtitleCtrlGetSizeMode()
+{
+       VideoLogInfo("");
+
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               return -1;
+       }
+
+       if(pSubTitleEdj == NULL) {
+               VideoLogInfo("Subtitle handle is NULL");
+               return -1;
+       }
+
+       return nSubtitleSize;
+}
+
+
+
+void MpVideoSubtitleCtrlSetRotate(int nRotateStatus)
+{
+       VideoLogInfo("");
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               return;
+       }
+
+       if(pSubTitleEdj == NULL) {
+               VideoLogInfo("Subtitle handle is NULL");
+               return;
+       }
+
+       if(nRotateStatus == VIDEO_ROTATE_PORTRAIT_NORMAL ||
+               nRotateStatus == VIDEO_ROTATE_PORTRAIT_REVERSE) {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_PORTRATE_MODE, "*");
+
+       }
+       else if(nRotateStatus == VIDEO_ROTATE_LANDSCAPE_NORMAL ||
+               nRotateStatus == VIDEO_ROTATE_LANDSCAPE_REVERSE) {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LANDSCAPE_MODE, "*");
+       }
+}
+
+void MpVideoSubtitleCtrlSetShowStatus(bool bShow)
+{
+       VideoLogInfo("");
+
+       if(pSubTitleEdj == NULL) {
+               VideoLogInfo("Subtitle handle is NULL");
+               return;
+       }
+       if(bShowStatus != bShow) {
+               bShowStatus = bShow;
+               if(bShow) {
+                       edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_TXT_SHOW, "*");
+
+               }
+               else {
+                       edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_TXT_HIDE, "*");
+               }
+       }
+}
+
+bool MpVideoSubtitleCtrlGetShowStatus()
+{
+       VideoLogInfo("");
+
+       if(pSubTitleEdj == NULL) {
+               VideoLogInfo("Subtitle handle is NULL");
+               return FALSE;
+       }
+
+       return bShowStatus;
+}
+
+void MpVideoSubtitleCtrlSetLockScreen(bool bShow)
+{
+       VideoLogInfo("");
+
+       if(pSubTitleEdj == NULL) {
+               VideoLogInfo("Subtitle handle is NULL");
+               return;
+       }
+
+       if(bShow) {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_LOCKSCREEN_SHOW, "*");
+       }
+       else {
+               edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_LOCKSCREEN_HIDE, "*");
+       }
+
+}
+
diff --git a/src/mp-video-view-mgr.c b/src/mp-video-view-mgr.c
new file mode 100644 (file)
index 0000000..f06ce87
--- /dev/null
@@ -0,0 +1,1370 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#include <app.h>
+#include <syspopup_caller.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-video-view-mgr.h"
+#include "mp-video-type-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-display-view.h"
+#include "mp-video-string-define.h"
+#include "mp-video-streaming-view.h"
+#include "mp-video-service-ctrl.h"
+#include "mp-video-volume-ctrl.h"
+
+#define MULTIMEDIA_KEY_LONG_PRESS_INTERVAL             4.0
+#define DETAIL_POPUP_STR_LEN_MAX                               20
+#define LAYOUT_VISIBLE_OFF_TIMER_INTERVAL              1.0
+
+
+static Evas_Object *pMainLayout = NULL;
+static Evas_Object *pBackGround = NULL;
+static Evas_Object *pNaviFrame = NULL;
+static Evas_Object *pConformant = NULL;
+static Evas_Object *pGesture = NULL;
+static Evas_Object *pEventRect = NULL;
+static Evas_Object *pDisplayViewVolume = NULL;
+
+static MpVideoRotateType nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL;
+
+static Ecore_Event_Handler *pHWKeyEventDownHandler = NULL;
+static Ecore_Event_Handler *pHWKeyEventUpHandler = NULL;
+
+static bool bIsLongPressForward = FALSE;
+static bool bIsKeyCancle = FALSE;
+static bool bShowLayout = FALSE;
+
+static Ecore_Timer *pLongPressSpeedPlayingTimer = NULL;
+static Ecore_Timer *pLongPressVolumeKeyTimer = NULL; 
+static Ecore_Timer *pLayoutVisibleOffTimer = NULL;
+
+static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData);
+static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData);
+static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData);
+
+/*
+ * Callback function.
+ */
+static Eina_Bool MpVideoViewCtrlLayoutVisibleOffTimerCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoLogInfo("");
+
+       if(pLayoutVisibleOffTimer)
+       {
+               ecore_timer_del(pLayoutVisibleOffTimer);
+               pLayoutVisibleOffTimer = NULL;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       MpUtilLayoutVisibleOff(pAppData->pMainWindow);
+
+       return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoViewCtrlVolumeKeyDownTimerCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewCtrlShowVolume();
+       int nVol;
+       nVol = MpVideoVolumeCtrlGetVolume() - 1;
+       MpVideoVolumeCtrlSetVolume(nVol);
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool MpVideoViewCtrlVolumeKeyUpTimerCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewCtrlShowVolume();
+       int nVol;
+       nVol = MpVideoVolumeCtrlGetVolume() + 1;
+       MpVideoVolumeCtrlSetVolume(nVol);
+
+       return EINA_TRUE;
+}
+
+
+static Eina_Bool MpVideoViewCtrlHardkeyDownCb(void *pUserData, int nType, void *pEvent)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoLogInfo("");
+
+       Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("Key down : %s", pKeyEvent->keyname);
+
+       if(!strcmp(pKeyEvent->keyname, END_KEY))
+       {
+               VideoLogInfo("Back(End) key");
+       }
+       else if(!strcmp(pKeyEvent->keyname, HOME_KEY))
+       {
+               VideoLogInfo("Home key");
+       }
+       else if(!strcmp(pKeyEvent->keyname, VOLUME_DOWN_KEY))
+                               {
+               MpVideoViewCtrlShowVolume();
+               int nVol;
+               nVol = MpVideoVolumeCtrlGetVolume() - 1;
+               MpVideoVolumeCtrlSetVolume(nVol);
+
+               if(pLongPressVolumeKeyTimer)
+                                       {
+                       ecore_timer_del(pLongPressVolumeKeyTimer);
+                       pLongPressVolumeKeyTimer = NULL;
+                               }
+               pLongPressVolumeKeyTimer = ecore_timer_add(0.3, MpVideoViewCtrlVolumeKeyDownTimerCb, (void *)pAppData); 
+                                       }
+       else if(!strcmp(pKeyEvent->keyname, VOLUME_UP_KEY))
+                                       {
+               MpVideoViewCtrlShowVolume();
+               int nVol;
+               nVol = MpVideoVolumeCtrlGetVolume() + 1;
+               MpVideoVolumeCtrlSetVolume(nVol);
+
+               if(pLongPressVolumeKeyTimer)
+                               {
+                       ecore_timer_del(pLongPressVolumeKeyTimer);
+                       pLongPressVolumeKeyTimer = NULL;
+                               }
+
+               pLongPressVolumeKeyTimer = ecore_timer_add(0.3, MpVideoViewCtrlVolumeKeyUpTimerCb, (void *)pAppData);
+                       }
+       else if(!strcmp(pKeyEvent->keyname, POWER_KEY))
+               {
+               VideoLogInfo("Power key");
+
+                       MpUtilLcdOffForPowerButton();
+               }
+       else if(!strcmp(pKeyEvent->keyname, PAUSE_KEY))
+       {
+               VideoLogInfo("Pause key down");
+       }
+       else if(!strcmp(pKeyEvent->keyname, PLAY_KEY))
+       {
+               VideoLogInfo("Play key down");
+       }
+       else if(!strcmp(pKeyEvent->keyname, STOP_KEY))
+       {
+               VideoLogInfo("Stop key down");
+       }
+       else if(!strcmp(pKeyEvent->keyname, NEXT_KEY))
+       {
+               VideoLogInfo("Next key down");
+       }
+       else if(!strcmp(pKeyEvent->keyname, PREV_KEY))
+       {
+               VideoLogInfo("Prev key down");
+       }
+       else if(!strcmp(pKeyEvent->keyname, FORWARD_KEY))
+       {
+               VideoLogInfo("Forward key down");
+               bIsLongPressForward = TRUE;
+               MpVideoVideoViewCtrlLongpressSpeedKeyDown(pUserData);
+       }
+       else if(!strcmp(pKeyEvent->keyname, REWIND_KEY))
+       {
+               VideoLogInfo("Rewind key down");
+               bIsLongPressForward = FALSE;
+               MpVideoVideoViewCtrlLongpressSpeedKeyDown(pUserData);
+       }
+       else if(!strcmp(pKeyEvent->keyname, KEY_CANCLE))
+       {
+               VideoLogInfo("Cancel key down");
+               bIsKeyCancle = TRUE;
+       }
+
+       return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoViewCtrlHardkeyUpCb(void *pUserData, int nType, void *pEvent)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoLogInfo("");
+
+       Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("Key Up : %s", pKeyEvent->keyname);
+
+       if(bIsKeyCancle)
+       {
+               VideoLogInfo("KEY CANCLE.");
+               if(pLongPressVolumeKeyTimer)
+               {
+                       ecore_timer_del(pLongPressVolumeKeyTimer);
+                       pLongPressVolumeKeyTimer = NULL;
+               }
+               bIsKeyCancle = FALSE;
+               return EINA_FALSE;
+       }
+
+       if(!strcmp(pKeyEvent->keyname, END_KEY))
+       {
+               VideoLogInfo("End key up");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+       else if(!strcmp(pKeyEvent->keyname, VOLUME_DOWN_KEY))
+       {
+               if(pLongPressVolumeKeyTimer)
+               {
+                       ecore_timer_del(pLongPressVolumeKeyTimer);
+                       pLongPressVolumeKeyTimer = NULL;
+               }
+       }
+       else if(!strcmp(pKeyEvent->keyname, VOLUME_UP_KEY))
+       {
+               if(pLongPressVolumeKeyTimer)
+               {
+                       ecore_timer_del(pLongPressVolumeKeyTimer);
+                       pLongPressVolumeKeyTimer = NULL;
+               }
+       }
+       else if(!strcmp(pKeyEvent->keyname, HOME_KEY))
+       {
+               VideoLogInfo("Home key up");
+
+               int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+               if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+                       nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+                       nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+                       nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+                       nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+               {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+
+               MpVideoServiceCtrlSetPrevPlayerType(MpVideoServiceCtrlGetPlayerType());
+       }
+       else if(!strcmp(pKeyEvent->keyname, POWER_KEY))
+       {
+               VideoLogInfo("Power key up");
+       }
+       else if(!strcmp(pKeyEvent->keyname, PAUSE_KEY))
+       {
+               VideoLogInfo("Pause key up");
+               if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME)
+               {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               }
+               else if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE)
+               {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       }
+       else if(!strcmp(pKeyEvent->keyname, PLAY_KEY))
+       {
+               VideoLogInfo("Play key up");
+               if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME)
+               {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               }
+               else if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE)
+               {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       }
+       else if(!strcmp(pKeyEvent->keyname, STOP_KEY))
+       {
+               VideoLogInfo("Stop key up");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+       }
+       else if(!strcmp(pKeyEvent->keyname, NEXT_KEY))
+       {
+               VideoLogInfo("Next key up");
+       }
+       else if(!strcmp(pKeyEvent->keyname, PREV_KEY))
+       {
+               VideoLogInfo("Prev key up");
+       }
+       else if(!strcmp(pKeyEvent->keyname, FORWARD_KEY))
+       {
+               VideoLogInfo("Forward key up");
+               MpVideoVideoViewCtrlLongpressSpeedKeyUp(pUserData);
+       }
+       else if(!strcmp(pKeyEvent->keyname, REWIND_KEY))
+       {
+               VideoLogInfo("Rewind key up");
+               MpVideoVideoViewCtrlLongpressSpeedKeyUp(pUserData);
+       }
+       else
+       {
+       }
+
+       return EINA_FALSE;
+}
+
+static Evas_Event_Flags MpVideoViewCtrlGestureNTabStartCb(void *pUserData , void *pEventInfo)
+{
+       VideoLogInfo("");
+
+       return EVAS_EVENT_FLAG_NONE;
+}
+
+
+static Evas_Event_Flags MpVideoViewCtrlGestureNTabEndCb(void *pUserData , void *pEventInfo)
+{
+       VideoLogInfo("");
+
+       Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) pEventInfo;
+       if(p->n == 1) {
+               VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+               if(bShowLayout) {
+                       int nWidth = 0;
+                       int nHeight = 0;
+                       int nMinY = 0;
+                       int nMaxY = 0;
+
+                       evas_object_geometry_get(pMainLayout, NULL, NULL, &nWidth, &nHeight);
+
+                       if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL ||
+                               MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE)
+                       {
+                               nMinY = (elm_config_scale_get() * 223);
+                               nMaxY = nHeight - ( elm_config_scale_get() * 215);
+                       }
+                       else
+                       {
+                               nMinY = (elm_config_scale_get() * 223);
+                               nMaxY = nHeight - ( elm_config_scale_get() * 204);
+                       }
+
+                       if(p->y > nMinY && p->y < nMaxY)
+                       {
+                               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+                       }
+               } else {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+               }
+       }
+
+       return EVAS_EVENT_FLAG_NONE;
+}
+
+
+static Evas_Event_Flags MpVideoViewCtrlGestureNTabAbortCb(void *pUserData , void *pEventInfo)
+{
+       VideoLogInfo("");
+
+       return EVAS_EVENT_FLAG_NONE;
+}
+
+/*
+ * Internal function.
+ */
+static void MpVideoViewCtrlScreenRotationInit(int nRotateMode, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpUtilRotateWindow(nRotateMode, pAppData->pMainWindow);
+       nVideoRotateType = nRotateMode;
+       MpVideoViewCtrlSetRotation(nVideoRotateType, FALSE, pUserData);
+}
+
+static Evas_Object *MpVideoViewCtrlCreateBg(Evas_Object *pWindow)
+{
+       if(!pWindow)
+       {
+               VideoLogError("[ERR]");
+               return NULL;
+       }
+
+       VideoLogInfo("");
+
+       return NULL;
+}
+
+void* MpVideoViewCtrlCreateConformant(void *pParent)
+{
+       if(!pParent)
+       {
+               VideoLogInfo("[ERR]");
+               return NULL;
+       }
+
+       VideoLogInfo("");
+
+       Evas_Object *pTmpConform = NULL;
+
+       pTmpConform = elm_conformant_add(pParent);
+       evas_object_size_hint_weight_set(pTmpConform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_conformant_set(pParent, EINA_TRUE);
+       elm_win_resize_object_add(pParent, pTmpConform);
+       evas_object_show(pTmpConform);
+
+       pConformant = pTmpConform;
+
+       return pTmpConform;
+}
+
+static Evas_Object *MpVideoViewCtrlCreateMainLayout(Evas_Object *pParent)
+{
+       if(!pParent)
+       {
+               VideoLogInfo("[ERR]");
+               return NULL;
+       }
+
+       VideoLogInfo("");
+
+       if(pMainLayout)
+       {
+               evas_object_del(pMainLayout);
+               pMainLayout = NULL;
+       }
+
+       pMainLayout = elm_layout_add(pParent);
+
+       elm_layout_theme_set(pMainLayout, "layout", "application", "video_no_indicator");
+       evas_object_size_hint_weight_set(pMainLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_content_set(pParent, pMainLayout);
+       pBackGround = MpVideoViewCtrlCreateBg(pParent);
+       evas_object_show(pMainLayout);
+
+       return pMainLayout;
+}
+
+static void MpVideoViewCtrlCreateEventRect(void *pUserData, Evas_Object *pParent)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if(!pParent)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+}
+
+       VideoLogInfo("");
+
+       pEventRect = evas_object_rectangle_add(evas_object_evas_get(pParent));
+       evas_object_color_set(pEventRect, 0, 0, 0, 0);
+
+       elm_object_part_content_set(pParent, "elm.swallow.event", pEventRect);
+
+       pGesture = elm_gesture_layer_add(pEventRect);
+
+       elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_START, MpVideoViewCtrlGestureNTabStartCb, pUserData);
+       elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_END, MpVideoViewCtrlGestureNTabEndCb, pUserData);
+       elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_ABORT, MpVideoViewCtrlGestureNTabAbortCb, pUserData);
+
+       evas_object_repeat_events_set(pEventRect, EINA_TRUE);
+
+       elm_gesture_layer_attach(pGesture, pEventRect);
+
+       evas_object_show(pEventRect);
+
+
+}
+static Evas_Object *MpVideoViewCtrlCreateVolume(void *pUserData, Evas_Object *pParent)
+{
+       if(!pParent)
+       {
+               VideoLogInfo("[ERR]");
+               return NULL;
+       }
+
+       VideoLogInfo("");
+
+       if(pDisplayViewVolume)
+       {
+               evas_object_del(pDisplayViewVolume);
+               pDisplayViewVolume = NULL;
+       }
+
+       pDisplayViewVolume = MpVideoVolumeCtrlInit(pParent, pUserData);
+
+       return pDisplayViewVolume;
+}
+
+static void MpVideoViewCtrlShowNaviFrame(void)
+{
+       VideoLogInfo("");
+
+       if(pNaviFrame)
+       {
+               elm_object_part_content_set(pMainLayout, "elm.swallow.content", pNaviFrame);
+               evas_object_show(pNaviFrame);
+       }
+       }
+
+static Evas_Object *MpVideoViewCtrlCreateNaviFrame(Evas_Object *pParent, void* pUserData)
+{
+       if(!pParent)
+       {
+               VideoLogInfo("[ERR]");
+               return NULL;
+       }
+
+       VideoLogInfo("");
+
+       if(pNaviFrame)
+       {
+               evas_object_del(pNaviFrame);
+               pNaviFrame = NULL;
+       }
+
+       pNaviFrame = elm_naviframe_add(pParent);
+
+       elm_object_part_content_set(pParent, "elm.swallow.content", pNaviFrame);
+
+       elm_naviframe_prev_btn_auto_pushed_set(pNaviFrame, EINA_FALSE);
+
+       evas_object_show(pNaviFrame);
+
+       return pNaviFrame;
+}
+
+static void MpVideoViewCtrlSetVideoViews(VideoAppData *pAppData, int nPlayerType)
+{
+       VideoLogInfo("%p",pAppData);
+
+       MpVideoServiceCtrlSetPlayerType(nPlayerType);
+
+       switch(nPlayerType)
+       {
+       case MP_VIDEO_PLAYER:
+               VideoLogInfo("MP_VIDEO_PLAYER");
+               MpUtilMultimediaVolumeKeyGrab();
+               MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+               break;
+
+       case MP_VIDEO_PLAYER_SIMPLE:
+               VideoLogInfo("MP_VIDEO_PLAYER_SIMPLE");
+               MpUtilMultimediaVolumeKeyGrab();
+               MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+               break;
+
+       case MP_VIDEO_PLAYER_EMAIL:
+               VideoLogInfo("MP_VIDEO_PLAYER_EMAIL");
+               MpUtilMultimediaVolumeKeyGrab();
+               MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+               break;
+
+       case MP_VIDEO_PLAYER_MMS:
+               VideoLogInfo("MP_VIDEO_PLAYER_MMS");
+               MpUtilMultimediaVolumeKeyGrab();
+               MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+               break;
+
+       case MP_VIDEO_PLAYER_GALLERY:
+               VideoLogInfo("MP_VIDEO_PLAYER_GALLERY");
+               MpUtilMultimediaVolumeKeyGrab();
+               MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+               break;
+
+       case MP_STREAMING_PLAYER:
+               VideoLogInfo("MP_STREAMING_PLAYER");
+               MpUtilMultimediaVolumeKeyGrab();
+               MpVideoStreamingViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+               break;
+
+       default:
+               VideoLogInfo("[ERR] No exist player tpye.");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+}
+
+static Eina_Bool MpVideoVideoViewCtrlSpeedKeyLongPressCb(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX)
+       {
+               if(pLongPressSpeedPlayingTimer)
+               {
+                       ecore_timer_del(pLongPressSpeedPlayingTimer);
+                       pLongPressSpeedPlayingTimer = NULL;
+               }
+
+               return EINA_FALSE;
+       }
+
+       ++pAppData->nPlayingSpeed;
+
+       if(bIsLongPressForward)
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
+       }
+       else
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
+       }
+
+       return EINA_TRUE;
+}
+
+static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserData.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
+
+       if(bIsLongPressForward)
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
+       }
+       else
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
+       }
+
+       if(pLongPressSpeedPlayingTimer)
+       {
+               ecore_timer_del(pLongPressSpeedPlayingTimer);
+               pLongPressSpeedPlayingTimer = NULL;
+       }
+
+       pLongPressSpeedPlayingTimer = ecore_timer_add(MULTIMEDIA_KEY_LONG_PRESS_INTERVAL, MpVideoVideoViewCtrlSpeedKeyLongPressCb, (void *)pAppData);
+}
+
+static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserData.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       bIsLongPressForward = FALSE;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
+
+       if(pLongPressSpeedPlayingTimer)
+       {
+               ecore_timer_del(pLongPressSpeedPlayingTimer);
+               pLongPressSpeedPlayingTimer = NULL;
+       }
+}
+
+static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoViewCtrlHideVolume();
+
+       MpVideoViewCtrlSetVideoViews((VideoAppData*)pUserData, nChangePlayerView);
+
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching(pAppData);
+       }
+
+/*
+ * External function.
+ */
+bool MpVideoViewCtrlInit(VideoAppData *pAppData)
+{
+       if(!pAppData)
+       {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       if(pHWKeyEventDownHandler)
+       {
+               ecore_event_handler_del(pHWKeyEventDownHandler);
+               pHWKeyEventDownHandler = NULL;
+       }
+
+       if(pHWKeyEventUpHandler)
+       {
+               ecore_event_handler_del(pHWKeyEventUpHandler);
+               pHWKeyEventUpHandler = NULL;
+       }
+
+       pHWKeyEventDownHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpVideoViewCtrlHardkeyDownCb, (void *)pAppData);
+       pHWKeyEventUpHandler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, (void *)MpVideoViewCtrlHardkeyUpCb, (void *)pAppData);
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+       MpVideoViewCtrlCreateConformant(pAppData->pMainWindow);
+       MpVideoViewCtrlCreateMainLayout(pConformant);
+       MpVideoViewCtrlCreateEventRect((void *)pAppData, pMainLayout);
+       MpVideoViewCtrlCreateVolume(pAppData, pMainLayout);
+       MpVideoViewCtrlCreateNaviFrame(pMainLayout, (void*)pAppData);
+       MpVideoViewCtrlSetVideoViews(pAppData, MpVideoServiceCtrlGetPlayerType());
+       MpVideoViewCtrlScreenRotationInit(MpUtilGetRotationState(), (void *)pAppData);
+
+       return TRUE;
+}
+
+void MpVideoViewCtrlDestroy(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpExternalUgUnload();
+
+       MpVideoVolumeCtrlDestroy();
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               MpVideoDisplayViewDestroy(pUserData);
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingViewDestroy(pUserData);
+       }
+
+       if(pGesture)
+       {
+               evas_object_del(pGesture);
+               pGesture = NULL;
+       }
+
+       if(pEventRect)
+       {
+               evas_object_del(pEventRect);
+               pEventRect = NULL;
+       }
+
+       if(pHWKeyEventDownHandler)
+       {
+               ecore_event_handler_del(pHWKeyEventDownHandler);
+               pHWKeyEventDownHandler = NULL;
+       }
+
+       if(pHWKeyEventUpHandler)
+       {
+               ecore_event_handler_del(pHWKeyEventUpHandler);
+               pHWKeyEventUpHandler = NULL;
+       }
+
+       if(pMainLayout)
+       {
+               evas_object_del(pMainLayout);
+               pMainLayout = NULL;
+       }
+
+       if(pLongPressSpeedPlayingTimer)
+       {
+               ecore_timer_del(pLongPressSpeedPlayingTimer);
+               pLongPressSpeedPlayingTimer = NULL;
+       }
+
+       if(pLongPressVolumeKeyTimer)
+       {
+               ecore_timer_del(pLongPressVolumeKeyTimer);
+               pLongPressVolumeKeyTimer = NULL;
+       }
+
+       if(pLayoutVisibleOffTimer)
+       {
+               ecore_timer_del(pLayoutVisibleOffTimer);
+               pLayoutVisibleOffTimer = NULL;
+       }
+
+       if(pDisplayViewVolume)
+       {
+               evas_object_del(pDisplayViewVolume);
+               pDisplayViewVolume = NULL;
+       }
+
+       if(pBackGround)
+       {
+               evas_object_del(pBackGround);
+               pBackGround = NULL;
+       }
+
+       bIsLongPressForward = FALSE;
+       bIsKeyCancle = FALSE;
+
+       nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL;
+}
+
+void MpVideoViewCtrlSetRotation(int nRotateMode, bool bLayoutHide, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(nRotateMode == VIDEO_ROTATE_UNKNOWN)
+       {
+               nRotateMode = MpUtilGetRotationState();
+       }
+
+       nVideoRotateType = nRotateMode;
+
+       MpUtilSetRotationState(nVideoRotateType);
+
+       if(MpVideoVolumeCtrlGetShowStatus())
+       {
+               MpVideoViewCtrlHideVolume();
+       }
+
+       if(nVideoRotateType == VIDEO_ROTATE_PORTRAIT_NORMAL || nVideoRotateType == VIDEO_ROTATE_PORTRAIT_REVERSE)
+       {
+               edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_VOLUME_PORTRAIT_MODE, "*");
+       }
+       else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE)
+       {
+               edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_VOLUME_LANDSCAPE_MODE, "*");
+       }
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               if(nVideoRotateType == VIDEO_ROTATE_PORTRAIT_NORMAL || nVideoRotateType == VIDEO_ROTATE_PORTRAIT_REVERSE)
+               {
+                       MpVideoDisplayViewPortrate(bLayoutHide, pUserData);
+               }
+               else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE)
+               {
+                       MpVideoDisplayViewLandscape(bLayoutHide, pUserData);
+               }
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingViewRotation((void *)pAppData, nVideoRotateType, bLayoutHide);
+       }
+
+       MpUtilRotateWindow(nVideoRotateType, pAppData->pMainWindow);
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen(pAppData, nVideoRotateType);
+}
+
+void MpVideoViewCtrlInitAfterBeginOfStream(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               MpVideoDisplayViewInitAfterBeginOfStream(pUserData);
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingViewInitAfterBeginOfStream(pUserData);
+       }
+}
+
+void MpVideoViewCtrlPause(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               MpVideoDisplayViewUpdatePauseKey();
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingViewUpdatePauseKey();
+       }
+}
+
+void MpVideoViewCtrlResume(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               MpVideoDisplayViewUpdateResumeKey();
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingViewUpdateResumeKey();
+       }
+}
+
+void MpVideoViewShowLayout(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(pLayoutVisibleOffTimer)
+       {
+               ecore_timer_del(pLayoutVisibleOffTimer);
+               pLayoutVisibleOffTimer = NULL;
+       }
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_SHOW, "*"); 
+                       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+                       MpVideoViewCtrlShowNaviFrame();
+                       bShowLayout = TRUE;
+
+                       MpVideoDisplayViewActivate();
+                       MpVideoDisplayViewShowControlPanel(pUserData);
+               }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_SHOW, "*");
+                       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+                       MpVideoViewCtrlShowNaviFrame();
+                       bShowLayout = TRUE;
+
+               MpVideoStreamingViewActivate();
+               MpVideoStreamingViewShowControlPanel(pUserData);
+       }
+}
+
+void MpVideoViewHideLayout(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               if(MpVideoStreamingViewGetBufferingState())
+               {
+                       VideoLogInfo("skip for Buffering");
+                       return;
+               }
+       }
+
+       edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_HIDE, "*");
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_HIDE);
+
+       bShowLayout = FALSE;
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               MpVideoDisplayViewHideControlPanel(pUserData);
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingViewHideControlPanel(pUserData);
+       }
+}
+void MpVideoViewCtrlShowFinish(void *pUserData)
+{
+       VideoLogInfo("");
+
+}
+
+void MpVideoViewCtrlHideFinish(void *pUserData, bool bLayoutOff)
+{
+       if(!pUserData)
+       {
+               VideoLogError("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(pNaviFrame)
+       {
+               elm_object_part_content_unset(pMainLayout, "elm.swallow.content");
+               evas_object_hide(pNaviFrame);
+       }
+
+       if(pLayoutVisibleOffTimer)
+       {
+               ecore_timer_del(pLayoutVisibleOffTimer);
+               pLayoutVisibleOffTimer = NULL;
+       }
+
+       if(bLayoutOff)
+       {
+               pLayoutVisibleOffTimer = ecore_timer_add(LAYOUT_VISIBLE_OFF_TIMER_INTERVAL, MpVideoViewCtrlLayoutVisibleOffTimerCb, (void *)pAppData);
+       }
+
+
+}
+
+void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+//     VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
+
+       if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               if(MpUtilCheckRTSPType(pAppData->szMediaUri))
+               {
+                       if(nSetBufferingRate == 0)
+                       {
+                               MpVideoStreamingViewSetBufferingRate(-1);
+                       }
+                       else
+                       {
+                               MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
+                       }
+               }
+               else
+               {
+                       if(nSetBufferingRate >= 0)
+                       {
+                               MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
+                       }
+               }
+       }
+}
+
+void MpVideoViewCtrlChangeTitle(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+               memset(pAppData->szSubtitle, 0, sizeof(char) * STR_LEN_MAX);
+
+               MpVideoDisplayViewChangeNaviFrameTitle(pUserData);
+       }
+}
+
+bool MpVideoViewCtrlIsTopView(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       bool bIstopView = FALSE;
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               VideoLogInfo("VIDEO PLAYER");
+               bIstopView = MpVideoDisplayViewIsTopView();
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               VideoLogInfo("STREAMING PLAYER");
+               bIstopView = MpVideoStreamingViewIsTopView();
+       }
+
+       return bIstopView;
+}
+
+void MpVideoViewCtrlShowNocontentImage(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               MpVideoDisplayViewShowNocontentImage(pUserData);
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingViewShowNocontentImage(pUserData);
+       }
+}
+
+void MpVideoViewCtrlHideNocontentImage(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               MpVideoDisplayViewHideNocontentImage();
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               MpVideoStreamingViewHideNocontentImage();
+       }
+}
+
+void MpVideoViewCtrlResetProgressBar(void *pUserData)
+{
+       VideoLogInfo("");
+
+       MpVideoDisplayViewResetProgressBar(pUserData);
+}
+
+void MpVideoViewCtrlUpdateProgressbar(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserData.");
+               return;
+       }
+       VideoLogInfo("");
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+               nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               VideoLogInfo("VIDEO PLAYER");
+               MpVideoDisplayViewUpdateProgressBar(pUserData);
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               VideoLogInfo("STREAMING PLAYER");
+               MpVideoStreamingViewUpdateProgressBar(pUserData);
+       }
+}
+
+
+bool MpVideoViewCtrlIsPauseByUser(void *pUserData)
+{
+       if(!pUserData)
+{
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       return MpVideoDisplayViewIsPauseByUser();
+}
+
+void MpVideoViewCtrlShowVolume()
+{
+       VideoLogInfo("");
+
+       if(MpVideoVolumeCtrlGetShowStatus())
+       {
+               return;
+       }
+
+       elm_object_part_content_set(pMainLayout, "elm.swallow.volume", pDisplayViewVolume);
+
+       MpVideoVolumeCtrlShow();
+
+}
+void MpVideoViewCtrlHideVolume()
+{
+       VideoLogInfo("");
+
+       if(pLongPressVolumeKeyTimer)
+       {
+               ecore_timer_del(pLongPressVolumeKeyTimer);
+               pLongPressVolumeKeyTimer = NULL;
+       }
+
+       elm_object_part_content_unset(pMainLayout, "elm.swallow.volume");
+
+       MpVideoVolumeCtrlHide();
+
+}
diff --git a/src/mp-video-volume-ctrl.c b/src/mp-video-volume-ctrl.c
new file mode 100644 (file)
index 0000000..ce0b246
--- /dev/null
@@ -0,0 +1,450 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <sound_manager.h>
+#include <Elementary.h>
+
+#include "video-player.h"
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-volume-ctrl.h"
+
+//#include "mp-video-statistics.h"
+
+#define VOLUME_CTRL_HIDE_TIMER_INTERVAL                3.0
+#define VOLUME_CTRL_DRAG_TIMER_INTERVAL                0.3
+
+
+typedef struct __MpVolumeCtrlData MpVolumeCtrlData;
+
+struct __MpVolumeCtrlData{
+       VideoAppData            *pAppData;
+
+       Evas_Object             *pLayout;
+
+       Ecore_Timer             *pHideTimer;
+       Ecore_Timer             *pDragTimer;
+
+       int                     nMaxVol;
+       int                     nMinVol;
+
+       int                     nCurVol;
+
+};
+
+static MpVolumeCtrlData        *pVolumeData = NULL;
+
+static void MpVideoVolumeCtrlUpdateTextValue(void *pUserData)
+{
+
+       VideoLogInfo("");
+       if(pUserData == NULL)
+       {
+               VideoLogError("Volume ctrl data is null.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVolumeCtrlData        *pCtrlData = (MpVolumeCtrlData *)pUserData;
+
+       char szVol[3] = {0,};
+       snprintf(szVol, 3, "%d", pCtrlData->nCurVol);
+
+       VideoLogError("%d , %s", pCtrlData->nCurVol, szVol);
+
+       edje_object_part_text_set(_EDJ(pCtrlData->pLayout), "volume.progress.circle.txt", szVol);
+
+}
+
+static void MpVideoVolumeCtrlUpdateDragValue(void *pUserData)
+{
+
+       VideoLogInfo("");
+       if(pUserData == NULL)
+       {
+               VideoLogError("Volume ctrl data is null.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVolumeCtrlData        *pCtrlData = (MpVolumeCtrlData *)pUserData;
+
+
+       double fVolPos = 0.0;
+       fVolPos = ((double)pCtrlData->nCurVol/(double)pCtrlData->nMaxVol);
+       edje_object_part_drag_value_set(_EDJ(pCtrlData->pLayout), "volume.progress.drag", fVolPos, 0.0);
+
+}
+
+static int MpVideoVolumeCtrlGetMaxVolume()
+{
+       VideoLogInfo("");
+
+       int nRet = SOUND_MANAGER_ERROR_NONE;
+       int nMax = 0;
+       nRet = sound_manager_get_max_volume (SOUND_TYPE_MEDIA, &nMax);
+       if(nRet != SOUND_MANAGER_ERROR_NONE)
+       {
+               VideoLogError("Sound manage get max volue fail : %d", nRet);
+               return -1;
+       }
+
+       return nMax;
+}
+static int MpVideoVolumeCtrlGetCurVolume()
+{
+       VideoLogInfo("");
+
+       int nRet = SOUND_MANAGER_ERROR_NONE;
+       int nVol = 0;
+       nRet = sound_manager_get_volume  (SOUND_TYPE_MEDIA, &nVol);
+       if(nRet != SOUND_MANAGER_ERROR_NONE)
+       {
+               VideoLogError("Sound manage get current volue fail : %d", nRet);
+               return -1;
+       }
+
+       return nVol;
+}
+
+static void MpVideoVolumeCtrlSetCurVolume(int nVol)
+{
+       VideoLogInfo("");
+
+       int nRet = SOUND_MANAGER_ERROR_NONE;
+       nRet = sound_manager_set_volume  (SOUND_TYPE_MEDIA, nVol);
+       if(nRet != SOUND_MANAGER_ERROR_NONE)
+       {
+               VideoLogError("Sound manage get current volue fail : %d", nRet);
+               return;
+       }
+
+       return;
+}
+
+static Eina_Bool MpVideoVolumeCtrlHideTimerCb(void *pUserData)
+{
+       VideoLogInfo("");
+       if(pUserData == NULL)
+       {
+               VideoLogError("pAppData is null.");
+               return EINA_FALSE;
+       }
+
+       MpVolumeCtrlData        *pCtrlData = (MpVolumeCtrlData *)pUserData;
+       if(pCtrlData->pHideTimer)
+       {
+               ecore_timer_del(pCtrlData->pHideTimer);
+               pCtrlData->pHideTimer = NULL;
+       }
+
+       pCtrlData->pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pCtrlData->pAppData);
+
+       return EINA_FALSE;
+}
+
+
+static Eina_Bool MpVideoVolumeCtrlDragTimerCb(void *pUserData)
+{
+       VideoLogInfo("");
+       if(pUserData == NULL)
+       {
+               VideoLogError("pAppData is null.");
+               return EINA_FALSE;
+       }
+
+       VideoLogInfo("");
+
+       MpVolumeCtrlData        *pCtrlData = (MpVolumeCtrlData *)pUserData;
+
+       double fVolPos = 0.0;
+
+       edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL);
+
+       pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos);
+
+       MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol);
+
+       MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
+
+       return EINA_TRUE;
+}
+
+
+
+static void MpVideoVolumeCtrlDragStartcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+       if(pUserData == NULL)
+       {
+               VideoLogError("pAppData is null.");
+               return;
+       }
+       MpVolumeCtrlData        *pCtrlData = (MpVolumeCtrlData *)pUserData;
+
+       if(pCtrlData->pHideTimer)
+       {
+               ecore_timer_del(pCtrlData->pHideTimer);
+               pCtrlData->pHideTimer = NULL;
+       }
+
+       pCtrlData->pDragTimer = ecore_timer_add(VOLUME_CTRL_DRAG_TIMER_INTERVAL, MpVideoVolumeCtrlDragTimerCb, (void *)pCtrlData);
+}
+
+static void MpVideoVolumeCtrlDragStopcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+       if(pUserData == NULL)
+       {
+               VideoLogError("pAppData is null.");
+               return;
+       }
+       MpVolumeCtrlData        *pCtrlData = (MpVolumeCtrlData *)pUserData;
+
+       if(pCtrlData->pHideTimer)
+       {
+               ecore_timer_del(pCtrlData->pHideTimer);
+               pCtrlData->pHideTimer = NULL;
+       }
+
+       pCtrlData->pHideTimer = ecore_timer_add(VOLUME_CTRL_HIDE_TIMER_INTERVAL, MpVideoVolumeCtrlHideTimerCb, (void *)pCtrlData);
+
+       if(pCtrlData->pDragTimer)
+       {
+               ecore_timer_del(pCtrlData->pDragTimer);
+               pCtrlData->pDragTimer = NULL;
+       }
+
+       double fVolPos = 0.0;
+       edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL);
+       pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos);
+
+       MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol);
+       MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
+}
+
+static void MpVideoVolumeCtrlDragcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if(pUserData == NULL)
+       {
+               VideoLogError("pAppData is null.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVolumeCtrlData        *pCtrlData = (MpVolumeCtrlData *)pUserData;
+       double fVolPos = 0.0;
+       edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL);
+       pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos);
+
+       MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
+
+}
+
+
+void *MpVideoVolumeCtrlInit(void *pParent, void* pUserData)
+{
+       if(pUserData == NULL)
+       {
+               VideoLogError("pAppData is null.");
+               return NULL;
+       }
+
+       if(pParent == NULL)
+       {
+               VideoLogError("pParent is null.");
+               return NULL;
+       }
+
+       VideoLogInfo("");
+
+       MpVolumeCtrlData        *pCtrlData = NULL;
+       VideoAppData            *pAppData = (VideoAppData *)pUserData;
+
+       pCtrlData = calloc(1, sizeof(MpVolumeCtrlData));
+
+       pCtrlData->nMinVol = 0;
+       pCtrlData->nMaxVol = MpVideoVolumeCtrlGetMaxVolume();
+       pCtrlData->nCurVol = MpVideoVolumeCtrlGetCurVolume();
+
+       Evas_Object *layout = elm_layout_add(pParent);
+       elm_layout_file_set(layout, VIDEO_PLAYER_VOLUME_POPUP_EDJ, VOLUME_EDJ_GROUP);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_hide(layout);
+
+       edje_object_signal_callback_add(_EDJ(layout), "drag,start", "volume.progress.drag", MpVideoVolumeCtrlDragStartcb, (void *)pCtrlData);
+       edje_object_signal_callback_add(_EDJ(layout), "drag,stop", "volume.progress.drag", MpVideoVolumeCtrlDragStopcb, (void *)pCtrlData);
+       edje_object_signal_callback_add(_EDJ(layout), "drag", "volume.progress.drag", MpVideoVolumeCtrlDragcb, (void *)pCtrlData);
+
+       pCtrlData->pAppData = pAppData;
+       pCtrlData->pLayout = layout;
+
+       MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol);
+       MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
+       MpVideoVolumeCtrlUpdateDragValue((void *)pCtrlData);
+
+       pVolumeData = pCtrlData;
+
+       return layout;
+
+}
+
+void MpVideoVolumeCtrlDestroy(void)
+{
+       VideoLogInfo("");
+
+       if(pVolumeData == NULL)
+       {
+               VideoLogError("Volume Ctrl data is NULL");
+               return;
+       }
+
+       if(pVolumeData->pLayout)
+       {
+               evas_object_del(pVolumeData->pLayout);
+               pVolumeData->pLayout = NULL;
+
+       }
+
+       if(pVolumeData->pHideTimer)
+       {
+               ecore_timer_del(pVolumeData->pHideTimer);
+               pVolumeData->pHideTimer = NULL;
+       }
+
+       if(pVolumeData->pDragTimer)
+       {
+               ecore_timer_del(pVolumeData->pDragTimer);
+               pVolumeData->pDragTimer = NULL;
+       }
+
+       free(pVolumeData);
+       pVolumeData = NULL;
+
+}
+
+
+void MpVideoVolumeCtrlShow()
+{
+       VideoLogInfo("");
+
+       if(pVolumeData == NULL)
+       {
+               VideoLogError("Volume Ctrl data is NULL");
+               return;
+       }
+       MpVolumeCtrlData *pCtrlData = pVolumeData;
+
+       evas_object_show(pCtrlData->pLayout);
+
+       if(pCtrlData->pHideTimer)
+       {
+               ecore_timer_del(pCtrlData->pHideTimer);
+               pCtrlData->pHideTimer = NULL;
+       }
+
+       pCtrlData->pHideTimer = ecore_timer_add(VOLUME_CTRL_HIDE_TIMER_INTERVAL, MpVideoVolumeCtrlHideTimerCb, (void *)pCtrlData);
+
+}
+
+void MpVideoVolumeCtrlHide()
+{
+       VideoLogInfo("");
+
+       if(pVolumeData == NULL)
+       {
+               VideoLogError("Volume Ctrl data is NULL");
+               return;
+       }
+
+       MpVolumeCtrlData *pCtrlData = pVolumeData;
+
+       if(pCtrlData->pHideTimer)
+       {
+               ecore_timer_del(pCtrlData->pHideTimer);
+               pCtrlData->pHideTimer = NULL;
+       }
+
+       evas_object_hide(pCtrlData->pLayout);
+}
+
+
+void MpVideoVolumeCtrlSetVolume(int nVol)
+{
+       VideoLogInfo("");
+
+       if(pVolumeData == NULL)
+       {
+               VideoLogError("Volume Ctrl data is NULL");
+               return;
+       }
+       MpVolumeCtrlData *pCtrlData = pVolumeData;
+
+       if(nVol > pCtrlData->nMaxVol)
+       {
+               nVol = pCtrlData->nMaxVol;
+       }
+
+       if(nVol < 0)
+       {
+               nVol = 0;
+       }
+
+       MpVideoVolumeCtrlShow();
+
+       pCtrlData->nCurVol = nVol;
+       MpVideoVolumeCtrlSetCurVolume(nVol);
+       MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
+       MpVideoVolumeCtrlUpdateDragValue((void *)pCtrlData);
+
+}
+
+int MpVideoVolumeCtrlGetVolume()
+{
+       VideoLogInfo("");
+
+       return MpVideoVolumeCtrlGetCurVolume();
+}
+
+bool MpVideoVolumeCtrlGetShowStatus()
+{
+       VideoLogInfo("");
+
+       if(pVolumeData == NULL)
+       {
+               VideoLogError("Volume Ctrl data is NULL");
+               return FALSE;
+       }
+       MpVolumeCtrlData *pCtrlData = pVolumeData;
+
+       if(pCtrlData->pHideTimer)
+       {
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
diff --git a/src/video-player.c b/src/video-player.c
new file mode 100755 (executable)
index 0000000..e1e0941
--- /dev/null
@@ -0,0 +1,530 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <app.h>
+#include <glib.h>
+#include <pmapi.h>
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-app-ctrl.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+#include "mp-external-ug.h"
+#include "mp-video-service-ctrl.h"
+
+static void appResume(void *pUserData);
+
+static bool bIsForeground = FALSE;
+
+static Ecore_Idler *pInitIdlerHandle = NULL;
+
+static Eina_Bool _mp_focus_in_cb(void *pUserData, int nType, void *pEvent)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       if (!pEvent) {
+               VideoLogInfo("[ERR] No exist pEvent.");
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       Ecore_X_Event_Window_Focus_In *ev = (Ecore_X_Event_Window_Focus_In *)pEvent;
+
+       if (ev->win == MpUtilGetMainWindowXID())
+       {
+               if(bIsForeground && MpVideoAppCtrlIsTopView(pUserData))
+               {
+                       VideoLogInfo("resume for focus in");
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool _mp_focus_out_cb(void *pUserData, int nType, void *pEvent)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       if (!pEvent) {
+               VideoLogInfo("[ERR] No exist pEvent.");
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)pEvent;
+
+       if (ev->win == MpUtilGetMainWindowXID())
+       {
+               if(bIsForeground && MpVideoAppCtrlIsTopView(pUserData))
+               {
+                       VideoLogInfo("pause for focus in");
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               }
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+
+}
+
+
+static Eina_Bool _mp_client_message_cb(void *pUserData, int nType, void *pEvent)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       if (!pEvent) {
+               VideoLogInfo("[ERR] No exist pEvent.");
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       Ecore_X_Event_Client_Message *ev = (Ecore_X_Event_Client_Message *) pEvent;
+
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE)
+       {
+               if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON)
+               {
+                       VideoLogInfo("quickpanel show");
+                       if(MpVideoAppCtrlIsTopView(pUserData) && bIsForeground)
+                       {
+                               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+                       }
+               }
+               else
+               {
+                       VideoLogInfo("quickpanel hide");
+                       if(MpVideoAppCtrlIsTopView(pUserData) && bIsForeground)
+                       {
+                               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+                       }
+               }
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool _mp_app_init_idler_cb(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return ECORE_CALLBACK_CANCEL;
+       }
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _mp_client_message_cb, (void *)pAppData);
+       ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _mp_focus_in_cb, (void *)pAppData);
+       ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _mp_focus_out_cb, (void *)pAppData);
+
+       pInitIdlerHandle = NULL;
+
+       return ECORE_CALLBACK_CANCEL;
+
+}
+
+static void _mp_alloc_service_value(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->szSubtitle = calloc(1, sizeof(char) * STR_LEN_MAX);
+       pAppData->szVideoTitle = calloc(1, sizeof(char) * STR_LEN_MAX);
+
+       pAppData->szMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX);
+       pAppData->szPreMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX);
+       pAppData->szNextMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX);
+
+       pAppData->szProxyAddress = calloc(1, sizeof(char) * STR_LEN_MAX);
+       pAppData->szUserAgent = calloc(1, sizeof(char) * STR_LEN_MAX);
+       pAppData->szCookie = calloc(1, sizeof(char) * STR_LEN_MAX);
+}
+
+
+static void _mp_free_service_value(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(pAppData->szSubtitle)
+       {
+               free(pAppData->szSubtitle);
+               pAppData->szSubtitle = NULL;
+       }
+
+       if(pAppData->szVideoTitle)
+       {
+               free(pAppData->szVideoTitle);
+               pAppData->szVideoTitle = NULL;
+       }
+
+       if(pAppData->szMediaUri)
+       {
+               free(pAppData->szMediaUri);
+               pAppData->szMediaUri = NULL;
+       }
+       if(pAppData->szPreMediaUri)
+       {
+               free(pAppData->szPreMediaUri);
+               pAppData->szPreMediaUri = NULL;
+       }
+
+       if(pAppData->szNextMediaUri)
+       {
+               free(pAppData->szNextMediaUri);
+               pAppData->szNextMediaUri = NULL;
+       }
+
+       if(pAppData->szProxyAddress)
+       {
+               free(pAppData->szProxyAddress);
+               pAppData->szProxyAddress = NULL;
+       }
+
+       if(pAppData->szUserAgent)
+       {
+               free(pAppData->szUserAgent);
+               pAppData->szUserAgent = NULL;
+       }
+
+       if(pAppData->szCookie)
+       {
+               free(pAppData->szCookie);
+               pAppData->szCookie = NULL;
+       }
+}
+
+static bool appCreate(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       _mp_alloc_service_value((void *)pAppData);
+
+       pInitIdlerHandle = ecore_idler_add(_mp_app_init_idler_cb, (void *)pAppData);
+
+#ifdef TARGET
+       elm_config_preferred_engine_set("opengl_x11");
+#else
+       elm_config_preferred_engine_set("software_x11");
+#endif
+
+       elm_theme_extension_add(NULL, VIDEO_CUSTOM_THEME);
+
+
+       MpUtilInitSession();
+
+       if(!MpUtilMMCstatusNoti(pAppData))
+       {
+               VideoLogError("[ERR] Fail to set MMC notification.");
+       }
+
+       bIsForeground = FALSE;
+
+       MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+
+       return TRUE;
+}
+
+static void appService(service_h pAppSvcHandle, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if(!pUserData)
+       {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               bIsForeground = FALSE;
+               MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       char* szGetMediaUri = NULL;
+
+       if(!pAppSvcHandle)
+       {
+               VideoLogInfo("[ERR] No exist pBundle.");
+               bIsForeground = FALSE;
+               MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+               return;
+       }
+
+       if(pAppData->pMainWindow == NULL)
+       {
+               VideoLogInfo("Create main window.");
+               pAppData->pMainWindow = (Evas_Object *)MpUtilCreateMainWindow(PACKAGE);
+       }
+       else
+       {
+               if(strlen(pAppData->szMediaUri) > 0)
+               {
+                       MpVideoAppCtrlResetForRelaunching(pAppData);
+               }
+       }
+
+       if(MpVideoServiceCtrlInitServiceParser((void*)pAppSvcHandle, &szGetMediaUri) == MP_ERROR_PLAYER_TYPE)
+       {
+               VideoLogInfo("[ERR] Fail to init service parser.");
+               bIsForeground = FALSE;
+               MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+               return;
+       }
+
+       if(szGetMediaUri)
+       {
+               strncpy(pAppData->szMediaUri, szGetMediaUri, STR_LEN_MAX);
+               VideoLogInfo("szGetMediaUri : %s", pAppData->szMediaUri);
+               free(szGetMediaUri);
+       }
+       else
+       {
+               VideoLogInfo("No exist szGetMediaUri");
+       }
+
+       if(!MpUtilBatteryStatusNoti(pAppData))
+       {
+               VideoLogInfo("[ERR] Fail to set Battery notification.");
+               bIsForeground = FALSE;
+               MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+               return;
+       }
+       bIsForeground = TRUE;
+
+       MpUtilMediaSvcInitSession();
+       MpUtilSetKeyGrab(HOME_KEY, KEY_GRAB_SHARED);
+       MpVideoAppCtrlInit(pAppData);
+}
+
+static void appExit(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+
+       MpUtilMultimediaVolumeKeyUngrab();
+       MpUtilLcdOffForPowerButton();
+       MpUtilSetKeyUngrab(HOME_KEY);
+       MpUtilMultimediaKeyUngrab();
+       MpUtilMMCstatusNotiIgnore();
+       MpUtilBatteryStatusNotiIgnore();
+       MpUtilFinishSession();
+       MpUtilDeletePopupHandle();
+       MpUtilMediaSvcDestoryVideoList();
+       MpUtilMediaSvcFinishSession();
+
+       _mp_free_service_value(pUserData);
+
+       bIsForeground = FALSE;
+       MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+
+#ifdef TA_SVAE_PERF_FILE
+       VP_PERF_DEINIT();
+#endif
+}
+
+static void appPause(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserdata handle.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpUtilMultimediaVolumeKeyUngrab();
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(MpVideoAppCtrlIsCheckCallStatus())
+       {
+               VideoLogInfo("Skip for Call Pause.");
+               MpVideoAppCtrlInitCheckCallStatus();
+       }
+
+       int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+       if(nTmpPlayerType == MP_VIDEO_PLAYER ||
+                       nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
+                       nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
+                       nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
+                       nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
+       {
+               VideoLogInfo("Pause application at video player.");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+       else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+       {
+               VideoLogInfo("Pause application at streaming player.");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+
+       MpUtilDeletePopupHandle();
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+       bIsForeground = FALSE;
+       MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+
+       evas_object_hide(pAppData->pMainWindow);
+}
+
+static void appResume(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("No exist pUserdata handle.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if(bIsForeground)
+       {
+               VideoLogInfo("Defence overlap launching.");
+               return;
+       }
+
+       MpUtilMultimediaVolumeKeyGrab();
+
+       if(!MpVideoAppCtrlIsTopView(pUserData))
+       {
+               VideoLogError("Overlay is not staied in top.");
+               return;
+       }
+
+       if(MpVideoAppCtrlIsExistPlayerHandle())
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+       }
+       else
+       {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData);
+       }
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+       bIsForeground = TRUE;
+       MpVideoAppCtrlSetForCheckingForegroundwindow(TRUE);
+
+       evas_object_show(pAppData->pMainWindow);
+}
+
+static void appRotate(app_device_orientation_e rotateState, void *pUserData)
+{
+       VideoLogInfo("");
+
+       int nCurRotate = 0;
+
+       switch(rotateState)
+       {
+       case APP_DEVICE_ORIENTATION_0:
+               VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL");
+               nCurRotate = VIDEO_ROTATE_PORTRAIT_NORMAL;
+               break;
+
+       case APP_DEVICE_ORIENTATION_90:
+               VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE");
+               nCurRotate = VIDEO_ROTATE_LANDSCAPE_REVERSE;
+               break;
+
+       case APP_DEVICE_ORIENTATION_180:
+               VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE");
+               nCurRotate = VIDEO_ROTATE_PORTRAIT_REVERSE;
+               break;
+
+       case APP_DEVICE_ORIENTATION_270:
+               VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL");
+               nCurRotate = VIDEO_ROTATE_LANDSCAPE_NORMAL;
+               break;
+       }
+
+       MpVideoAppCtrlSetRotation(nCurRotate, pUserData);
+}
+
+int main(int argc, char *argv[])
+{
+       VideoAppData pAppData;
+       memset(&pAppData, 0, sizeof(VideoAppData));
+
+       app_event_callback_s st_appEventService;
+
+       st_appEventService.create = appCreate;
+       st_appEventService.terminate = appExit;
+       st_appEventService.pause = appPause;
+       st_appEventService.resume = appResume;
+       st_appEventService.service = appService;
+       st_appEventService.low_memory = NULL;
+       st_appEventService.low_battery = NULL;
+       st_appEventService.device_orientation = appRotate;
+       st_appEventService.language_changed = NULL;
+       st_appEventService.region_format_changed = NULL;
+
+       if(app_efl_main(&argc, &argv, &st_appEventService, &pAppData) != APP_ERROR_NONE)
+       {
+               VideoLogInfo("[ERR] app_efl_main().");
+               return -1;
+       }
+
+       VideoLogInfo("escape app_efl_main() loop.");
+
+       return 0;
+}