summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSehong Na <sehong.na@samsung.com>2014-05-31 12:56:05 +0900
committerSehong Na <sehong.na@samsung.com>2014-05-31 12:56:05 +0900
commitef53b460c081a88e257c5b93d8383207fefc4671 (patch)
tree5d362705ca7dfdcff0321713310fb78d60513a64
downloadvideo-player-ef53b460c081a88e257c5b93d8383207fefc4671.tar.gz
video-player-ef53b460c081a88e257c5b93d8383207fefc4671.tar.bz2
video-player-ef53b460c081a88e257c5b93d8383207fefc4671.zip
-rwxr-xr-xCMakeLists.txt220
-rw-r--r--LICENSE.Flora206
-rwxr-xr-xNOTICE3
-rw-r--r--include/mp-drm-ctrl.h72
-rwxr-xr-xinclude/mp-external-ug.h47
-rw-r--r--include/mp-util-media-service.h123
-rwxr-xr-xinclude/mp-util.h99
-rwxr-xr-xinclude/mp-video-animation-ctrl.h33
-rw-r--r--include/mp-video-app-ctrl.h35
-rw-r--r--include/mp-video-ctrl-mgr.h54
-rwxr-xr-xinclude/mp-video-display-view.h55
-rwxr-xr-xinclude/mp-video-info-ctrl.h23
-rwxr-xr-xinclude/mp-video-info-view.h27
-rw-r--r--include/mp-video-log.h57
-rw-r--r--include/mp-video-player-mgr.h125
-rwxr-xr-xinclude/mp-video-progressbar.h32
-rw-r--r--include/mp-video-service-ctrl.h48
-rwxr-xr-xinclude/mp-video-sound-path-ctrl.h27
-rwxr-xr-xinclude/mp-video-streaming-ctrl.h39
-rwxr-xr-xinclude/mp-video-streaming-view.h53
-rw-r--r--include/mp-video-string-define.h166
-rwxr-xr-xinclude/mp-video-subtitle-ctrl.h39
-rw-r--r--include/mp-video-type-define.h169
-rwxr-xr-xinclude/mp-video-value-define.h505
-rwxr-xr-xinclude/mp-video-view-mgr.h48
-rw-r--r--include/mp-video-volume-ctrl.h31
-rwxr-xr-xinclude/video-player.h122
-rwxr-xr-xorg.tizen.video-player.manifest14
-rwxr-xr-xorg.tizen.video-player.rule70
-rwxr-xr-xorg.tizen.video-player.xml63
-rwxr-xr-xpackaging/org.tizen.video-player.spec96
-rwxr-xr-xres/edc/add_tag.edc346
-rwxr-xr-xres/edc/animation.edc299
-rwxr-xr-xres/edc/control.edc1167
-rwxr-xr-xres/edc/custom/vp-naviframe-custom.edc901
-rwxr-xr-xres/edc/detail.edc34
-rwxr-xr-xres/edc/hidden_button_panel.edc187
-rwxr-xr-xres/edc/image_res.edc137
-rwxr-xr-xres/edc/main.edc557
-rwxr-xr-xres/edc/multi_win.edc69
-rw-r--r--res/edc/option_button.edc326
-rwxr-xr-xres/edc/panel.edc155
-rwxr-xr-xres/edc/popup_progressbar.edc263
-rwxr-xr-xres/edc/progress.edc459
-rwxr-xr-xres/edc/progress_trim.edc291
-rwxr-xr-xres/edc/setting.edc33
-rwxr-xr-xres/edc/subtitle.edc419
-rwxr-xr-xres/edc/subtitle_sync.edc415
-rwxr-xr-xres/edc/vp-button-white.edc504
-rwxr-xr-xres/edc/vp-button.edc1069
-rwxr-xr-xres/edc/vp-chapter-view.edc757
-rwxr-xr-xres/edc/vp-check.edc1318
-rwxr-xr-xres/edc/vp-controlbar.edc760
-rwxr-xr-xres/edc/vp-ctxpopup.edc1764
-rwxr-xr-xres/edc/vp-custom-winset-style.edc12
-rwxr-xr-xres/edc/vp-layout.edc377
-rwxr-xr-xres/edc/vp-naviframe.edc4830
-rwxr-xr-xres/edc/vp-naviframe_white.edc853
-rwxr-xr-xres/edc/vp-nocontents.edc72
-rwxr-xr-xres/edc/vp-progressbar-list.edc584
-rw-r--r--res/edc/vp-speedbox-popup.edc314
-rwxr-xr-xres/edc/vp-toolbar.edc1733
-rw-r--r--res/edc/vp-volume-popup.edc318
-rwxr-xr-xres/edc/vp_font.edc28
-rwxr-xr-xres/images/00_Option_header_bt.pngbin0 -> 3040 bytes
-rwxr-xr-xres/images/00_Option_header_bt_dim.pngbin0 -> 3014 bytes
-rwxr-xr-xres/images/00_Option_header_bt_press.pngbin0 -> 2993 bytes
-rwxr-xr-xres/images/00_button_01_normal.pngbin0 -> 3068 bytes
-rwxr-xr-xres/images/00_button_01_normal_dim.pngbin0 -> 3060 bytes
-rwxr-xr-xres/images/00_button_01_normal_press.pngbin0 -> 3089 bytes
-rwxr-xr-xres/images/00_check_bg_dim.pngbin0 -> 2890 bytes
-rwxr-xr-xres/images/00_grid_select_check.pngbin0 -> 4247 bytes
-rwxr-xr-xres/images/00_sweep_list_bg.pngbin0 -> 2799 bytes
-rwxr-xr-xres/images/00_winset_btn_prev.pngbin0 -> 3258 bytes
-rwxr-xr-xres/images/00_winset_btn_prev_press.pngbin0 -> 349 bytes
-rwxr-xr-xres/images/00_winset_control_top_arrow.pngbin0 -> 3163 bytes
-rwxr-xr-xres/images/00_winset_list_progress_bg.pngbin0 -> 2803 bytes
-rwxr-xr-xres/images/00_winset_thumbs_bg.pngbin0 -> 3233 bytes
-rwxr-xr-xres/images/00_winset_thumbs_focus_bg.pngbin0 -> 3114 bytes
-rwxr-xr-xres/images/00_winset_thumbs_loading_bg.pngbin0 -> 3208 bytes
-rwxr-xr-xres/images/01_controlbar_icon_delete.pngbin0 -> 3072 bytes
-rwxr-xr-xres/images/01_controlbar_icon_set_as.pngbin0 -> 3215 bytes
-rwxr-xr-xres/images/01_controlbar_icon_share.pngbin0 -> 3220 bytes
-rwxr-xr-xres/images/01_header_icon_add.pngbin0 -> 2999 bytes
-rwxr-xr-xres/images/01_header_icon_cancel.pngbin0 -> 2980 bytes
-rwxr-xr-xres/images/01_header_icon_others.pngbin0 -> 2934 bytes
-rwxr-xr-xres/images/12_music_player_sound_path.pngbin0 -> 313 bytes
-rwxr-xr-xres/images/DM_Gallery_Increase.pngbin0 -> 2839 bytes
-rwxr-xr-xres/images/T01-2_hold_icon_lock.pngbin0 -> 1395 bytes
-rwxr-xr-xres/images/T01-2_icon_toolbar_cancel.pngbin0 -> 3231 bytes
-rwxr-xr-xres/images/T01_Image_Look.pngbin0 -> 4334 bytes
-rwxr-xr-xres/images/T01_Nocontents_multimedia.pngbin0 -> 9146 bytes
-rwxr-xr-xres/images/T01_Option_header_bt.pngbin0 -> 2984 bytes
-rwxr-xr-xres/images/T01_Option_header_bt_press.pngbin0 -> 2939 bytes
-rwxr-xr-xres/images/T01_Trim_handle_beginning.pngbin0 -> 3525 bytes
-rwxr-xr-xres/images/T01_Trim_handle_ending.pngbin0 -> 3279 bytes
-rwxr-xr-xres/images/T01_back.pngbin0 -> 3928 bytes
-rwxr-xr-xres/images/T01_btn_prev.pngbin0 -> 3228 bytes
-rwxr-xr-xres/images/T01_check.pngbin0 -> 3035 bytes
-rwxr-xr-xres/images/T01_checkbox.pngbin0 -> 2944 bytes
-rwxr-xr-xres/images/T01_control_icon_detail.pngbin0 -> 4684 bytes
-rwxr-xr-xres/images/T01_control_icon_fullscreen.pngbin0 -> 4813 bytes
-rwxr-xr-xres/images/T01_control_icon_reduce.pngbin0 -> 4817 bytes
-rwxr-xr-xres/images/T01_control_top_arrow.pngbin0 -> 3055 bytes
-rwxr-xr-xres/images/T01_control_top_bg.pngbin0 -> 2812 bytes
-rwxr-xr-xres/images/T01_controlbar_icon_cancel.pngbin0 -> 3231 bytes
-rwxr-xr-xres/images/T01_controlbar_icon_done.pngbin0 -> 3322 bytes
-rwxr-xr-xres/images/T01_controller_btn.pngbin0 -> 2994 bytes
-rwxr-xr-xres/images/T01_controller_btn_press.pngbin0 -> 3008 bytes
-rwxr-xr-xres/images/T01_grid_select_check.pngbin0 -> 4247 bytes
-rwxr-xr-xres/images/T01_icon_expand.pngbin0 -> 3156 bytes
-rwxr-xr-xres/images/T01_icon_reduce.pngbin0 -> 3141 bytes
-rwxr-xr-xres/images/T01_icon_soundPath.pngbin0 -> 4527 bytes
-rwxr-xr-xres/images/T01_icon_soundPath_h.pngbin0 -> 4241 bytes
-rwxr-xr-xres/images/T01_icon_soundPath_press.pngbin0 -> 3681 bytes
-rwxr-xr-xres/images/T01_player_progress_bar.pngbin0 -> 2802 bytes
-rwxr-xr-xres/images/T01_player_progress_bg.pngbin0 -> 2839 bytes
-rwxr-xr-xres/images/T01_player_progress_point.pngbin0 -> 2825 bytes
-rwxr-xr-xres/images/T01_sound_path.pngbin0 -> 3081 bytes
-rwxr-xr-xres/images/T01_title_bg.pngbin0 -> 40405 bytes
-rwxr-xr-xres/images/T01_title_bg_h.pngbin0 -> 36828 bytes
-rwxr-xr-xres/images/T01_title_btn.pngbin0 -> 3129 bytes
-rwxr-xr-xres/images/T01_title_btn_press.pngbin0 -> 3126 bytes
-rwxr-xr-xres/images/T01_toolbar_bg.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/T01_toolbar_press.pngbin0 -> 2842 bytes
-rwxr-xr-xres/images/T01_video_list_progress_bar.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/adjustment/T01-2_controller_progress_handle.pngbin0 -> 2938 bytes
-rwxr-xr-xres/images/adjustment/T01-2_controller_progress_handle_press.pngbin0 -> 2962 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_bg.pngbin0 -> 22261 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_bg_ef.pngbin0 -> 3674 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_progress_bar.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_progress_bg.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_progress_handle.pngbin0 -> 3037 bytes
-rwxr-xr-xres/images/bookmark/T01-2_bookmark_thumbnail.pngbin0 -> 3761 bytes
-rwxr-xr-xres/images/bookmark/T01-2_btn_bookmark.pngbin0 -> 4161 bytes
-rwxr-xr-xres/images/bookmark/T01-2_btn_bookmark_press.pngbin0 -> 3992 bytes
-rwxr-xr-xres/images/bookmark/T01-2_btn_remove_bookmark.pngbin0 -> 5028 bytes
-rwxr-xr-xres/images/bookmark/T01-2_btn_remove_bookmark_press.pngbin0 -> 5070 bytes
-rwxr-xr-xres/images/bookmark/T01-2_function_tray.pngbin0 -> 1409 bytes
-rwxr-xr-xres/images/bookmark/T01-2_icon_thumbnail_bg.pngbin0 -> 2835 bytes
-rw-r--r--res/images/com.samsung.video-player.pngbin0 -> 14891 bytes
-rwxr-xr-xres/images/com.samsung.video-player.png_oldbin0 -> 22981 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_01.pngbin0 -> 3364 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_02.pngbin0 -> 3437 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_03.pngbin0 -> 4056 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_ff.pngbin0 -> 3783 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_ff_press.pngbin0 -> 4070 bytes
-rw-r--r--res/images/desktop/controlbar/DM_Key screen_icon_pause.pngbin0 -> 3016 bytes
-rw-r--r--res/images/desktop/controlbar/DM_Key screen_icon_pause_press.pngbin0 -> 3205 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_play.pngbin0 -> 3476 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_play_press.pngbin0 -> 3792 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_rew.pngbin0 -> 3761 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_rew_press.pngbin0 -> 3988 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_volume.pngbin0 -> 3709 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_controller_progress_bar.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_controller_progress_bg.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_controller_progress_handle.pngbin0 -> 2938 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_controller_progress_handle_press.pngbin0 -> 2962 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_bg.pngbin0 -> 22261 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_bg_ef.pngbin0 -> 3674 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_progress_bar.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_progress_bg.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_progress_handle.pngbin0 -> 3037 bytes
-rwxr-xr-xres/images/gallery_loading_ani_01.pngbin0 -> 5221 bytes
-rwxr-xr-xres/images/gallery_loading_ani_02.pngbin0 -> 5234 bytes
-rwxr-xr-xres/images/gallery_loading_ani_03.pngbin0 -> 5203 bytes
-rwxr-xr-xres/images/gallery_loading_ani_04.pngbin0 -> 5350 bytes
-rwxr-xr-xres/images/gallery_loading_ani_05.pngbin0 -> 5285 bytes
-rwxr-xr-xres/images/gallery_loading_ani_06.pngbin0 -> 5333 bytes
-rwxr-xr-xres/images/gallery_loading_ani_07.pngbin0 -> 5297 bytes
-rwxr-xr-xres/images/gallery_loading_ani_08.pngbin0 -> 5426 bytes
-rwxr-xr-xres/images/gallery_loading_ani_09.pngbin0 -> 5452 bytes
-rwxr-xr-xres/images/gallery_loading_ani_10.pngbin0 -> 5389 bytes
-rwxr-xr-xres/images/gallery_loading_ani_11.pngbin0 -> 5265 bytes
-rwxr-xr-xres/images/gallery_loading_ani_12.pngbin0 -> 5348 bytes
-rwxr-xr-xres/images/gallery_loading_ani_13.pngbin0 -> 5435 bytes
-rwxr-xr-xres/images/gallery_loading_ani_14.pngbin0 -> 5482 bytes
-rwxr-xr-xres/images/gallery_loading_ani_15.pngbin0 -> 5536 bytes
-rwxr-xr-xres/images/gallery_loading_ani_16.pngbin0 -> 5330 bytes
-rwxr-xr-xres/images/gallery_loading_ani_17.pngbin0 -> 5335 bytes
-rwxr-xr-xres/images/gallery_loading_ani_18.pngbin0 -> 5247 bytes
-rwxr-xr-xres/images/gallery_loading_ani_19.pngbin0 -> 5422 bytes
-rwxr-xr-xres/images/gallery_loading_ani_20.pngbin0 -> 5375 bytes
-rwxr-xr-xres/images/gallery_loading_ani_21.pngbin0 -> 5343 bytes
-rwxr-xr-xres/images/gallery_loading_ani_22.pngbin0 -> 5374 bytes
-rwxr-xr-xres/images/gallery_loading_ani_23.pngbin0 -> 5527 bytes
-rwxr-xr-xres/images/gallery_loading_ani_24.pngbin0 -> 5481 bytes
-rwxr-xr-xres/images/gallery_loading_ani_25.pngbin0 -> 5409 bytes
-rwxr-xr-xres/images/gallery_loading_ani_26.pngbin0 -> 5311 bytes
-rwxr-xr-xres/images/gallery_loading_ani_27.pngbin0 -> 5359 bytes
-rwxr-xr-xres/images/gallery_loading_ani_28.pngbin0 -> 5442 bytes
-rwxr-xr-xres/images/gallery_loading_ani_29.pngbin0 -> 5489 bytes
-rwxr-xr-xres/images/gallery_loading_ani_30.pngbin0 -> 5600 bytes
-rwxr-xr-xres/images/gallery_video_add_btn.pngbin0 -> 3444 bytes
-rwxr-xr-xres/images/gallery_video_add_btn_press.pngbin0 -> 3493 bytes
-rwxr-xr-xres/images/gallery_video_control_ff.pngbin0 -> 3168 bytes
-rwxr-xr-xres/images/gallery_video_control_ff_2.pngbin0 -> 3056 bytes
-rwxr-xr-xres/images/gallery_video_control_ff_3.pngbin0 -> 3157 bytes
-rwxr-xr-xres/images/gallery_video_control_ff_4.pngbin0 -> 3157 bytes
-rwxr-xr-xres/images/gallery_video_control_ff_5.pngbin0 -> 3185 bytes
-rwxr-xr-xres/images/gallery_video_control_frame_back.pngbin0 -> 3143 bytes
-rwxr-xr-xres/images/gallery_video_control_frame_forword.pngbin0 -> 3154 bytes
-rwxr-xr-xres/images/gallery_video_control_next.pngbin0 -> 3168 bytes
-rwxr-xr-xres/images/gallery_video_control_pause.pngbin0 -> 2932 bytes
-rwxr-xr-xres/images/gallery_video_control_play.pngbin0 -> 3084 bytes
-rwxr-xr-xres/images/gallery_video_control_prev.pngbin0 -> 3175 bytes
-rwxr-xr-xres/images/gallery_video_control_rew.pngbin0 -> 3175 bytes
-rwxr-xr-xres/images/gallery_video_control_rew_2.pngbin0 -> 477 bytes
-rwxr-xr-xres/images/gallery_video_control_rew_3.pngbin0 -> 585 bytes
-rwxr-xr-xres/images/gallery_video_control_rew_4.pngbin0 -> 619 bytes
-rwxr-xr-xres/images/gallery_video_control_rew_5.pngbin0 -> 647 bytes
-rwxr-xr-xres/images/gallery_video_delete_btn.pngbin0 -> 3458 bytes
-rwxr-xr-xres/images/gallery_video_delete_btn_press.pngbin0 -> 3411 bytes
-rwxr-xr-xres/images/gallery_video_fastforward_1x.pngbin0 -> 3228 bytes
-rwxr-xr-xres/images/gallery_video_fastforward_2x.pngbin0 -> 3314 bytes
-rwxr-xr-xres/images/gallery_video_fastforward_3x.pngbin0 -> 3414 bytes
-rwxr-xr-xres/images/gallery_video_fastforward_4x.pngbin0 -> 3469 bytes
-rwxr-xr-xres/images/gallery_video_icon_btn.pngbin0 -> 3306 bytes
-rwxr-xr-xres/images/gallery_video_icon_btn_press.pngbin0 -> 3239 bytes
-rwxr-xr-xres/images/gallery_video_icon_mute.pngbin0 -> 3154 bytes
-rwxr-xr-xres/images/gallery_video_icon_volume.pngbin0 -> 3222 bytes
-rwxr-xr-xres/images/gallery_video_player_bg.pngbin0 -> 3468 bytes
-rwxr-xr-xres/images/gallery_video_popup_mute.pngbin0 -> 4136 bytes
-rwxr-xr-xres/images/gallery_video_rewind_1x.pngbin0 -> 3269 bytes
-rwxr-xr-xres/images/gallery_video_rewind_2x.pngbin0 -> 3288 bytes
-rwxr-xr-xres/images/gallery_video_rewind_3x.pngbin0 -> 3396 bytes
-rwxr-xr-xres/images/gallery_video_rewind_4x.pngbin0 -> 3464 bytes
-rw-r--r--res/images/icon/06_myfiles_list_folder.pngbin0 -> 3799 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_function_bg.pngbin0 -> 2840 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_sound_allive.pngbin0 -> 5592 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_sound_audio_track.pngbin0 -> 4786 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_sound_repeat_mode.pngbin0 -> 4590 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_sound_settings.pngbin0 -> 5195 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_subtitle.pngbin0 -> 3798 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_trim.pngbin0 -> 5335 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_title_allshare.pngbin0 -> 3202 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_title_soundpath.pngbin0 -> 3355 bytes
-rwxr-xr-xres/images/icon/T01_controlbar_icon_add_to_home.pngbin0 -> 3485 bytes
-rw-r--r--res/images/icon/_06_myfiles_list_folder.pngbin0 -> 1729 bytes
-rwxr-xr-xres/images/mw/T01-2_icon_close.pngbin0 -> 2139 bytes
-rwxr-xr-xres/images/mw/T01-2_icon_full_size.pngbin0 -> 2116 bytes
-rwxr-xr-xres/images/mw/T01-2_icon_hide_panel.pngbin0 -> 1724 bytes
-rwxr-xr-xres/images/mw/T01-2_icon_open_panel.pngbin0 -> 1738 bytes
-rwxr-xr-xres/images/mw/T01-2_multiscreen_bg.pngbin0 -> 1617 bytes
-rwxr-xr-xres/images/mw/T01-2_multiscreen_bg_press.pngbin0 -> 2997 bytes
-rwxr-xr-xres/images/mw/T01-2_multiscreen_player_bg.pngbin0 -> 1020 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_FF.pngbin0 -> 1330 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_FF_press.pngbin0 -> 1362 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_Pause.pngbin0 -> 1092 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_Pause_press.pngbin0 -> 1087 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_Play.pngbin0 -> 1324 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_Play_press.pngbin0 -> 1323 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_REW.pngbin0 -> 1310 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_REW_press.pngbin0 -> 1346 bytes
-rwxr-xr-xres/images/mw/T01-2_resize_controller.pngbin0 -> 1558 bytes
-rwxr-xr-xres/images/mw/T01-2_resize_controller_press.pngbin0 -> 1831 bytes
-rwxr-xr-xres/images/navibar_item_separator_shadow.pngbin0 -> 160 bytes
-rwxr-xr-xres/images/naviframe_optionheader.pngbin0 -> 2788 bytes
-rwxr-xr-xres/images/naviframe_optionheader_arrow.pngbin0 -> 3152 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_connection_info.pngbin0 -> 3308 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_more.pngbin0 -> 3071 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_multiwin.pngbin0 -> 3137 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_repeat_off.pngbin0 -> 3498 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_repeat_on.pngbin0 -> 3480 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_sa.pngbin0 -> 3685 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_trim.pngbin0 -> 3403 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_bg.pngbin0 -> 2840 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_bookmark.pngbin0 -> 3223 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_screenmode.pngbin0 -> 3039 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_screenmode02.pngbin0 -> 3052 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_screenmode03.pngbin0 -> 3449 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_select_bg.pngbin0 -> 2990 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_share.pngbin0 -> 3270 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_subtitle.pngbin0 -> 3104 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_trim.pngbin0 -> 3429 bytes
-rwxr-xr-xres/images/org.tizen.video-player.pngbin0 -> 16946 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_back.pngbin0 -> 3493 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_back_press.pngbin0 -> 3972 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_volum.pngbin0 -> 4129 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_volum_press.pngbin0 -> 4101 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_volume.pngbin0 -> 3601 bytes
-rwxr-xr-xres/images/panel/T01-2_controller_progress_bar.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/panel/T01-2_controller_progress_bg.pngbin0 -> 2797 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_controller_repeat.pngbin0 -> 3328 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_controller_repeat_1.pngbin0 -> 3335 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_controller_repeat_all.pngbin0 -> 3510 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_controller_sa.pngbin0 -> 3869 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_toolbar_cancel.pngbin0 -> 3231 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_toolbar_done.pngbin0 -> 3322 bytes
-rwxr-xr-xres/images/panel/T02_volume_icon_Mute.pngbin0 -> 3367 bytes
-rwxr-xr-xres/images/subtitle/T01-2_sync_btn_bg.pngbin0 -> 3650 bytes
-rwxr-xr-xres/images/subtitle/T01-2_sync_faster.pngbin0 -> 4114 bytes
-rwxr-xr-xres/images/subtitle/T01-2_sync_list_press.pngbin0 -> 2805 bytes
-rwxr-xr-xres/images/subtitle/T01-2_sync_slowly.pngbin0 -> 3313 bytes
-rwxr-xr-xres/images/toolbar/T01-2_btn_toolbar_back.pngbin0 -> 3493 bytes
-rwxr-xr-xres/images/toolbar/T01-2_btn_toolbar_volum.pngbin0 -> 4129 bytes
-rwxr-xr-xres/images/toolbar/T01-2_btn_toolbar_volume.pngbin0 -> 3601 bytes
-rw-r--r--res/images/toolbar/T01-2_controlbar_icon_folder.pngbin0 -> 3040 bytes
-rw-r--r--res/images/toolbar/T01-2_controlbar_icon_near_device.pngbin0 -> 3252 bytes
-rw-r--r--res/images/toolbar/T01-2_controlbar_icon_recorded.pngbin0 -> 3722 bytes
-rw-r--r--res/images/toolbar/T01-2_controlbar_icon_video.pngbin0 -> 3961 bytes
-rwxr-xr-xres/images/toolbar/T01-2_icon_toolbar_cancel.pngbin0 -> 3231 bytes
-rwxr-xr-xres/images/toolbar/T01-2_icon_toolbar_delete.pngbin0 -> 3201 bytes
-rwxr-xr-xres/images/toolbar/T01-2_icon_toolbar_done.pngbin0 -> 3322 bytes
-rw-r--r--res/images/toolbar/T01-2_icon_toolbar_setting.pngbin0 -> 3419 bytes
-rw-r--r--res/images/toolbar/T01-2_icon_toolbar_sort_by.pngbin0 -> 3700 bytes
-rwxr-xr-xres/images/toolbar/T02_controlbar_icon_search.pngbin0 -> 3515 bytes
-rwxr-xr-xres/images/toolbar/T02_volume_icon_Mute.pngbin0 -> 3367 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_track_ball.pngbin0 -> 3162 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_trimming_handle_beginning.pngbin0 -> 3962 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_trimming_handle_beginning_press.pngbin0 -> 4063 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_trimming_handle_ending.pngbin0 -> 3344 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_trimming_handle_ending_press.pngbin0 -> 3587 bytes
-rwxr-xr-xres/images/trim/T01-2_icon_toolbar_forward.pngbin0 -> 3343 bytes
-rwxr-xr-xres/images/trim/T01-2_icon_toolbar_reverse.pngbin0 -> 3326 bytes
-rwxr-xr-xres/images/trim/gallery_video_fastforward_1x.pngbin0 -> 3228 bytes
-rwxr-xr-xres/images/trim/gallery_video_fastforward_2x.pngbin0 -> 3314 bytes
-rwxr-xr-xres/images/trim/gallery_video_fastforward_3x.pngbin0 -> 3414 bytes
-rwxr-xr-xres/images/trim/gallery_video_fastforward_4x.pngbin0 -> 3469 bytes
-rwxr-xr-xres/images/trim/gallery_video_rewind_1x.pngbin0 -> 3269 bytes
-rwxr-xr-xres/images/trim/gallery_video_rewind_2x.pngbin0 -> 3288 bytes
-rwxr-xr-xres/images/trim/gallery_video_rewind_3x.pngbin0 -> 3396 bytes
-rwxr-xr-xres/images/trim/gallery_video_rewind_4x.pngbin0 -> 3464 bytes
-rwxr-xr-xres/images/video_sound_path_dim.pngbin0 -> 527 bytes
-rwxr-xr-xres/images/volume/T01-2_player_progress_bar.pngbin0 -> 2799 bytes
-rwxr-xr-xres/images/volume/T01-2_player_progress_bg.pngbin0 -> 2799 bytes
-rwxr-xr-xres/images/volume/T01-2_player_volume_handle.pngbin0 -> 3127 bytes
-rwxr-xr-xres/images/volume/T01-2_player_volume_handle_press.pngbin0 -> 3168 bytes
-rwxr-xr-xres/images/volume/T01-2_volume_icon_01.pngbin0 -> 3714 bytes
-rwxr-xr-xres/images/volume/T01-2_volume_icon_02.pngbin0 -> 5351 bytes
-rwxr-xr-xres/images/white/common/00_popup_bubble_bg.pngbin0 -> 539 bytes
-rwxr-xr-xres/images/white/common/00_popup_tail_bottom.pngbin0 -> 1111 bytes
-rwxr-xr-xres/images/white/common/00_popup_tail_left.pngbin0 -> 1035 bytes
-rwxr-xr-xres/images/white/common/00_popup_tail_right.pngbin0 -> 1083 bytes
-rwxr-xr-xres/images/white/common/00_popup_tail_top.pngbin0 -> 1107 bytes
-rwxr-xr-xres/images/white/common/00_winset_control_toolbar_bg.pngbin0 -> 2798 bytes
-rwxr-xr-xres/images/white/common/00_winset_control_top_arrow.pngbin0 -> 3200 bytes
-rwxr-xr-xres/images/white/common/00_winset_control_top_bg.pngbin0 -> 2817 bytes
-rwxr-xr-xres/images/white/common/00_winset_title_line.pngbin0 -> 2813 bytes
-rwxr-xr-xres/images/white/common/01_scroller.pngbin0 -> 497 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_arrow.pngbin0 -> 3388 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_bg.pngbin0 -> 2858 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_bg.pngbin0 -> 3623 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_bg2.9.pngbin0 -> 3164 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_normal.pngbin0 -> 3110 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_press_bottom.pngbin0 -> 3144 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_press_middle.pngbin0 -> 3006 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_press_top.pngbin0 -> 3159 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_divider.pngbin0 -> 2814 bytes
-rwxr-xr-xres/images/white/common/T01-2_title_btn_bg.pngbin0 -> 2987 bytes
-rwxr-xr-xres/images/white/common/T01-2_title_btn_bg_press_01.pngbin0 -> 3145 bytes
-rwxr-xr-xres/images/white/common/T01-2_title_btn_bg_press_02.pngbin0 -> 3034 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_next.pngbin0 -> 3403 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_pause.pngbin0 -> 3022 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_play.pngbin0 -> 3181 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_previous.pngbin0 -> 3386 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_stop.pngbin0 -> 3027 bytes
-rwxr-xr-xres/images/white/panel/T01-2_btn_toolbar_back.pngbin0 -> 3493 bytes
-rwxr-xr-xres/images/white/panel/T01-2_btn_toolbar_volume.pngbin0 -> 3601 bytes
-rwxr-xr-xres/images/white/panel/T02_volume_icon_Mute.pngbin0 -> 3367 bytes
-rwxr-xr-xres/po/CMakeLists.txt23
-rwxr-xr-xres/po/POTFILES.in2
-rwxr-xr-xres/po/de_DE.po198
-rwxr-xr-xres/po/el_GR.po198
-rwxr-xr-xres/po/en.po198
-rwxr-xr-xres/po/es_ES.po198
-rwxr-xr-xres/po/fr_FR.po198
-rwxr-xr-xres/po/it_IT.po198
-rwxr-xr-xres/po/ja_JP.po198
-rwxr-xr-xres/po/ko_KR.po198
-rwxr-xr-xres/po/nl_NL.po198
-rwxr-xr-xres/po/pt_PT.po198
-rwxr-xr-xres/po/ru_RU.po198
-rwxr-xr-xres/po/tr_TR.po198
-rwxr-xr-xres/po/zh_CN.po198
-rwxr-xr-xres/po/zh_HK.po198
-rwxr-xr-xres/po/zh_TW.po198
-rw-r--r--src/mp-drm-ctrl.c411
-rwxr-xr-xsrc/mp-external-ug.c628
-rwxr-xr-xsrc/mp-util-media-service.c2497
-rwxr-xr-xsrc/mp-util.c1649
-rwxr-xr-xsrc/mp-video-animation-ctrl.c149
-rwxr-xr-xsrc/mp-video-app-ctrl.c1383
-rwxr-xr-xsrc/mp-video-ctrl-mgr.c571
-rwxr-xr-xsrc/mp-video-display-view.c1341
-rw-r--r--src/mp-video-player-mgr.c856
-rw-r--r--src/mp-video-progressbar.c752
-rwxr-xr-xsrc/mp-video-service-ctrl.c629
-rwxr-xr-xsrc/mp-video-sound-path-ctrl.c605
-rw-r--r--src/mp-video-streaming-ctrl.c818
-rwxr-xr-xsrc/mp-video-streaming-view.c743
-rwxr-xr-xsrc/mp-video-subtitle-ctrl.c352
-rwxr-xr-xsrc/mp-video-view-mgr.c1390
-rw-r--r--src/mp-video-volume-ctrl.c450
-rwxr-xr-xsrc/video-player.c535
395 files changed, 42806 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755
index 0000000..b56e8f7
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,220 @@
+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 ${CMAKE_SOURCE_DIR}/org.tizen.video-player.rule DESTINATION /opt/etc/smack/accesses.d)
+
+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 100644
index 0000000..571fe79
--- /dev/null
+++ b/LICENSE.Flora
@@ -0,0 +1,206 @@
+Flora License
+
+Version 1.1, April, 2013
+
+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 Tizen Compliance Specification
+and passes the Tizen Compliance Tests 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
+ and your own copyright statement or terms and conditions do not conflict
+ the conditions stated in the License including section 3.
+
+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.1 (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
index 0000000..334eb43
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,3 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+Except as noted, this software is licensed under Flora License, Version 1.1
+Please, see the LICENSE.Flora file for Flora License, Version 1.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
index 0000000..130ae19
--- /dev/null
+++ b/include/mp-drm-ctrl.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_DRM_CTRL_H_
+#define _MP_DRM_CTRL_H_
+
+#define DRM_STR_LEN_MAX 2048
+
+typedef enum
+{
+ MP_VIDEO_DRM_ERROR_NONE = 0,
+ MP_VIDEO_DRM_ERROR_INTERNAL,
+ MP_VIDEO_DRM_ERROR_TIME_BASED,
+ MP_VIDEO_DRM_ERROR_INTERVAL,
+ MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE,
+ MP_VIDEO_DRM_ERROR_ACCUMULATED,
+ MP_VIDEO_DRM_ERROR_COUNT,
+ MP_VIDEO_DRM_ERROR_COUNT_SMALL,
+ MP_VIDEO_DRM_ERROR_TIME_COUNT_BASED,
+ MP_VIDEO_DRM_ERROR_TIME_INDIVIDULAL,
+ MP_VIDEO_DRM_ERROR_TIME_SYSTEM,
+ MP_VIDEO_DRM_ERROR_MAX,
+}MpVideoDrmErrorType;
+
+
+
+typedef struct
+{
+ int nErrorCode;
+ int nData;
+}MpVideoDrmInfo;
+
+
+typedef enum
+{
+ VIDEO_DRM_CONSUMPTION_STATE_DISABLE = 0,
+ VIDEO_DRM_CONSUMPTION_STATE_ENABLE,
+}MpVideoDrmConsumptionStateType;
+
+
+void MpVideoDrmInit(void);
+bool MpVideoDrmGetForwardLookState(void);
+void MpVideoDrmSetConsumptionState(int nState);
+int MpVideoDrmGetConsumption(void);
+void MpVideoDrmStartConsumption(char *szPath);
+void MpVideoDrmPauseConsumption(void);
+void MpVideoDrmResumeConsumption(void);
+void MpVideoDrmStopConsumption(void);
+bool MpVideoDrmIsDrmFile(char* szPath); //bool MpVideoDrmFileRight(char* szPath);
+bool MpVideoDrmHasValidRo(char* szPath);
+bool MpVideoDrmCheckForward(char* szPath);
+MpVideoDrmInfo *MpVideoDrmCheckLeftRo(char* szVideoTitle, char* szPath);
+bool MpVideoDrmCheckExpiration(char* szPath);
+
+/* DivX DRM functions */
+void MpVideoDrmGetFileExtension(char *szPath, char *szContentType, int nContentTypeStrSize);
+
+#endif //_MP_DRM_CTRL_H_
diff --git a/include/mp-external-ug.h b/include/mp-external-ug.h
new file mode 100755
index 0000000..691203c
--- /dev/null
+++ b/include/mp-external-ug.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_EXTERNAL_UG_
+#define _MP_EXTERNAL_UG_
+
+
+#include <ui-gadget.h>
+
+
+typedef enum
+{
+ MP_EXTERNAL_UG_NONE = -1,
+ MP_EXTERNAL_UG_MESSAGE = 0,
+ MP_EXTERNAL_UG_EMAIL,
+ MP_EXTERNAL_UG_MYFILE_DETAIL,
+ MP_EXTERNAL_UG_YOUTUBE,
+ MP_EXTERNAL_UG_BLUETOOTH,
+ MP_EXTERNAL_UG_FTM,
+ MP_EXTERNAL_UG_FACEBOOK,
+ MP_EXTERNAL_UG_MAX,
+}MpExternalUGType;
+
+
+bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void* pUserData);
+void MpExternalUgUnload(void);
+void MpExternalUgDestroyAll(void);
+int MpExternalUgGetCurUgState(void);
+void MpExternalUgSetUgState(MpExternalUGType nExternalUGType);
+bool MpExternalUgShow(void *pUserData, void *pParent);
+void MpExternalUgHide();
+
+#endif // _MP_EXTERNAL_UG_
diff --git a/include/mp-util-media-service.h b/include/mp-util-media-service.h
new file mode 100644
index 0000000..bd9628f
--- /dev/null
+++ b/include/mp-util-media-service.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_UTIL_DATABASE_
+#define _MP_UTIL_DATABASE_
+
+#include "video-player.h"
+#include <glib.h>
+
+typedef enum
+{
+ MP_MEDIA_VIDEO_FILE_TYPE = 0,
+ MP_MEDIA_CAMERA_FILE_TYPE,
+ MP_MEDIA_ALL_FILE_TYPE,
+ MP_MEDIA_FILE_TYPE_MAX,
+}MpMediaSvcVideoFileType;
+
+typedef enum
+{
+ MP_MEDIA_SORT_BY_NONE = 0,
+ MP_MEDIA_SORT_BY_NAME_ASC,
+ MP_MEDIA_SORT_BY_NAME_DESC,
+ MP_MEDIA_SORT_BY_DATE_MOST_RECENT,
+ MP_MEDIA_SORT_BY_OLDEST,
+ MP_MEDIA_SORT_BY_MAX,
+}MpMediaSvcSortType;
+
+typedef enum
+{
+ MP_MEDIA_LIST_TYPE_FOLDER = 0,
+ MP_MEDIA_LIST_TYPE_ALL_FOLDER_GALLERY,
+ MP_MEDIA_LIST_TYPE_TAG_GALLERY,
+ MP_MEDIA_LIST_TYPE_FAVORITE,
+ MP_MEDIA_LIST_TYPE_ALLSHARE,
+ MP_MEDIA_LIST_TYPE_MAX,
+}MpMediaSvcListType;
+
+
+void MpUtilMediaSvcInitSession(void);
+void MpUtilMediaSvcFinishSession(void);
+
+////////////////////////////////////////////////////////
+// Manage video item list
+
+// For gallery list
+bool MpUtilMediaSvcExtractVideoListFromFolder(char* szFolderPath, int nSortType); // For myfiles.
+bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType); // For 'All' folder of gallery.
+bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType); // For only video type files of video list view.
+bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType); // For only recorded type files of video list view.
+bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName); // For tag folder of gallery.
+bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType); // For favorite naming of gallery.
+bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword); // For only video type files of video search view*/
+
+
+void MpUtilMediaSvcDestoryVideoList(void);
+bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath);
+bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex);
+bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex);
+
+
+bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID);
+char* MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri);
+unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath);
+unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath);
+int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath);
+void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime);
+
+bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char* szCurrMediaUri, char* szPreMediaUri, char* szNextMediaUri,bool bLoop);
+
+// For video list
+char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex);
+char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex);
+char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex);
+int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex);
+int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex);
+int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex);
+int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex);
+int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex);
+time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex);
+char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex);
+double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex);
+double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex);
+
+int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void);
+int MpUtilMediaSvcGetNumberOfVideoItemByType(void);
+int MpUtilMediaSvcGetTotalVideoTypeFiles(void);
+void MpUtilMediaSvcPrintListInfo(void);
+int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath);
+
+// For folder list
+bool MpUtilMediaSvcExtractVideoFolderList(int nSortType);
+bool MpUtilMediaSvcDestoryVideoFolderList(void);
+int MpUtilMediaSvcGetVideoFolderListSize(void);
+char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex);
+char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex);
+
+////////////////////////////////////////////////////////
+// Manage bookmark
+
+bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list);
+void MpUtilMediaSvcBookmarkListClear(GList *list);
+int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path);
+int MpUtilMediaSvcBookmarkDelete(char *vid, int position);
+int MpUtilMediaSvcBookmarkDeleteAll(char *vid);
+char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle);
+int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle);
+
+#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
index 0000000..f94ea6b
--- /dev/null
+++ b/include/mp-util.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_UTIL_
+#define _MP_UTIL_
+
+
+#include "video-player.h"
+
+
+typedef enum
+{
+ NORMAL_POPUP_RETURN_TYPE_UNKNOW = 0,
+ NORMAL_POPUP_RETURN_TYPE_YES,
+ NORMAL_POPUP_RETURN_TYPE_NO,
+ NORMAL_POPUP_RETURN_TYPE_ERR,
+}NormalPopUpRetType;
+
+
+void MpUtilResetForRelaunching(void);
+void MpUtilSetAlphaOfMainWindow(bool bSetAlpha);
+void* MpUtilCreateMainWindow(const char *pStrName);
+
+int MpUtilSetKeyGrab(const char* szKeyName, int nGrabMode);
+int MpUtilSetKeyUngrab(const char* szKeyName);
+bool MpUtilCheckRTSPType(char *szUriPath);
+int MpUtilCheckUriType(char *szUriPath);
+bool MpUtilCheckLocalFileExist(char *uri);
+bool MpUtilCheckBatteryStatus(void);
+int MpUtilBatteryStatusNoti(VideoAppData* pAppData);
+int MpUtilBatteryStatusNotiIgnore(void);
+int MpUtilMMCstatusNoti(VideoAppData* pAppData);
+int MpUtilMMCstatusNotiIgnore(void);
+int MpUtilCheckDlnaSortType(void* pSvcHandle, char* szBundleKey);
+int MpUtilCheckDlnaMediaID(void* pSvcHandle, char* szBundleKey);
+int MpUtilGetRotationStateFromAppcore(void);
+int MpUtilGetRotationState(void);
+void MpUtilSetRotationState(int nCurRotation);
+bool MpUtilGetTitleFromFilepath(char* szFilepath, char* szTitle, int nLengthTitle);
+void MpUtilInitSession(void);
+void MpUtilFinishSession(void);
+void MpUtilVolumeTypeSet(void);
+void MpUtilVolumeTypeUnset(void);
+bool MpUtilCheckMuteStatus();
+bool MpUtilSetVolumeChangeCbSet(void *pUserData);
+void MpUtilSetVolumeChangeCbUnset();
+void MpUtilDeletePopupHandle(void);
+bool MpUtilNotifyPopUp(VideoAppData* pAppData, char* szContents, void* PopupButtonCallbackFunc);
+bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,void *PopupButtonCallbackFunc);
+bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc);
+bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData);
+bool MpUtilProgressPopUp(VideoAppData* pAppData, char* szLabel);
+void MpUtilStatusBarNotiPopupShow(const char *szStr);
+void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func);
+void* MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func);
+void* MpUtilLoadEdjFile(Evas* pEvas, char* szEdjName, char* szGroupName);
+bool MpUtilIsCallOff(void);
+bool MpUtilIsCameraOff(void);
+bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData);
+bool MpUtilIsConnectEarjack(void);
+bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData);
+bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl);
+bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize);
+bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl);
+bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize);
+unsigned int MpUtilGetMainWindowXID(void);
+void MpUtilRotateWindow(int nRotateMode, void* pWindowHandle);
+void MpUtilGetUserAgent(VideoAppData* pAppData);
+double MpUtilGetSysTime(void);
+void MpUtilLcdNormalPowerLockForResume(void);
+void MpUtilLcdNormalPowerUnlockForPause(void);
+void MpUtilLcdOffForPowerButton(void);
+bool MpUtilTurnOverSensorInit(void *pUserData);
+bool MpUtilTurnOverSensorDestroy(void);
+void MpUtilMultimediaKeyGrab(void);
+void MpUtilMultimediaKeyUngrab(void);
+void MpUtilMultimediaVolumeKeyGrab(void);
+void MpUtilMultimediaVolumeKeyUngrab(void);
+
+char* MpUtilGetFileSize(unsigned int size);
+void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour);
+bool MpUtilAddToHome(const char *file_path);
+void MpUtilLayoutVisibleOff(void *pWindowHandle);
+
+#endif // _MP_UTIL_
diff --git a/include/mp-video-animation-ctrl.h b/include/mp-video-animation-ctrl.h
new file mode 100755
index 0000000..0614f9b
--- /dev/null
+++ b/include/mp-video-animation-ctrl.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_LOADING_ANIMATION_CTRL_
+#define _VIDEO_LOADING_ANIMATION_CTRL_
+
+
+void* MpVideoAnimationCtrlInit(void* pUserData);
+void MpVideoAnimationCtrlDestroy(void);
+void MpVideoAnimationCtrlSetPercent(int nPercent);
+void MpVideoAnimationCtrlPlay(void);
+void MpVideoAnimationCtrlStop(void);
+void MpVideoAnimationCtrlShow(void);
+void MpVideoAnimationCtrlHide(void);
+bool MpVideoAnimationCtrlGetActiveState(void);
+
+
+#endif /* _VIDEO_LOADING_ANIMATION_CTRL_ */
+
diff --git a/include/mp-video-app-ctrl.h b/include/mp-video-app-ctrl.h
new file mode 100644
index 0000000..37ed298
--- /dev/null
+++ b/include/mp-video-app-ctrl.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_APP_CTRL_
+#define _VIDEO_APP_CTRL_
+
+
+#include "video-player.h"
+
+
+bool MpVideoAppCtrlInit(VideoAppData* pAppData);
+bool MpVideoAppCtrlResetForRelaunching(VideoAppData* pAppData);
+bool MpVideoAppCtrlIsTopView(void* pUserData);
+bool MpVideoAppCtrlIsExistPlayerHandle(void);
+void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState);
+void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData);
+bool MpVideoAppCtrlGetFloatingStatus(void);
+bool MpVideoAppCtrlIsCheckCallStatus(void);
+void MpVideoAppCtrlInitCheckCallStatus(void);
+
+#endif /* _VIDEO_APP_CTRL_ */
diff --git a/include/mp-video-ctrl-mgr.h b/include/mp-video-ctrl-mgr.h
new file mode 100644
index 0000000..ca2863b
--- /dev/null
+++ b/include/mp-video-ctrl-mgr.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 100755
index 0000000..13c1cdc
--- /dev/null
+++ b/include/mp-video-display-view.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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);
+void MpVideoDisplayViewSetMuteStatus(bool bMute);
+
+#endif
diff --git a/include/mp-video-info-ctrl.h b/include/mp-video-info-ctrl.h
new file mode 100755
index 0000000..b87847d
--- /dev/null
+++ b/include/mp-video-info-ctrl.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..468e638
--- /dev/null
+++ b/include/mp-video-info-view.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_VIEW_
+#define _VIDEO_INFO_VIEW_
+
+
+void MpVideoInfoViewPush(void* pNaviFrame, void* pUserData);
+void MpVideoInfoViewPop(void* pNaviFrame, void* pUserData);
+void MpVideoInfoViewDestroy(void);
+
+
+#endif
diff --git a/include/mp-video-log.h b/include/mp-video-log.h
new file mode 100644
index 0000000..9a6caad
--- /dev/null
+++ b/include/mp-video-log.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..a85c80f
--- /dev/null
+++ b/include/mp-video-player-mgr.h
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..a4bd205
--- /dev/null
+++ b/include/mp-video-progressbar.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_PROGRESS_BAR_CTRL_
+#define _VIDEO_PROGRESS_BAR_CTRL_
+
+
+void* MpVideoProgressbarGetEdjHandle(void);
+void* MpVideoProgressbarInit(void* pUserData);
+void MpVideoProgressbarDestroy(void);
+void MpVideoProgressbarCreateTimer(void* pUserData);
+void MpVideoProgressbarDeleteTimer(void);
+void MpVideoProgressbarUpdateDurationTime(char* szDurationTime);
+void MpVideoProgressbarBeginOfStream(void *pUserData);
+void MpVideoProgressbarReset(void* pUserData);
+void MpVideoProgressbarSetSkipEvent(bool bSkip);
+
+#endif /* _VIDEO_PROGRESS_BAR_CTRL_ */
diff --git a/include/mp-video-service-ctrl.h b/include/mp-video-service-ctrl.h
new file mode 100644
index 0000000..9d8ddd5
--- /dev/null
+++ b/include/mp-video-service-ctrl.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..20c3f03
--- /dev/null
+++ b/include/mp-video-sound-path-ctrl.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_SOUND_PATH_
+#define _MP_VIDEO_SOUND_PATH_
+
+
+bool MpVideoSoundpathShow(void* pUserData);
+void MpVideoSoundpathHide(void);
+
+bool MpVideoSoundpathIsConnectOtherSoundpath(void);
+
+#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
index 0000000..1d89bd1
--- /dev/null
+++ b/include/mp-video-streaming-ctrl.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 _STREAMING_PLAYER_H_
+#define _STREAMING_PLAYER_H_
+
+
+#ifdef USE_DNET
+int MpVideoStreamingCtrlConnection(void* pUserData);
+int MpVideoStreamingCtrlDisconnection(void* pUserData);
+int MpVideoStreamingCtrlIsConnected(void);
+#else
+bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress);
+bool MpVideoStreamingCtrlGetProxy(char* szRetProxy);
+bool MpVideoStreamingCtrlIsNetworkOn(void);
+int MpVideoStreamingCtrlGetNetworkStatus(void);
+int MpVideoStreamingCtrlGetWifiState();
+int MpVideoStreamingCtrlGetCellularState();
+bool MpVideoStreamingCtrlInit(void *pUserData);
+void MpVideoStreamingCtrlDestroy(void *pUserData);
+
+#endif
+
+
+#endif /* _STREAMING_PLAYER_H_ */
diff --git a/include/mp-video-streaming-view.h b/include/mp-video-streaming-view.h
new file mode 100755
index 0000000..490ddf1
--- /dev/null
+++ b/include/mp-video-streaming-view.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_STREAMING_VIEW_
+#define _VIDEO_STREAMING_VIEW_
+
+
+typedef enum
+{
+ MP_STREAMING_VIEW_STATE_ACTIVATE = 0,
+ MP_STREAMING_VIEW_STATE_UNACTIVATE,
+ MP_STREAMING_VIEW_STATE_MAX,
+}VideoStreamingViewState;
+
+typedef void (*ChangeStreamingViewCbFunc)(int nChangePlayerView, void* pUserData);
+
+void MpVideoStreamingViewPush(void* pNaviFrame, int nPlayerType, void* pUserData, ChangeStreamingViewCbFunc pChangeViewCb);
+void MpVideoStreamingViewPop(void* pNaviFrame, void* pUserData);
+void MpVideoStreamingViewDestroy(void* pUserData);
+
+void MpVideoStreamingViewInitAfterBeginOfStream(void* pUserData);
+void MpVideoStreamingViewUpdatePauseKey(void);
+void MpVideoStreamingViewUpdateResumeKey(void);
+void MpVideoStreamingViewShowControlPanel(void* pUserData);
+void MpVideoStreamingViewHideControlPanel(void* pUserData);
+void MpVideoStreamingViewActivate(void);
+void MpVideoStreamingViewUnactivate(void);
+void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide);
+void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate);
+bool MpVideoStreamingViewGetBufferingState(void);
+bool MpVideoStreamingViewIsTopView(void);
+void MpVideoStreamingViewShowNocontentImage(void *pUserData);
+void MpVideoStreamingViewHideNocontentImage(void);
+void MpVideoStreamingViewPortrate(void);
+void MpVideoStreamingViewLandscape(void);
+void MpVideoStreamingViewUpdateProgressBar(void *pUserData);
+void MpVideoStreamingViewSetMuteStatus(bool bMute);
+
+#endif
diff --git a/include/mp-video-string-define.h b/include/mp-video-string-define.h
new file mode 100644
index 0000000..b53cd2a
--- /dev/null
+++ b/include/mp-video-string-define.h
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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_STRING_DEFINE_
+#define _VIDEO_STRING_DEFINE_
+
+#include <app.h>
+
+#define MP_SYS_STRING "sys_string"
+#define MP_STREAMING_PLAYER_STR "Streaming player"
+#define MP_VPL_SOUND_ALIVE "Sound Alive"
+#define MP_VPL_ADD_TO_HOME _("IDS_AT_BUTTON_ADD_TO_HOME")
+#define MP_VIDEO_SOUND_PATH "Sound Path"
+
+
+
+
+/* SMTP Repeat mode string */
+#define MP_VPL_REPEAT_OFF "Stop after current "
+#define MP_VPL_REPEAT_ALL_OFF "Stop after playing all "
+#define MP_VPL_REPEAT_ONE "Repeat the current "
+#define MP_VPL_REPEAT_ALL "Repeat all "
+
+
+#define MP_SHARE_MESSAGE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_MESSAGE"))
+#define MP_SHARE_EMAIL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_EMAIL"))
+#define MP_SHARE_BLUETOOTH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_BLUETOOTH"))
+#define MP_SHARE_FTM (dgettext(MP_SYS_STRING, "IDS_COM_BODY_WI_FI"))
+#define MP_SHARE_FACEBOOK (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FACEBOOK"))
+#define MP_SHARE_YOUTUBE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_YOU_TUBE"))
+#define MP_SHARE_ALLSHARE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_ALLSHARE"))
+
+
+// SMTP video player string
+#define MP_VPL_UNABLE_TO_PLAY_VIDEO "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+#define MP_VPL_HEADER_SHARE_VIDEO_ABB "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+#define MP_VPL_OPT_SET_AS "IDS_VPL_OPT_SET_AS"
+#define MP_VPL_POP_INVALID_STREAMING_DATA "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+#define MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+#define MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+#define MP_VPL_POP_UNSUPPORTED_FILE_TYPE "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+#define MP_VPL_SOUND_ALIVE_NORMAL "IDS_VPL_OPT_NORMAL"
+#define MP_VPL_SOUND_ALIVE_VOICE "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
+#define MP_VPL_SOUND_ALIVE_MOVIE "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
+#define MP_VPL_SOUND_ALIVE_51CH "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
+#define MP_VPL_51CH_ONLY_EARPHONE "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+#define MP_VPL_GPS_LATITUDE "IDS_VPL_BODY_LATITUDE"
+#define MP_VPL_GPS_LONGITUTD "IDS_VPL_BODY_LONGITUDE"
+#define MP_VPL_TRIM "IDS_VPL_SK3_TRIM"
+#define MP_VPL_SUBTITLES "IDS_VPL_OPT_SUBTITLES"
+#define MP_VPL_AUDIO_TRACK _("IDS_VPL_OPT_AUDIO_TRACK")
+#define MP_VPL_VIDEO_AUTO_OFF _("IDS_VPL_HEADER_VIDEO_AUTO_OFF_ABB")
+#define MP_VPL_BODY_NORMAL _("IDS_VPL_BODY_NORMAL")
+#define MP_VPL_BODY_WARM _("IDS_VPL_BODY_WARM")
+#define MP_VPL_BODY_COLD _("IDS_VPL_BODY_COLD_M_COLOURTONE")
+#define MP_VPL_BODY_COLOR_TONE _("IDS_VPL_BODY_COLOUR_TONE")
+#define MP_VPL_OUTDOOR_VISIBILITY _("IDS_VPL_OPT_OUTDOOR_VISIBILITY")
+#define MP_VPL_BODY_AFTER_PD_HOURS _("IDS_VPL_BODY_AFTER_PD_HOURS")
+#define MP_VPL_BODY_AFTER_PD_MINUTES _("IDS_VPL_BODY_AFTER_PD_MINUTES")
+#define MP_VPL_OPT_AFTER_1_HOUR_30_MIN _("IDS_VPL_OPT_AFTER_1_HOUR_30_MIN")
+#define MP_VPL_BODY_AFTER_1_HOUR _("IDS_VPL_BODY_AFTER_1_HOUR")
+
+
+/* SMTP Subtitle option string */
+#define MP_VPL_SUBTITLE_SIZE_LARGE _("IDS_VPL_BODY_LARGE")
+#define MP_VPL_SUBTITLE_SIZE_MEDIUM _("IDS_VPL_BODY_MEDIUM")
+#define MP_VPL_SUBTITLE_SIZE_SMALL _("IDS_VPL_BODY_SMALL")
+#define MP_VPL_SUBTITLE_SHOW _("IDS_VPL_BODY_SUBTITLES_ON")
+#define MP_VPL_SUBTITLE_HIDE _("IDS_VPL_BODY_SUBTITLES_OFF")
+#define MP_VPL_SUBTITLE_SIZE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE"))
+#define MP_VPL_SUBTITLE_LANGUAGE (dgettext(MP_SYS_STRING, "IDS_COM_SK_LANGUAGE"))
+#define MP_VPL_SUBTITLE_SYNC (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SYNCHRONIZE"))
+
+
+// SMTP others module string
+#define MP_BT_POP_FILEBROWSINGFAIL "IDS_BT_POP_FILEBROWSINGFAIL"
+#define MP_BLUETOOTH_HEADSET_DISCONNECTED "IDS_DVBH_POP_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+#define MP_WGT_POP_ALLOW_TO_DELETE_FILE_Q "IDS_WGT_POP_ALLOW_TO_DELETE_FILE_Q"
+#define MP_EBOOK_BODY_LOADING_ING "IDS_EBOOK_BODY_LOADING_ING"
+#define MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+
+// SORT
+#define MP_VPL_SORT_BY_TITLE _("IDS_VPL_OPT_SORT_BY")
+#define MP_VPL_OPT_NAME_HA_TO_Z _("IDS_VPL_OPT_NAME_HA_TO_Z")
+#define MP_VPL_OPT_NAME_HZ_TO_A _("IDS_VPL_OPT_NAME_HZ_TO_A")
+#define MP_VPL_OPT_DATE_HMOST_RECENT _("IDS_VPL_OPT_DATE_HMOST_RECENT")
+#define MP_VPL_OPT_DATE_HOLDEST _("IDS_VPL_OPT_DATE_HOLDEST")
+
+
+// Default system string
+#define MP_COM_POP_ERROR (dgettext(MP_SYS_STRING, "IDS_COM_POP_ERROR"))
+#define MP_COM_BODY_LOW_BATTERY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_LOW_BATTERY"))
+#define MP_COM_BODY_DELETE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DELETE"))
+#define MP_COM_BODY_DELETE_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETE_Q"))
+#define MP_COM_BODY_SELECT_ALL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SELECT_ALL"))
+#define MP_COM_POP_SELECTED (dgettext(MP_SYS_STRING, "IDS_COM_POP_SELECTED"))
+#define MP_COM_POP_DELETED (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETED"))
+#define MP_COM_SK_BACK (dgettext(MP_SYS_STRING, "IDS_COM_SK_BACK"))
+
+#define MP_COM_SK_YES (dgettext(MP_SYS_STRING, "IDS_COM_SK_YES"))
+#define MP_COM_SK_NO (dgettext(MP_SYS_STRING, "IDS_COM_SK_NO"))
+#define MP_COM_BUTTON_CANCEL (dgettext(MP_SYS_STRING, "IDS_IDLE_BUTTON_CANCEL"))
+#define MP_COM_BUTTON_SHARE (dgettext(MP_SYS_STRING, "IDS_COM_BUTTON_SHARE"))
+#define MP_COM_BODY_SIZE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE"))
+#define MP_COM_BODY_DETAILS_TITLE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS_TITLE"))
+#define MP_COM_BODY_FORMAT (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FORMAT"))
+#define MP_COM_POP_DATE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DATE" ))
+#define MP_COM_BODY_SOUNDS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS"))
+#define MP_IDLE_BODY_RESOLUTION (dgettext(MP_SYS_STRING, "IDS_IDLE_BODY_RESOLUTION"))
+#define MP_COM_BODY_DETAILS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS"))
+#define MP_VIDEO_POPUP_SHARE (dgettext(MP_SYS_STRING, "IDS_COM_SK4_SHARE"))
+#define MP_COM_SEARCH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SEARCH"))
+#define MP_COM_CLOSE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_CLOSE"))
+
+#define MP_COM_SOUND_ALIVE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS"))
+#define MP_COM_SETTINGS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SETTINGS"))
+#define MP_COM_POP_FILE_NOT_FOUND (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_FOUND"))
+#define MP_COM_POP_INVALID_URL (dgettext(MP_SYS_STRING, "IDS_COM_POP_INVALID_URL"))
+#define MP_COM_POP_CONNECTION_FAILED (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_FAILED"))
+#define MP_COM_POP_FILE_NOT_EXIST (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_EXIST"))
+#define MP_COM_POP_NO_VIDEOS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_NO_VIDEOS"))
+#define MP_COM_VIDEOS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_VIDEOS"))
+#define MP_COM_FOLDER (dgettext(MP_SYS_STRING, "IDS_COM_POP_FOLDER"))
+#define MP_COM_CANCEL (dgettext(MP_SYS_STRING, "IDS_COM_SK_CANCEL"))
+#define MP_COM_DELETE (dgettext(MP_SYS_STRING, "IDS_COM_OPT_DELETE"))
+#define MP_COM_CONNECTION_FAIL (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_ERROR"))
+#define MP_COM_REPEAT_MODE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_REPEAT"))
+#define MP_COM_OPT_ADDED (dgettext(MP_SYS_STRING, "IDS_COM_OPT_ADDED"))
+#define MP_COM_BODY_GENERAL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_GENERAL"))
+#define MP_COM_BODY_DISPLAY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DISPLAY"))
+#define MP_COM_BODY_OFF (dgettext(MP_SYS_STRING, "IDS_COM_BODY_OFF"))
+#define MP_COM_RECORDED _("IDS_VPL_BODY_RECORDED")
+
+#define MP_VIDEO_CHAPTER_VIEW _("IDS_VPL_HEADER_CHAPTER_PREVIEW_ABB")
+
+#define MP_VPL_SORT_BY "Sort by"
+#define MP_VPL_BOOKMARK_LIST_FULL _("IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS")
+
+/* DRM POPUP */
+#define MP_VPL_DRM_INTERVAL_BASED_DAYS _("You can use %s for %d days. Would you like to open it now?")
+#define MP_VPL_DRM_TIME_BASED_GET _("%s is about to be locked. Do you want to get more licenses?")
+#define MP_VPL_DRM_COUNT_BASED_OPEN_ONE _("You have one more use of %s. Do you want to open it now?")
+#define MP_VPL_DRM_COUNT_BASED_OPEN_MANY _("You have %d more uses of %s. Do you want to open it now?")
+#define MP_VPL_DRM_COUNT_BASED_ONE_MORE_GET _("You have one more use of %s. Do you want to get more licenses?")
+#define MP_VPL_DRM_COUNT_BASED_NO_MORE_GET _("You have no more use of %s. Do you want to get more licenses?")
+#define MP_VPL_DRM_UNLOCK _("%s is currently locked. Do you want to unlock it now?")
+
+/*DV*/
+#define DV_BTN_LABEL_SEARCH (dgettext("sys_string", "IDS_COM_SK_SEARCH"))
+#define DV_BTN_LABEL_CANCEL (dgettext("sys_string", "IDS_COM_SK_CANCEL"))
+
+#endif //_VIDEO_STRING_DEFINE_
diff --git a/include/mp-video-subtitle-ctrl.h b/include/mp-video-subtitle-ctrl.h
new file mode 100755
index 0000000..1c329c4
--- /dev/null
+++ b/include/mp-video-subtitle-ctrl.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..5bb0f86
--- /dev/null
+++ b/include/mp-video-type-define.h
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..8536cb6
--- /dev/null
+++ b/include/mp-video-value-define.h
@@ -0,0 +1,505 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 100755
index 0000000..24a4fca
--- /dev/null
+++ b/include/mp-video-view-mgr.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 MpVideoViewCtrlSetMuteValue(bool bMute);
+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
index 0000000..4b8a7ea
--- /dev/null
+++ b/include/mp-video-volume-ctrl.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 100755
index 0000000..278d15e
--- /dev/null
+++ b/include/video-player.h
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 (*VideoAppCtrlSetMute) (VideoAppData *pAppData, bool bMute);
+
+
+ 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
index 0000000..b0d83bf
--- /dev/null
+++ b/org.tizen.video-player.manifest
@@ -0,0 +1,14 @@
+<manifest>
+ <define>
+ <domain name="org.tizen.video-player" />
+ </define>
+ <assign>
+ <filesystem path="/usr/ug/lib/*" label="_" />
+ <filesystem path="/usr/ug/res/*" label="_" />
+ <filesystem path="/usr/ug/bin/*" label="_" exec_label="_" />
+ </assign>
+ <request>
+ <domain name="org.tizen.video-player" />
+ </request>
+</manifest>
+
diff --git a/org.tizen.video-player.rule b/org.tizen.video-player.rule
new file mode 100755
index 0000000..e9581a8
--- /dev/null
+++ b/org.tizen.video-player.rule
@@ -0,0 +1,70 @@
+org.tizen.video-player org.tizen.videos rwxat
+org.tizen.video-player com.samsung.vp-chapter-svc rwxat
+org.tizen.video-player system::homedir rwxat
+org.tizen.video-player system::vconf rwxat
+org.tizen.video-player system::vconf_setting rwxat
+org.tizen.video-player system::vconf_inhouse rwxat
+org.tizen.video-player system::vconf_privacy rwxat
+org.tizen.video-player system::vconf_system rwxat
+org.tizen.video-player system::vconf_multimedia rwxat
+org.tizen.video-player system::vconf_network rwxat
+org.tizen.video-player system::vconf_misc rwxat
+org.tizen.video-player system::media rwxat
+org.tizen.video-player system::share rwxat
+org.tizen.video-player pulseaudio rwxat
+org.tizen.video-player sys-assert::core rwxat
+org.tizen.video-player org.tizen.indicator rw
+org.tizen.video-player ail::db rw
+org.tizen.video-player system::use_internet rw
+org.tizen.video-player xorg rw
+org.tizen.video-player isf rwx
+org.tizen.video-player sound_server rw
+org.tizen.video-player media-data::db rw
+org.tizen.video-player allshare::svc rwx
+org.tizen.video-player dbus rwx
+org.tizen.video-player media-server rwx
+org.tizen.video-player power_manager w
+org.tizen.video-player device::app_logging w
+org.tizen.video-player device::video r
+org.tizen.video-player device::hwcodec rw
+org.tizen.video-player device::bklight rw
+org.tizen.video-player libaccounts-svc::db rw
+org.tizen.video-player device::camera r
+org.tizen.video-player org.tizen.facebook rw
+org.tizen.video-player stest-service w
+org.tizen.video-player cloud-content-sync::db rw
+org.tizen.video-player cloud-content-sync rwx
+org.tizen.video-player org.tizen.setting rw
+org.tizen.video-player device::mdnie rw
+org.tizen.video-player download-provider rw
+org.tizen.video-player drmfw rw
+org.tizen.video-player nfc-manager w
+org.tizen.video-player deviced rwx
+org.tizen.video-player syslogd w
+org.tizen.video-player vcs-server rwx
+org.tizen.video-player stt-server rwx
+org.tizen.video-player secure-storage w
+org.tizen.video-player email-service x
+org.tizen.video-player secure-storage::divx-fragment rw
+
+e17 org.tizen.video-player w
+org.tizen.app-tray org.tizen.video-player rx
+system::use_internet org.tizen.video-player w
+org.tizen.volume org.tizen.video-player r
+media-server org.tizen.video-player w
+org.tizen.cluster-home org.tizen.video-player rx
+stest-service org.tizen.video-player rx
+org.tizen.setting org.tizen.video-player w
+wifi_direct_manager org.tizen.video-player rwx
+miracast-server org.tizen.video-player rwx
+
+org.tizen.data-provider-slave org.tizen.video-player rwx
+org.tizen.data-provider-slave media-data::db rwx
+org.tizen.data-provider-slave media-server rwx
+org.tizen.add-viewer org.tizen.video-player rwx
+org.tizen.video-player org.tizen.cluster-home w
+org.tizen.video-player data-provider-master rw
+
+org.tizen.video-player ug.email-composer-efl include
+org.tizen.video-player ug.setting-bluetooth-efl include
+org.tizen.video-player ug.fileshare-efl include
diff --git a/org.tizen.video-player.xml b/org.tizen.video-player.xml
new file mode 100755
index 0000000..9ca4b03
--- /dev/null
+++ b/org.tizen.video-player.xml
@@ -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
index 0000000..2447908
--- /dev/null
+++ b/packaging/org.tizen.video-player.spec
@@ -0,0 +1,96 @@
+Name: org.tizen.video-player
+Summary: Video & streaming player
+Version: 0.5.141
+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
+cp LICENSE.Flora %{buildroot}/usr/share/license/%{name}
+
+%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
+/opt/etc/smack/accesses.d/org.tizen.video-player.rule
+
+%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
index 0000000..c045ecb
--- /dev/null
+++ b/res/edc/add_tag.edc
@@ -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
index 0000000..cb57b00
--- /dev/null
+++ b/res/edc/animation.edc
@@ -0,0 +1,299 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define CONTROL_BUTTON_STEP(_item_name_, _val_) \
+program { \
+ signal: "signal."_item_name_".step."_val_; \
+ source: "*"; \
+ action: STATE_SET "step_"_val_ 0.0; \
+ target: _item_name_; \
+} // CONTROL_BUTTON_STEP
+
+
+collections {
+ group {
+ name: "animation";
+
+ parts {
+ part {
+ name: "loading.back";
+ 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: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "loading.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 288 54;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: FONT_COLOR;
+ text {
+ font: FONT_BOLD_TYPE;
+ text_class: "slp";
+ size: 32;
+ text: "";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "loading.image";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 138 138;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5;}
+ rel2 { relative: 0.5 0.5;}
+ image { normal: "gallery_loading_ani_01.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_01.png"; }
+ }
+ description {
+ state: "step_1" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_01.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_02.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_03.png"; }
+ }
+ description {
+ state: "step_4" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_04.png"; }
+ }
+ description {
+ state: "step_5" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_05.png"; }
+ }
+ description {
+ state: "step_6" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_06.png"; }
+ }
+ description {
+ state: "step_7" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_07.png"; }
+ }
+ description {
+ state: "step_8" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_08.png"; }
+ }
+ description {
+ state: "step_9" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_09.png"; }
+ }
+ description {
+ state: "step_10" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_10.png"; }
+ }
+ description {
+ state: "step_11" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_11.png"; }
+ }
+ description {
+ state: "step_12" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_12.png"; }
+ }
+ description {
+ state: "step_13" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_13.png"; }
+ }
+ description {
+ state: "step_14" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_14.png"; }
+ }description {
+ state: "step_15" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_15.png"; }
+ }
+ description {
+ state: "step_16" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_16.png"; }
+ }
+ description {
+ state: "step_17" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_17.png"; }
+ }
+ description {
+ state: "step_18" 0.0;
+ inherit: "show" 0.0;
+ image { normal: "gallery_loading_ani_18.png"; }
+ }
+ description {
+ state: "step_19" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_19.png"; }
+ }
+ description {
+ state: "step_20" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_20.png"; }
+ }
+ description {
+ state: "step_21" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_21.png"; }
+ }
+ description {
+ state: "step_22" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_22.png"; }
+ }
+ description {
+ state: "step_23" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_23.png"; }
+ }
+ description {
+ state: "step_24" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_24.png"; }
+ }
+ description {
+ state: "step_25" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_25.png"; }
+ }
+ description {
+ state: "step_26" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_26.png"; }
+ }
+ description {
+ state: "step_27" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_27.png"; }
+ }
+ description {
+ state: "step_28" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_28.png"; }
+ }
+ description {
+ state: "step_29" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_29.png"; }
+ }
+ description {
+ state: "step_30" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_30.png"; }
+ }
+ description {
+ state: "step_0" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ } // parts
+
+ programs {
+ CONTROL_BUTTON_STEP( "loading.image", 0);
+ CONTROL_BUTTON_STEP( "loading.image", 1);
+ CONTROL_BUTTON_STEP( "loading.image", 2);
+ CONTROL_BUTTON_STEP( "loading.image", 3);
+ CONTROL_BUTTON_STEP( "loading.image", 4);
+ CONTROL_BUTTON_STEP( "loading.image", 5);
+ CONTROL_BUTTON_STEP( "loading.image", 6);
+ CONTROL_BUTTON_STEP( "loading.image", 7);
+ CONTROL_BUTTON_STEP( "loading.image", 8);
+ CONTROL_BUTTON_STEP( "loading.image", 9);
+ CONTROL_BUTTON_STEP( "loading.image", 10);
+ CONTROL_BUTTON_STEP( "loading.image", 11);
+ CONTROL_BUTTON_STEP( "loading.image", 12);
+ CONTROL_BUTTON_STEP( "loading.image", 13);
+ CONTROL_BUTTON_STEP( "loading.image", 14);
+ CONTROL_BUTTON_STEP( "loading.image", 15);
+ CONTROL_BUTTON_STEP( "loading.image", 16);
+ CONTROL_BUTTON_STEP( "loading.image", 17);
+ CONTROL_BUTTON_STEP( "loading.image", 18);
+ CONTROL_BUTTON_STEP( "loading.image", 19);
+ CONTROL_BUTTON_STEP( "loading.image", 20);
+ CONTROL_BUTTON_STEP( "loading.image", 21);
+ CONTROL_BUTTON_STEP( "loading.image", 22);
+ CONTROL_BUTTON_STEP( "loading.image", 23);
+ CONTROL_BUTTON_STEP( "loading.image", 24);
+ CONTROL_BUTTON_STEP( "loading.image", 25);
+ CONTROL_BUTTON_STEP( "loading.image", 26);
+ CONTROL_BUTTON_STEP( "loading.image", 27);
+ CONTROL_BUTTON_STEP( "loading.image", 28);
+ CONTROL_BUTTON_STEP( "loading.image", 29);
+ CONTROL_BUTTON_STEP( "loading.image", 30);
+
+ } // programs
+ } // group
+} // collections
diff --git a/res/edc/control.edc b/res/edc/control.edc
new file mode 100755
index 0000000..a70a5a4
--- /dev/null
+++ b/res/edc/control.edc
@@ -0,0 +1,1167 @@
+
+#define BUTTON_PRESS_COLOR 56 149 205 255
+#define CONTROL_ICON_SIZE 136 114
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+// part macro
+
+#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_ ) \
+part { \
+ name: _name_; \
+ type: IMAGE; \
+ scale: 1; \
+ mouse_events: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: _w_ _h_; \
+ fixed: 1 1; \
+ align: _align_x_ _align_y_; \
+ rel1 { relative: _rel_x1_ _rel_y1_; to : _to_;} \
+ rel2 { relative: _rel_x2_ _rel_y2_; to : _to_;} \
+ image { normal: _img_def_; border: 4 4 0 0;} \
+ color: 255 255 255 255; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ min: _w_ _h_; \
+ fixed: 1 1; \
+ align: _align_x_ _align_y_; \
+ rel1 { relative: _rel_x1_ _rel_y1_; to : _to_;} \
+ rel2 { relative: _rel_x2_ _rel_y2_; to : _to_;} \
+ image { normal: _img_press_; border: 4 4 0 0;} \
+ color: 255 255 255 255; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+} // CONTROL_BUTTON_PRESS_PART
+
+
+
+// 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_".released"; \
+ source: _item_name_; \
+ signal: "mouse,up,1"; \
+ action: STATE_SET "default" 0.0; \
+ target: _item_name_; \
+ after: "send."_item_name_".up.signal"; \
+} \
+program { \
+ name: _item_name_".clicked"; \
+ source: _item_name_; \
+ signal: "mouse,clicked,1"; \
+ action: STATE_SET "default" 0.0; \
+ target: _item_name_; \
+ after: "send."_item_name_".clicked.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_; \
+} \
+program { \
+ name: "send."_item_name_".clicked.signal"; \
+ action: SIGNAL_EMIT "signal."_item_name_".clicked" _item_name_; \
+} // CONTROL_BUTTON_PROG
+
+
+#define CONTROL_BUTTON_STEP(_item_name_, _val_) \
+program { \
+ signal: "signal."_item_name_".step."_val_; \
+ source: "*"; \
+ action: STATE_SET "step_"_val_ 0.0; \
+ target: _item_name_; \
+} // CONTROL_BUTTON_STEP
+
+#define CONTROL_BUTTON_STEP_LANDSCAPE(_item_name_, _val_) \
+program { \
+ signal: "signal."_item_name_".landscape.step."_val_; \
+ source: "*"; \
+ action: STATE_SET "step_"_val_"_landscape" 0.0; \
+ target: _item_name_; \
+} // CONTROL_BUTTON_STEP
+
+collections {
+ group {
+ name: "control";
+
+ script {
+ public val_volume_check = 0; /* 0: unmute, 1: mute */
+ public val_play_status = 0; /* 0: pause , 1: resume */
+ public val_display_mode = 0; /* 0: normal, 1: trim, 2: streaming, 3: DLNA*/
+ public val_rotate_mode = 0; /* 0: portrate, 1: landscape */
+
+ public change_display_mode() {
+
+ run_program(PROGRAM:"set.visible.off");
+
+ if(get_int(val_display_mode ) == 0) { /* normal mode */
+ run_program(PROGRAM:"set.mode.normal");
+ }
+ if(get_int(val_display_mode ) == 1) { /* trim mode */
+ run_program(PROGRAM:"set.mode.trim");
+ }
+ if(get_int(val_display_mode ) == 2) { /* streaming mode */
+ run_program(PROGRAM:"set.mode.streaming");
+ }
+ if(get_int(val_display_mode ) == 3) { /* dlna mode */
+ run_program(PROGRAM:"set.mode.dlna");
+ }
+ } /* change_display_mode */
+
+
+ public set_volume_check() {
+ if(get_int(val_volume_check ) == 0) {
+ run_program(PROGRAM:"set.volume.unmute");
+ }
+ else {
+ run_program(PROGRAM:"set.volume.mute");
+ }
+ } /* set_volume_check */
+
+ public send_play_value() {
+ if(get_int(val_play_status ) == 0) {
+ run_program(PROGRAM:"send.play.resume");
+ }
+ else {
+ run_program(PROGRAM:"send.play.pause");
+ }
+ } /* send_play_value */
+
+
+ public set_play_status() {
+ if(get_int(val_play_status ) == 0) {
+ run_program(PROGRAM:"set.play.default");
+ }
+ else {
+ run_program(PROGRAM:"set.play.pause");
+ }
+ } /* set_play_status */
+
+
+ public set_play_button_press() {
+ if(get_int(val_play_status ) == 0) {
+ run_program(PROGRAM:"press.resume.button");
+ }
+ else {
+ run_program(PROGRAM:"press.pause.button");
+ }
+ } // set_play_button_press
+ } // script
+
+ parts {
+ part {
+ name: "control.rect";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ visible : 0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 255 0 0 0;
+ }
+ }
+
+ part {
+ name: "control.rect.1";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 144 0;
+ fixed: 1 0;
+ visible : 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.2 1.0; }
+ color: 255 0 0 0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 180 0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.1406 1.0; }
+
+ }
+ }
+
+ part {
+ name: "control.rect.2";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 144 0;
+ fixed: 1 0;
+ visible : 1;
+ rel1 { relative: 0.2 0.0;}
+ rel2 { relative: 0.4 1.0;}
+ color: 0 255 0 0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 271 0;
+ rel1 { relative: 0.18125 0.0;}
+ rel2 { relative: 0.39296 1.0;}
+ }
+ }
+
+ part {
+ name: "control.rect.3";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 144 0;
+ fixed: 1 0;
+ visible : 1;
+ rel1 { relative: 0.4 0.0; }
+ rel2 { relative: 0.6 1.0; }
+ color: 0 0 255 0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 271 0;
+ rel1 { relative: 0.39453 0.0; }
+ rel2 { relative: 0.60625 1.0; }
+ }
+ }
+
+ part {
+ name: "control.rect.4";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 144 0;
+ fixed: 1 0;
+ visible : 1;
+ rel1 { relative: 0.6 0.0;}
+ rel2 { relative: 0.8 1.0;}
+ color: 255 255 0 0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 271 0;
+ rel1 { relative: 0.60781 0.0; }
+ rel2 { relative: 0.81953 1.0; }
+ }
+ }
+
+ part {
+ name: "control.rect.5";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 144 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 0.8 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 255 255 0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 180 0;
+ rel1 { relative: 0.85937 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+
+ part {
+ name: "control.rect.1.line";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 1 70;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 1.0 0.5; to: "control.rect.1"; }
+ rel2 { relative: 1.0 0.5; to: "control.rect.1"; }
+ color: 144 144 144 178;
+ }
+ }
+
+ part {
+ name: "control.rect.2.line";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 1 70;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.5; to: "control.rect.5"; }
+ rel2 { relative: 0.0 0.5; to: "control.rect.5"; }
+ color: 144 144 144 178;
+ }
+ }
+
+ part {
+ name: "control.volume.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: CONTROL_ICON_SIZE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.rect.1"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.1"; }
+ image { normal: "white/panel/T01-2_btn_toolbar_volume.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+
+ }
+
+ part {
+ name: "control.volume.mute.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: CONTROL_ICON_SIZE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.rect.1"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.1"; }
+ image { normal: "white/panel/T02_volume_icon_Mute.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "control.back.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: CONTROL_ICON_SIZE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.rect.5"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.5"; }
+ image { normal: "white/panel/T01-2_btn_toolbar_back.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "control.trim.done.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: "control.rect.1"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.1"; }
+ image { normal: "panel/T01-2_icon_toolbar_done.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ }
+
+ part {
+ name: "control.trim.cancel.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: "control.rect.5"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.5"; }
+ image { normal: "panel/T01-2_icon_toolbar_cancel.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ }
+
+ part {
+ name: "control.play.button";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: CONTROL_ICON_SIZE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.rect.3"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.3"; }
+ image { normal: "white/control/T01-2_icon_toolbar_play.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pause" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_pause.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "press_resume" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_play.png"; }
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "press_pause" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_pause.png"; }
+ color: BUTTON_PRESS_COLOR;
+ }
+ }
+
+
+ // normal mode control part
+ part {
+ name: "control.normal.rew.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: CONTROL_ICON_SIZE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.rect.2";}
+ rel2 { relative: 0.5 0.5; to: "control.rect.2";}
+ image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "step_1" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }
+ }
+ description {
+ state: "step_4" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_previous.png"; }
+ }
+ description {
+ state: "portrate" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "control.normal.ff.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: CONTROL_ICON_SIZE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.rect.4"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.4";}
+ image { normal: "white/control/T01-2_icon_toolbar_next.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "step_1" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_next.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_next.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_next.png"; }
+ }
+ description {
+ state: "step_4" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "white/control/T01-2_icon_toolbar_next.png"; }
+ }
+ description {
+ state: "portrate" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+
+ }
+ part {
+ name: "control.normal.rew.speed.swallow";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 112 297;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.5 0.1; to: "control.rect.2";}
+ rel2 { relative: 0.5 0.1; to: "control.rect.2";}
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "control.normal.ff.speed.swallow";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 112 297;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.5 0.1; to: "control.rect.4";}
+ rel2 { relative: 0.5 0.1; to: "control.rect.4";}
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ // <-- normal mode control part
+
+
+
+ // --> trim mode control part
+ part {
+ name: "control.trim.rew.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: "control.rect.2"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.2"; }
+ image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "step_1" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "trim/T01-2_icon_toolbar_reverse.png"; }
+ }
+ }
+
+ part {
+ name: "control.trim.ff.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: "control.rect.4"; }
+ rel2 { relative: 0.5 0.5; to: "control.rect.4"; }
+ image { normal: "trim/T01-2_icon_toolbar_forward.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "trim/T01-2_icon_toolbar_forward.png"; }
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "step_1" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "trim/T01-2_icon_toolbar_forward.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "trim/T01-2_icon_toolbar_forward.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "trim/T01-2_icon_toolbar_forward.png"; }
+ }
+ } // <-- trim mode control part
+ } // parts
+
+
+ programs {
+ program {
+ signal: "signal.control.mode.normal";
+ source: "*";
+ script {
+ set_int(val_display_mode, 0);
+ change_display_mode();
+ set_play_status();
+ }
+ }
+
+ program {
+ signal: "signal.control.mode.trim";
+ source: "*";
+ script {
+ set_int(val_display_mode, 1);
+ change_display_mode();
+ set_play_status();
+ }
+ }
+
+ program {
+ signal: "signal.control.mode.streaming";
+ source: "*";
+ script {
+ set_int(val_display_mode, 2);
+ change_display_mode();
+ set_play_status();
+ }
+ }
+ program {
+ signal: "signal.control.mode.dlna";
+ source: "*";
+ script {
+ set_int(val_display_mode, 3);
+ change_display_mode();
+ set_play_status();
+ }
+ }
+
+ program {
+ signal: "signal.control.mode.visible.off";
+ source: "*";
+ after: "set.visible.off";
+ }
+
+ program {
+ name: "set.visible.off";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+
+ target: "control.play.button";
+ target: "control.back.button";
+ target: "control.volume.button";
+ target: "control.volume.mute.button";
+ target: "control.normal.rew.button";
+ target: "control.normal.ff.button";
+ target: "control.trim.rew.button";
+ target: "control.trim.ff.button";
+ target: "control.trim.done.button";
+ target: "control.trim.cancel.button";
+ }
+
+ program {
+ name: "set.mode.normal";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+
+ target: "control.play.button";
+ target: "control.back.button";
+ target: "control.volume.button";
+ target: "control.normal.rew.button";
+ target: "control.normal.ff.button";
+ }
+
+ program {
+ name: "set.mode.trim";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+
+ target: "control.play.button";
+ target: "control.trim.rew.button";
+ target: "control.trim.ff.button";
+ target: "control.trim.done.button";
+ target: "control.trim.cancel.button";
+ }
+
+ program {
+ name: "set.mode.streaming";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+
+ target: "control.play.button";
+ target: "control.back.button";
+ target: "control.volume.button";
+ }
+
+ program {
+ name: "set.mode.dlna";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+
+ target: "control.play.button";
+ target: "control.back.button";
+ target: "control.volume.button";
+ target: "control.normal.rew.button";
+ target: "control.normal.ff.button";
+
+ }
+
+ program {
+ name: "control.normal.rew.button.press";
+ source: "control.normal.rew.button";
+ signal: "signal.control.normal.rew.button.down";
+ script:
+ {
+ if(get_int(val_rotate_mode) == 0)
+ {
+ set_state(PART:"control.normal.rew.button", "pressed", 0.0);
+ }
+ else
+ {
+ set_state(PART:"control.normal.rew.button", "pressed_landscape", 0.0);
+ }
+ }
+ }
+
+ program {
+ name: "control.normal.rew.button.up";
+ source: "control.normal.rew.button";
+ signal: "signal.control.normal.rew.button.up";
+ script:
+ {
+ if(get_int(val_rotate_mode) == 0)
+ {
+ set_state(PART:"control.normal.rew.button", "portrate", 0.0);
+ }
+ else
+ {
+ set_state(PART:"control.normal.rew.button", "landscape", 0.0);
+ }
+ }
+ }
+
+ program {
+ name: "control.normal.ff.button.press";
+ source: "control.normal.ff.button";
+ signal: "signal.control.normal.ff.button.down";
+ script:
+ {
+ if(get_int(val_rotate_mode) == 0)
+ {
+ set_state(PART:"control.normal.ff.button", "pressed", 0.0);
+ }
+ else
+ {
+ set_state(PART:"control.normal.ff.button", "pressed_landscape", 0.0);
+ }
+ }
+ }
+
+ program {
+ name: "control.normal.ff.button.up";
+ source: "control.normal.ff.button";
+ signal: "signal.control.normal.ff.button.up";
+ script:
+ {
+ if(get_int(val_rotate_mode) == 0)
+ {
+ set_state(PART:"control.normal.ff.button", "portrate", 0.0);
+ }
+ else
+ {
+ set_state(PART:"control.normal.ff.button", "landscape", 0.0);
+ }
+ }
+ }
+
+
+ // --> mute/unmute check prog
+ program {
+ signal: "signal.control.volume.button.mute";
+ source: "*";
+ script {
+ set_int(val_volume_check, 1);
+ set_volume_check();
+ }
+ }
+
+ program {
+ signal: "signal.control.volume.button.unmute";
+ source: "*";
+ script {
+ set_int(val_volume_check, 0);
+ set_volume_check();
+ }
+ }
+
+ program {
+ name: "set.volume.unmute";
+ action: STATE_SET "default" 0.0;
+ target: "control.volume.button";
+ }
+ program {
+ name: "set.volume.mute";
+ action: STATE_SET "mute" 0.0;
+ target: "control.volume.button";
+ }
+ // --> mute/unmute check prog
+
+ // --> play status part
+ program {
+ name: "press.resume.button";
+ action: STATE_SET "press_resume" 0.0;
+ target: "control.play.button";
+ }
+ program {
+ name: "press.pause.button";
+ action: STATE_SET "press_pause" 0.0;
+ target: "control.play.button";
+ }
+
+ program {
+ name: "control.play.button.down";
+ source: "control.play.button";
+ signal: "signal.control.play.button.down";
+ script: {set_play_button_press(); }
+ }
+
+ program {
+ name: "control.play.button.up";
+ source: "control.play.button";
+ signal: "signal.control.play.button.up";
+ script: { send_play_value(); }
+ }
+
+ program {
+ signal: "signal.control.play.resume";
+ source: "*";
+ script {
+ set_int(val_play_status, 1);
+ set_play_status();
+ }
+ }
+
+ program {
+ signal: "signal.control.play.pause";
+ source: "*";
+ script {
+ set_int(val_play_status, 0);
+ set_play_status();
+ }
+ }
+
+ program {
+ name: "set.play.default";
+ source: "control.play.button";
+ action: STATE_SET "default" 0.0;
+ target: "control.play.button";
+ }
+ program {
+ name: "set.play.pause";
+ source: "control.play.button";
+ action: STATE_SET "pause" 0.0;
+ target: "control.play.button";
+ }
+
+ program {
+ name: "send.play.pause";
+ action: SIGNAL_EMIT "signal.control.play.pause.press" "control.play.button";
+ }
+
+ program {
+ name: "send.play.resume";
+ action: SIGNAL_EMIT "signal.control.play.resume.press" "control.play.button";
+ }
+
+ program {
+ signal: "signal.control.portrate.mode";
+ source: "*";
+ script {
+ set_int(val_rotate_mode, 0);
+ set_state(PART:"control.normal.rew.button", "portrate", 0.0);
+ set_state(PART:"control.normal.ff.button", "portrate", 0.0);
+ set_state(PART:"control.rect.1", "default", 0.0);
+ set_state(PART:"control.rect.2", "default", 0.0);
+ set_state(PART:"control.rect.3", "default", 0.0);
+ set_state(PART:"control.rect.4", "default", 0.0);
+ set_state(PART:"control.rect.5", "default", 0.0);
+ }
+ }
+
+ program {
+ signal: "signal.control.landscape.mode";
+ source: "*";
+ script {
+ set_int(val_rotate_mode, 1);
+ set_state(PART:"control.normal.rew.button", "landscape", 0.0);
+ set_state(PART:"control.normal.ff.button", "landscape", 0.0);
+ set_state(PART:"control.rect.1", "landscape", 0.0);
+ set_state(PART:"control.rect.2", "landscape", 0.0);
+ set_state(PART:"control.rect.3", "landscape", 0.0);
+ set_state(PART:"control.rect.4", "landscape", 0.0);
+ set_state(PART:"control.rect.5", "landscape", 0.0);
+ }
+ }
+
+ program {
+ signal: "signal.control.streaming.portrate.mode";
+ source: "*";
+ script {
+ set_int(val_rotate_mode, 0);
+
+ set_state(PART:"control.rect.1", "default", 0.0);
+ set_state(PART:"control.rect.2", "default", 0.0);
+ set_state(PART:"control.rect.3", "default", 0.0);
+ set_state(PART:"control.rect.4", "default", 0.0);
+ set_state(PART:"control.rect.5", "default", 0.0);
+ }
+ }
+
+ program {
+ signal: "signal.control.streaming.landscape.mode";
+ source: "*";
+ script {
+ set_int(val_rotate_mode, 1);
+ set_state(PART:"control.rect.1", "landscape", 0.0);
+ set_state(PART:"control.rect.2", "landscape", 0.0);
+ set_state(PART:"control.rect.3", "landscape", 0.0);
+ set_state(PART:"control.rect.4", "landscape", 0.0);
+ set_state(PART:"control.rect.5", "landscape", 0.0);
+ }
+ }
+
+ program {
+ signal: "signal.control.volume.set.mute";
+ source: "*";
+ script {
+ set_state(PART:"control.volume.button", "hide", 0.0);
+ set_state(PART:"control.volume.mute.button", "default", 0.0);
+ }
+ }
+
+ program {
+ signal: "signal.control.volume.unset.mute";
+ source: "*";
+ script {
+ set_state(PART:"control.volume.button", "default", 0.0);
+ set_state(PART:"control.volume.mute.button", "hide", 0.0);
+ }
+ }
+
+ // <-- play status part
+
+ // -->common control prog
+ CONTROL_BUTTON_PROG("control.play.button");
+ CONTROL_BUTTON_PROG("control.back.button");
+ CONTROL_BUTTON_PROG("control.volume.button");
+ CONTROL_BUTTON_PROG("control.volume.mute.button");
+ // <-- common control prog
+
+ // -->normal mode prog
+ CONTROL_BUTTON_PROG("control.normal.ff.button");
+ CONTROL_BUTTON_PROG("control.normal.rew.button");
+
+ CONTROL_BUTTON_STEP("control.normal.ff.button", 1);
+ CONTROL_BUTTON_STEP("control.normal.ff.button", 2);
+ CONTROL_BUTTON_STEP("control.normal.ff.button", 3);
+ CONTROL_BUTTON_STEP("control.normal.ff.button", 4);
+
+ CONTROL_BUTTON_STEP("control.normal.rew.button", 1);
+ CONTROL_BUTTON_STEP("control.normal.rew.button", 2);
+ CONTROL_BUTTON_STEP("control.normal.rew.button", 3);
+ CONTROL_BUTTON_STEP("control.normal.rew.button", 4);
+
+ CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 1);
+ CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 2);
+ CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 3);
+ CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 4);
+
+ CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 1);
+ CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 2);
+ CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 3);
+ CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 4);
+ // <-- normal mode prog
+
+ // --> trim mode prog
+ CONTROL_BUTTON_PROG("control.trim.ff.button");
+ CONTROL_BUTTON_PROG("control.trim.rew.button");
+
+ CONTROL_BUTTON_STEP("control.trim.ff.button", 1);
+ CONTROL_BUTTON_STEP("control.trim.ff.button", 2);
+ CONTROL_BUTTON_STEP("control.trim.ff.button", 3);
+
+ CONTROL_BUTTON_STEP("control.trim.rew.button", 1);
+ CONTROL_BUTTON_STEP("control.trim.rew.button", 2);
+ CONTROL_BUTTON_STEP("control.trim.rew.button", 3);
+
+ CONTROL_BUTTON_PROG("control.trim.done.button");
+ CONTROL_BUTTON_PROG("control.trim.cancel.button");
+ // <-- trim mode prog
+
+ } // programs
+ } // group
+} // collections
diff --git a/res/edc/custom/vp-naviframe-custom.edc b/res/edc/custom/vp-naviframe-custom.edc
new file mode 100755
index 0000000..32c3df8
--- /dev/null
+++ b/res/edc/custom/vp-naviframe-custom.edc
@@ -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
index 0000000..17b6c2b
--- /dev/null
+++ b/res/edc/detail.edc
@@ -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
index 0000000..e0b9ce2
--- /dev/null
+++ b/res/edc/hidden_button_panel.edc
@@ -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
index 0000000..6613a6c
--- /dev/null
+++ b/res/edc/image_res.edc
@@ -0,0 +1,137 @@
+
+images {
+ image: "gallery_video_player_bg.png" COMP;
+ image: "gallery_loading_ani_01.png" COMP;
+ image: "gallery_loading_ani_02.png" COMP;
+ image: "gallery_loading_ani_03.png" COMP;
+ image: "gallery_loading_ani_04.png" COMP;
+ image: "gallery_loading_ani_05.png" COMP;
+ image: "gallery_loading_ani_06.png" COMP;
+ image: "gallery_loading_ani_07.png" COMP;
+ image: "gallery_loading_ani_08.png" COMP;
+ image: "gallery_loading_ani_09.png" COMP;
+ image: "gallery_loading_ani_10.png" COMP;
+ image: "gallery_loading_ani_11.png" COMP;
+ image: "gallery_loading_ani_12.png" COMP;
+ image: "gallery_loading_ani_13.png" COMP;
+ image: "gallery_loading_ani_14.png" COMP;
+ image: "gallery_loading_ani_15.png" COMP;
+ image: "gallery_loading_ani_16.png" COMP;
+ image: "gallery_loading_ani_17.png" COMP;
+ image: "gallery_loading_ani_18.png" COMP;
+ image: "gallery_loading_ani_19.png" COMP;
+ image: "gallery_loading_ani_20.png" COMP;
+ image: "gallery_loading_ani_21.png" COMP;
+ image: "gallery_loading_ani_22.png" COMP;
+ image: "gallery_loading_ani_23.png" COMP;
+ image: "gallery_loading_ani_24.png" COMP;
+ image: "gallery_loading_ani_25.png" COMP;
+ image: "gallery_loading_ani_26.png" COMP;
+ image: "gallery_loading_ani_27.png" COMP;
+ image: "gallery_loading_ani_28.png" COMP;
+ image: "gallery_loading_ani_29.png" COMP;
+ image: "gallery_loading_ani_30.png" COMP;
+ image: "T01_toolbar_bg.png" COMP;
+ image: "T01_toolbar_press.png" COMP;
+ image: "00_winset_control_top_arrow.png" COMP;
+ image: "T01_Nocontents_multimedia.png" COMP;
+ image: "T01-2_hold_icon_lock.png" COMP;
+
+ image: "subtitle/T01-2_sync_slowly.png" COMP;
+ image: "subtitle/T01-2_sync_btn_bg.png" COMP;
+ image: "subtitle/T01-2_sync_faster.png" COMP;
+ image: "subtitle/T01-2_sync_list_press.png" COMP;
+
+ image: "option/T01-2_icon_function_bg.png" COMP;
+ image: "option/T01-2_icon_function_bookmark.png" COMP;
+ image: "option/T01-2_icon_function_screenmode.png" COMP;
+ image: "option/T01-2_icon_function_screenmode02.png" COMP;
+ image: "option/T01-2_icon_function_screenmode03.png" COMP;
+ image: "option/T01-2_icon_function_select_bg.png" COMP;
+ image: "option/T01-2_icon_function_share.png" COMP;
+ image: "option/T01-2_icon_controller_multiwin.png" COMP;
+ image: "option/T01-2_icon_controller_more.png" COMP;
+ image: "option/T01-2_icon_controller_trim.png" COMP;
+ image: "option/T01-2_icon_controller_connection_info.png" COMP;
+ image: "option/T01-2_icon_controller_repeat_off.png" COMP;
+ image: "option/T01-2_icon_controller_repeat_on.png" COMP;
+ image: "option/T01-2_icon_controller_sa.png" COMP;
+
+ image: "bookmark/T01-2_function_tray.png" COMP;
+ image: "bookmark/T01-2_icon_thumbnail_bg.png" COMP;
+ image: "bookmark/T01-2_btn_bookmark.png" COMP;
+ image: "bookmark/T01-2_btn_bookmark_press.png" COMP;
+ image: "bookmark/T01-2_bookmark_thumbnail.png" COMP;
+ image: "bookmark/T01-2_btn_remove_bookmark.png" COMP;
+ image: "bookmark/T01-2_btn_remove_bookmark_press.png" COMP;
+
+ image: "panel/T01-2_controller_progress_bar.png" COMP;
+ image: "panel/T01-2_controller_progress_bg.png" COMP;
+ image: "panel/T01-2_icon_toolbar_cancel.png" COMP;
+ image: "panel/T01-2_icon_toolbar_done.png" COMP;
+
+ image: "adjustment/T01-2_controller_progress_handle.png" COMP;
+ image: "adjustment/T01-2_controller_progress_handle_press.png" COMP;
+ image: "adjustment/T01-2_fine_adjustment_bg.png" COMP;
+ image: "adjustment/T01-2_fine_adjustment_bg_ef.png" COMP;
+ image: "adjustment/T01-2_fine_adjustment_progress_bar.png" COMP;
+ image: "adjustment/T01-2_fine_adjustment_progress_bg.png" COMP;
+ image: "adjustment/T01-2_fine_adjustment_progress_handle.png" COMP;
+
+ image: "trim/T01-2_controller_trimming_handle_ending_press.png" COMP;
+ image: "trim/T01-2_controller_trimming_handle_ending.png" COMP;
+ image: "trim/T01-2_controller_trimming_handle_beginning_press.png" COMP;
+ image: "trim/T01-2_controller_trimming_handle_beginning.png" COMP;
+ image: "trim/T01-2_controller_track_ball.png" COMP;
+ image: "trim/T01-2_icon_toolbar_forward.png" COMP;
+ image: "trim/T01-2_icon_toolbar_reverse.png" COMP;
+
+
+ image: "mw/T01-2_icon_close.png" COMP;
+ image: "mw/T01-2_icon_full_size.png" COMP;
+ image: "mw/T01-2_icon_hide_panel.png" COMP;
+ image: "mw/T01-2_icon_open_panel.png" COMP;
+ image: "mw/T01-2_multiscreen_bg.png" COMP;
+ image: "mw/T01-2_multiscreen_bg_press.png" COMP;
+ image: "mw/T01-2_multiscreen_player_bg.png" COMP;
+ image: "mw/T01-2_player_icon_FF.png" COMP;
+ image: "mw/T01-2_player_icon_FF_press.png" COMP;
+ image: "mw/T01-2_player_icon_Pause.png" COMP;
+ image: "mw/T01-2_player_icon_Pause_press.png" COMP;
+ image: "mw/T01-2_player_icon_Play.png" COMP;
+ image: "mw/T01-2_player_icon_Play_press.png" COMP;
+ image: "mw/T01-2_player_icon_REW.png" COMP;
+ image: "mw/T01-2_player_icon_REW_press.png" COMP;
+ image: "mw/T01-2_resize_controller.png" COMP;
+ image: "mw/T01-2_resize_controller_press.png" COMP;
+
+ // FOR GENLIST SWEEP and check box
+ image: "00_sweep_list_bg.png" COMP;
+ image: "T01_checkbox.png" COMP;
+ image: "00_check_bg_dim.png" COMP;
+ image: "T01_check.png" COMP;
+ image: "T01_grid_select_check.png" COMP;
+ image: "00_grid_select_check.png" COMP;
+ image: "T01_video_list_progress_bar.png" COMP;
+ image: "00_winset_list_progress_bg.png" COMP;
+
+ image: "white/panel/T01-2_btn_toolbar_back.png" COMP;
+ image: "white/panel/T01-2_btn_toolbar_volume.png" COMP;
+ image: "white/panel/T02_volume_icon_Mute.png" COMP;
+ image: "white/control/T01-2_icon_toolbar_next.png" COMP;
+ image: "white/control/T01-2_icon_toolbar_play.png" COMP;
+ image: "white/control/T01-2_icon_toolbar_previous.png" COMP;
+ image: "white/control/T01-2_icon_toolbar_stop.png" COMP;
+ image: "white/control/T01-2_icon_toolbar_pause.png" COMP;
+
+ image: "white/common/T01-2_popup_bg.png" COMP;
+ image: "white/common/T01-2_popup_arrow.png" COMP;
+
+ image: "volume/T01-2_volume_icon_02.png" COMP;
+ image: "volume/T01-2_volume_icon_01.png" COMP;
+ image: "volume/T01-2_player_volume_handle_press.png" COMP;
+ image: "volume/T01-2_player_volume_handle.png" COMP;
+ image: "volume/T01-2_player_progress_bg.png" COMP;
+ image: "volume/T01-2_player_progress_bar.png" COMP;
+}
+
diff --git a/res/edc/main.edc b/res/edc/main.edc
new file mode 100755
index 0000000..d0fe9e8
--- /dev/null
+++ b/res/edc/main.edc
@@ -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
index 0000000..7185254
--- /dev/null
+++ b/res/edc/multi_win.edc
@@ -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
index 0000000..346a8f0
--- /dev/null
+++ b/res/edc/option_button.edc
@@ -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
index 0000000..f6bc218
--- /dev/null
+++ b/res/edc/panel.edc
@@ -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
index 0000000..87add92
--- /dev/null
+++ b/res/edc/popup_progressbar.edc
@@ -0,0 +1,263 @@
+collections {
+group { name: "popup_center_progressview";
+ parts{
+ part { name: "elm.title";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ max: 80 16;
+ text {
+ font: "SLP:style=Medium";
+ text_class: "slp";
+ size: 16;
+ min: 0 0;
+ align: 0.5 0.0;
+ }
+ color: 108 108 108 255;
+ align: 0.5 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+ part{ name:"elm.swallow.content";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 0 70;
+ align: 0.5 0.5;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ }
+ }
+ part { name: "elm.text.left";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ max: 150 16;
+ text {
+ font: "SLP:style=Medium";
+ text_class: "slp";
+ size: 16;
+ min: 0 0;
+ align: 0.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 0.0 1.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+ part { name: "elm.text.right";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ max: 150 16;
+ text {
+ font: "SLP:style=Medium";
+ text_class: "slp";
+ size: 16;
+ min: 0 0;
+ align: 1.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 1.0 1.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+ }
+}
+
+
+group { name: "popup_center_text_progressview";
+ parts{
+ part { name: "pad_t";
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 14;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "pad_l";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "pad_r";
+ }
+ }
+ }
+ part { name: "pad_l";
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 10 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "pad_r";
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 10 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part{ name:"elm.swallow.content";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 300 0;
+ align: 0.5 0.5;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.5 1.0;
+ to: "pad_t";
+ }
+ rel2 {
+ relative: 0.5 0.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_b";
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 0 90;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "pad_l";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "pad_r";
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ type: SWALLOW;
+ scale : 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_bm";
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 52;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "elm.text.subtext1";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "SLP:style=Medium";
+ text_class: "slp";
+ size: 16;
+ min: 0 0;
+ align: 0.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_bm";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_bm";
+ }
+ }
+ }
+ part { name: "elm.text.subtext2";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "SLP:style=Medium";
+ text_class: "slp";
+ size: 16;
+ min: 0 0;
+ align: 1.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_bm";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_bm";
+ }
+ }
+ }
+ }
+}
+}
+
diff --git a/res/edc/progress.edc b/res/edc/progress.edc
new file mode 100755
index 0000000..3ef5412
--- /dev/null
+++ b/res/edc/progress.edc
@@ -0,0 +1,459 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define PROGRESS_LINE_RECT_COLOR 54 54 54 255
+
+collections {
+ group {
+ name: "progress";
+
+ parts {
+ part {
+ name: "progress.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "progress.txt.played";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 90 28;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; }
+ rel2 { relative: 1.0 0.5; }
+ color: FONT_START_COLOR;
+ text {
+ font: FONT_MEDIUM_TYPE;
+ text_class: "slp";
+ size: 25;
+ text: "00:00:00";
+ align: 0.0 1.0;
+ }
+ }
+ description {
+ state: "portrate" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+
+ part { name: "progress.txt.total";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 90 28;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; }
+ rel2 { relative: 1.0 0.5; }
+ color: FONT_END_COLOR;
+ text {
+ font: FONT_MEDIUM_TYPE;
+ text_class: "slp";
+ size: 25;
+ text: "--:--:--";
+ align: 1.0 1.0;
+ }
+ }
+ description {
+ state: "portrate" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+
+ part {
+ name: "progress.bg";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 7;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.1647 0.5; }
+ rel2 { relative: 0.8353 0.5; }
+ image { normal: "panel/T01-2_controller_progress_bg.png"; }
+ }
+ description {
+ state: "portrate" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.0933 0.5; }
+ rel2 { relative: 0.9067 0.5; }
+ }
+ }
+
+ part {
+ name: "progress.buffer.bar";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 5;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: progress.playing ; to_y: progress.bg; }
+ rel2 { relative: 1.0 1.0; to_x: progress.buffering; to_y: progress.bg; }
+ color: 128 128 128 255;
+ }
+ }
+
+ part {
+ name: "progress.middle";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 5;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: progress.bg; }
+ rel2 { relative: 0.5 1.0; to_x: progress.circle; to_y: progress.bg; }
+ color: 255 255 255 255;
+ image { normal: "panel/T01-2_controller_progress_bar.png";}
+ }
+ }
+ part { name: "progress.buffering";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 5;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to: progress.bg; }
+ rel2 { relative: 1.0 1.0; to: progress.bg; }
+ color: 255 255 255 0;
+ }
+ dragable {
+ confine: "progress.confine.rect";
+ x: 1 1 1;
+ }
+ }
+
+ part { name: "progress.confine.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: progress.bg; }
+ rel2 { relative: 1.0 1.0; to: progress.bg; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part {
+ name: "progress.circle";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 5;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 0.0; to_x: progress.playing; to_y: progress.bg; }
+ rel2 { relative: 0.5 1.0; to_x: progress.playing; to_y: progress.bg; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part { name: "progress.playing";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ visible: 1;
+ state: "default" 0.0;
+ color: 255 255 255 0;
+ min: 0 15;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y: progress.rect; }
+ rel2 { relative: 0.0 0.0; to_y: progress.rect; }
+ }
+ dragable {
+ confine: "progress.confine.rect";
+ x: 1 1 1;
+ }
+ }
+
+ part {
+ name: "progress.adjustment.handle";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 25 25;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to_x: progress.circle; to_y: progress.bg; }
+ rel2 { relative: 0.5 0.5; to_x: progress.circle; to_y: progress.bg; }
+ image { normal: "adjustment/T01-2_controller_progress_handle.png";}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "progress.adjustment.bg.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 174 153;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.5 0.0; to_x: progress.circle; to_y: progress.rect; }
+ rel2 { relative: 0.5 0.0; to_x: progress.circle; to_y: progress.rect; }
+ color: 0 0 0 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "progress.adjustment.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 174 153;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: progress.adjustment.bg.rect; }
+ rel2 { relative: 1.0 1.0; to: progress.adjustment.bg.rect; }
+ color: 255 255 255 255;
+ image { normal: "adjustment/T01-2_fine_adjustment_bg.png";}
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "progress.adjustment.progress.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 1 20;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.08620 0.23529; to: progress.adjustment.bg.rect; }
+ rel2 { relative: 0.91379 0.23529; to: progress.adjustment.bg.rect; }
+ color: 255 255 255 255;
+ image { normal: "adjustment/T01-2_fine_adjustment_progress_bg.png";}
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "progress.adjustment.progress.bar";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 1 20;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.08620 0.23529; to: progress.adjustment.bg.rect; }
+ rel2 { relative: 0.5 0.23529; to: progress.adjustment.bg.rect; }
+ color: 255 255 255 255;
+ image { normal: "adjustment/T01-2_fine_adjustment_progress_bar.png";}
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "progress.adjustment.progress.handle";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 36 36;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 0.183006; to: progress.adjustment.bg.rect; }
+ rel2 { relative: 0.5 0.183006; to: progress.adjustment.bg.rect; }
+ color: 255 255 255 255;
+ image { normal: "adjustment/T01-2_fine_adjustment_progress_handle.png";}
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "progress.adjustment.bg.ef";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 174 153;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: progress.adjustment.bg.rect; }
+ rel2 { relative: 1.0 1.0; to: progress.adjustment.bg.rect; }
+ image { normal: "adjustment/T01-2_fine_adjustment_bg_ef.png";}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "progress.adjustment.txt";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 174 40;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.470588; to: progress.adjustment.bg.rect;}
+ rel2 { relative: 1.0 0.470588; to: progress.adjustment.bg.rect;}
+ color: 191 191 191 255;
+ text {
+ font: FONT_ROMAN_TYPE;
+ text_class: "slp";
+ size: 32;
+ text: "00:00:00";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+
+ programs {
+ program {
+ signal: "signal.progress.portrate.mode";
+ source: "*";
+ action: STATE_SET "portrate" 0.0;
+ target: "progress.bg";
+ target: "progress.txt.played";
+ target: "progress.txt.total";
+ }
+
+ program {
+ signal: "signal.progress.landscape.mode";
+ source: "*";
+ action: STATE_SET "landscape" 0.0;
+ target: "progress.bg";
+ target: "progress.txt.played";
+ target: "progress.txt.total";
+ }
+
+ program {
+ signal: "signal.progress.pointer.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "progress.adjustment.handle";
+ }
+
+ program {
+ signal: "signal.progress.pointer.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "progress.adjustment.handle";
+ }
+
+ program {
+ signal: "signal.progress.adjustment.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "progress.adjustment.handle";
+ target: "progress.adjustment.bg.rect";
+ target: "progress.adjustment.bg.ef";
+ target: "progress.adjustment.bg";
+ target: "progress.adjustment.progress.bg";
+ target: "progress.adjustment.progress.bar";
+ target: "progress.adjustment.progress.handle";
+ target: "progress.adjustment.txt";
+ }
+
+ program {
+ signal: "signal.progress.adjustment.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "progress.adjustment.handle";
+ target: "progress.adjustment.bg.rect";
+ target: "progress.adjustment.bg.ef";
+ target: "progress.adjustment.bg";
+ target: "progress.adjustment.progress.bg";
+ target: "progress.adjustment.progress.bar";
+ target: "progress.adjustment.progress.handle";
+ target: "progress.adjustment.txt";
+ }
+ }
+ } // group
+} // collections
diff --git a/res/edc/progress_trim.edc b/res/edc/progress_trim.edc
new file mode 100755
index 0000000..932264b
--- /dev/null
+++ b/res/edc/progress_trim.edc
@@ -0,0 +1,291 @@
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "trim.control";
+ parts {
+ part {
+ name: "trim.control.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "trim.control.txt.played";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 58;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.027777 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ color: FONT_START_COLOR;
+ text {
+ font: FONT_MEDIUM_TYPE;
+ text_class: "slp";
+ size: 28;
+ text: "00:00:00";
+ align: 0.0 0.5;
+ }
+ }
+ }
+
+ part { name: "trim.control.txt.total";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 90 58;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.97223 0.0; }
+ color: FONT_END_COLOR;
+ text {
+ font: FONT_MEDIUM_TYPE;
+ text_class: "slp";
+ size: 28;
+ text: "--:--:--";
+ align: 1.0 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "trim.control.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.316994; }
+ rel2 { relative: 1.0 0.316994; }
+ color : 153 153 153 171;
+ }
+ }
+
+ part {
+ name: "trim.control.thumb.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.316994; }
+ rel2 { relative: 1.0 1.0; }
+ color : 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "trim.control.thumb";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 112;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to_y : trim.control.thumb.bg;}
+ rel2 { relative: 1.0 0.5; to_y : trim.control.thumb.bg;}
+ color : 0 0 0 0;
+ }
+ }
+ part {
+ name: "trim.control.middle";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to_x: trim.control.confine.start; to_y: trim.control.thumb.bg; }
+ rel2 { relative: 1.0 1.0; to_x: trim.control.confine.end; to_y: trim.control.thumb.bg; }
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "trim.control.confine.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0; to: trim.control.middle; }
+ rel2 { relative: 1.0 1.0; to: trim.control.middle; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part { name: "trim.control.playing";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 19 124;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ image { normal: "trim/T01-2_controller_track_ball.png"; }
+ color: 255 255 255 255;
+ }
+ dragable {
+ confine: "trim.control.confine.rect";
+ x: 1 1 1;
+ }
+ }
+
+ part {
+ name: "trim.control.start.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y : trim.control.thumb.bg;}
+ rel2 { relative: 0.0 1.0; to_y : trim.control.thumb.bg;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "trim.control.end.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to_y : trim.control.thumb.bg;}
+ rel2 { relative: 1.0 1.0; to_y : trim.control.thumb.bg;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part { name: "trim.control.confine.rect.start";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 24 117;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: trim.control.start.rect; to_y: trim.control.thumb.bg; }
+ rel2 { relative: 1.0 0.5; to_x: trim.control.end.rect; to_y: trim.control.thumb.bg; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part { name: "trim.control.confine.rect.end";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 24 117;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: trim.control.start.rect; to_y: trim.control.thumb.bg; }
+ rel2 { relative: 1.0 0.5; to_x: trim.control.end.rect; to_y: trim.control.thumb.bg; }
+ color: 255 255 255 0;
+ }
+ }
+ part { name: "trim.control.confine.rect.start.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 100;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to_y: trim.control.thumb.bg; }
+ rel2 { relative: 0.0 0.5; to_x: trim.control.confine.start; to_y: trim.control.thumb.bg; }
+ color: 0 0 0 153;
+ }
+ }
+
+ part { name: "trim.control.confine.rect.end.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 100;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.5 0.5; to_x: trim.control.confine.end; to_y: trim.control.thumb.bg; }
+ rel2 { relative: 1.0 0.5; to_y: trim.control.thumb.bg; }
+ color: 0 0 0 153;
+ }
+ }
+ part {
+ name: "trim.control.confine.start";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 24 117;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ image { normal: "trim/T01-2_controller_trimming_handle_beginning.png";}
+ }
+ dragable {
+ confine: "trim.control.confine.rect.start";
+ x: 1 1 1;
+ }
+ }
+
+ part {
+ name: "trim.control.confine.end";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 24 117;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ image { normal: "trim/T01-2_controller_trimming_handle_ending.png";}
+ }
+ dragable {
+ confine: "trim.control.confine.rect.end";
+ x: 1 1 1;
+ }
+ }
+
+
+ } /* parts */
+ } /* group */
+} /* collections */
+
diff --git a/res/edc/setting.edc b/res/edc/setting.edc
new file mode 100755
index 0000000..9691ac7
--- /dev/null
+++ b/res/edc/setting.edc
@@ -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
index 0000000..3d5265b
--- /dev/null
+++ b/res/edc/subtitle.edc
@@ -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
index 0000000..b40bd2f
--- /dev/null
+++ b/res/edc/subtitle_sync.edc
@@ -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
index 0000000..14a16a5
--- /dev/null
+++ b/res/edc/vp-button-white.edc
@@ -0,0 +1,504 @@
+#define BUTTON_STATE_ENABLED 0
+#define BUTTON_STATE_DISABLED 1
+
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC 106 74
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC 5 5 5 5
+#define BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC 56 56
+
+#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255
+#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255
+
+#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_MIN_INC 22 46
+#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4
+#define BUTTON_NAVIFRAME_CENTER_PADDING_MIN_MAX_INC 16 2
+#define BUTTON_NAVIFRAME_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36
+#define BUTTON_NAVIFRAME_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0
+#define BUTTON_NAVIFRAME_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0
+#define BUTTON_NAVIFRAME_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36
+#define BUTTON_NAVIFRAME_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_CENTER_TEXT_FONT_SIZE_INC 32
+#define BUTTON_NAVIFRAME_MULTILINE_TEXT_FONT_SIZE_INC 24
+
+#define BUTTON_NAVIFRAME_BG_MIN_INC 106 68
+#define BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC 106 68
+#define BUTTON_NAVIFRAME_ICONONLY_BG_MIN_INC 72 724
+#define BUTTON_NAVIFRAME_BG_BORDER_INC 5 5 5 5
+#define BUTTON_NAVIFRAME_PADDING_MIN_INC 16 3
+#define BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0
+#define BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_NAVIFRAME_FONT_SIZE_INC 32
+#define BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC 106 68
+
+#define BUTTON_NAVIFRAME_MORE_BG_MIN_MAX_INC 82 64
+#define BUTTON_NAVIFRAME_MORE_BG_BORDER_INC 5 5 5 5
+#define BUTTON_NAVIFRAME_MORE_DEFAULT_IMAGE_MIN_MAX_INC 50 50
+
+#define BUTTON_TEXT_NAVIFRAME_NORMAL_COLOR_INC 211 211 211 255
+#define BUTTON_TEXT_NAVIFRAME_PRESSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_NAVIFRAME_FOCUSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_NAVIFRAME_DISABLED_COLOR_INC 211 211 211 255
+
+//////////////////////////////////////////////////////////////
+ group { name: "elm/button/base/video/naviframe/title/default";
+ images {
+ image: "white/common/T01-2_title_btn_bg.png" COMP;
+ image: "white/common/T01-2_title_btn_bg_press_01.png" COMP;
+ image: "white/common/T01-2_title_btn_bg_press_02.png" COMP;
+ }
+ script {
+ public button_state = BUTTON_STATE_ENABLED;
+ }
+ parts {
+ part { name: "button_image";
+ scale: 1;
+ description { state: "default" 0.0;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC;
+ image {
+ normal: "white/common/T01-2_title_btn_bg.png";
+ border: BUTTON_NAVIFRAME_BG_BORDER_INC;
+ border_scale: 1;
+ }
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "white/common/T01-2_title_btn_bg_press_01.png";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "white/common/T01-2_title_btn_bg_press_02.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_NAVIFRAME_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_NAVIFRAME_BG_MIN_INC;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_NAVIFRAME_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_NAVIFRAME_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_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_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_NAVIFRAME_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_NAVIFRAME_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_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_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_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC;
+ }
+ }
+ 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_NAVIFRAME_NORMAL_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ text_class: "slp";
+ size: BUTTON_TEXT_NAVIFRAME_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_NAVIFRAME_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_NAVIFRAME_DISABLED_COLOR_INC;
+ visible: 1;
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: BUTTON_TEXT_NAVIFRAME_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";
+ }
+ }
+ }
diff --git a/res/edc/vp-button.edc b/res/edc/vp-button.edc
new file mode 100755
index 0000000..d013cf2
--- /dev/null
+++ b/res/edc/vp-button.edc
@@ -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
index 0000000..6305934
--- /dev/null
+++ b/res/edc/vp-chapter-view.edc
@@ -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
index 0000000..6dc567e
--- /dev/null
+++ b/res/edc/vp-check.edc
@@ -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
index 0000000..a89a419
--- /dev/null
+++ b/res/edc/vp-controlbar.edc
@@ -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
index 0000000..24cdd9b
--- /dev/null
+++ b/res/edc/vp-ctxpopup.edc
@@ -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
index 0000000..7e12a69
--- /dev/null
+++ b/res/edc/vp-custom-winset-style.edc
@@ -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
index 0000000..dff249c
--- /dev/null
+++ b/res/edc/vp-layout.edc
@@ -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
index 0000000..49bde21
--- /dev/null
+++ b/res/edc/vp-naviframe.edc
@@ -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
index 0000000..059d987
--- /dev/null
+++ b/res/edc/vp-naviframe_white.edc
@@ -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
index 0000000..903694a
--- /dev/null
+++ b/res/edc/vp-nocontents.edc
@@ -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
index 0000000..b9c9041
--- /dev/null
+++ b/res/edc/vp-progressbar-list.edc
@@ -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
index 0000000..fe751fb
--- /dev/null
+++ b/res/edc/vp-speedbox-popup.edc
@@ -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
index 0000000..0a937fb
--- /dev/null
+++ b/res/edc/vp-toolbar.edc
@@ -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
index 0000000..6229e06
--- /dev/null
+++ b/res/edc/vp-volume-popup.edc
@@ -0,0 +1,318 @@
+#include "image_res.edc"
+
+#define BG_WIDTH 126
+
+collections {
+ group {
+ name: "volume";
+ parts {
+ part {
+ name: "volume.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 0 0 0 128;
+ }
+ }
+
+ part {
+ name: "volume.left";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 10 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 1.0; }
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "volume.right";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 10 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "volume.icon.1";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 58 58;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "volume.left"; }
+ rel2 { relative: 1.0 0.5; to_x: "volume.left"; }
+ image { normal: "volume/T01-2_volume_icon_01.png"; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "volume.icon.2";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 58 58;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "volume.right"; }
+ rel2 { relative: 0.0 0.5; to_x: "volume.right"; }
+ image { normal: "volume/T01-2_volume_icon_02.png"; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "volume.icon.1.right";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 6 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to_x: "volume.icon.1"; }
+ rel2 { relative: 1.0 1.0; to_x: "volume.icon.1"; }
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "volume.icon.2.left";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 6 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "volume.icon.2"; }
+ rel2 { relative: 0.0 1.0; to_x: "volume.icon.2"; }
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "volume.icon.handle.start";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 58 58;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "volume.icon.1.right"; }
+ rel2 { relative: 1.0 0.5; to_x: "volume.icon.1.right"; }
+ image { normal: "volume/T01-2_player_volume_handle.png"; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "volume.icon.handle.end";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 58 58;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "volume.icon.2.left"; }
+ rel2 { relative: 0.0 0.5; to_x: "volume.icon.2.left"; }
+ image { normal: "volume/T01-2_player_volume_handle.png"; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "volume.txt.start";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 58 58;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "volume.icon.handle.start";}
+ rel2 { relative: 1.0 1.0; to: "volume.icon.handle.start";}
+ color: 42 137 194 255;
+ text {
+ font: FONT_BOLD_TYPE;
+ text_class: "slp";
+ size: 38;
+ text: "0";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "volume.txt.end";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 58 58;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "volume.icon.handle.end";}
+ rel2 { relative: 1.0 1.0; to: "volume.icon.handle.end";}
+ color: 42 137 194 255;
+ text {
+ font: FONT_BOLD_TYPE;
+ text_class: "slp";
+ size: 38;
+ text: "15";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "volume.progress.bg";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 8;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "volume.icon.handle.start"; }
+ rel2 { relative: 0.0 0.5; to_x: "volume.icon.handle.end"; }
+ image { normal: "volume/T01-2_player_progress_bg.png"; }
+ }
+ }
+
+ part {
+ name: "volume.progress.bar";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ state: "default" 0.0;
+ min: 0 8;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "volume.progress.bg"; }
+ rel2 { relative: 1.0 0.5; to_x: "volume.progress.drag"; }
+ image { normal: "volume/T01-2_player_progress_bar.png"; }
+ }
+ }
+
+ part { name: "volume.progress.confine.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to_x: "volume.progress.bg"; }
+ rel2 { relative: 1.0 1.0; to_x: "volume.progress.bg"; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part {
+ name: "volume.progress.circle";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 58 58;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to_x: volume.progress.drag; }
+ rel2 { relative: 0.5 0.5; to_x: volume.progress.drag; }
+ image { normal: "volume/T01-2_player_volume_handle_press.png"; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "volume.progress.circle.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 58 58;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "volume.progress.circle";}
+ rel2 { relative: 1.0 1.0; to: "volume.progress.circle";}
+ color: 255 255 255 255;
+ text {
+ font: FONT_BOLD_TYPE;
+ text_class: "slp";
+ size: 38;
+ text: "12";
+ align: 0.5 0.5;
+ }
+ }
+ }
+ part {
+ name: "volume.progress.drag";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 58 58;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to: "volume.progress.bg"; }
+ rel2 { relative: 1.0 0.5; to: "volume.progress.bg"; }
+ color: 255 255 255 0;
+ }
+ dragable {
+ confine: "volume.progress.confine.rect";
+ x: 1 1 1;
+ }
+ }
+ } /* parts */
+// programs {
+
+// } /* programs */
+ } /* group */
+}
+
diff --git a/res/edc/vp_font.edc b/res/edc/vp_font.edc
new file mode 100755
index 0000000..560bbbf
--- /dev/null
+++ b/res/edc/vp_font.edc
@@ -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
index 0000000..659fc23
--- /dev/null
+++ b/res/images/00_Option_header_bt.png
Binary files 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
index 0000000..3fb76e2
--- /dev/null
+++ b/res/images/00_Option_header_bt_dim.png
Binary files 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
index 0000000..8a05504
--- /dev/null
+++ b/res/images/00_Option_header_bt_press.png
Binary files differ
diff --git a/res/images/00_button_01_normal.png b/res/images/00_button_01_normal.png
new file mode 100755
index 0000000..fd06c1c
--- /dev/null
+++ b/res/images/00_button_01_normal.png
Binary files 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
index 0000000..7bb54fc
--- /dev/null
+++ b/res/images/00_button_01_normal_dim.png
Binary files 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
index 0000000..829554a
--- /dev/null
+++ b/res/images/00_button_01_normal_press.png
Binary files differ
diff --git a/res/images/00_check_bg_dim.png b/res/images/00_check_bg_dim.png
new file mode 100755
index 0000000..d95649c
--- /dev/null
+++ b/res/images/00_check_bg_dim.png
Binary files differ
diff --git a/res/images/00_grid_select_check.png b/res/images/00_grid_select_check.png
new file mode 100755
index 0000000..4385567
--- /dev/null
+++ b/res/images/00_grid_select_check.png
Binary files differ
diff --git a/res/images/00_sweep_list_bg.png b/res/images/00_sweep_list_bg.png
new file mode 100755
index 0000000..1606042
--- /dev/null
+++ b/res/images/00_sweep_list_bg.png
Binary files differ
diff --git a/res/images/00_winset_btn_prev.png b/res/images/00_winset_btn_prev.png
new file mode 100755
index 0000000..15b43b0
--- /dev/null
+++ b/res/images/00_winset_btn_prev.png
Binary files 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
index 0000000..1ffbb0b
--- /dev/null
+++ b/res/images/00_winset_btn_prev_press.png
Binary files 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
index 0000000..9f31c89
--- /dev/null
+++ b/res/images/00_winset_control_top_arrow.png
Binary files 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
index 0000000..5e83560
--- /dev/null
+++ b/res/images/00_winset_list_progress_bg.png
Binary files differ
diff --git a/res/images/00_winset_thumbs_bg.png b/res/images/00_winset_thumbs_bg.png
new file mode 100755
index 0000000..6226c90
--- /dev/null
+++ b/res/images/00_winset_thumbs_bg.png
Binary files 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
index 0000000..4f7d66f
--- /dev/null
+++ b/res/images/00_winset_thumbs_focus_bg.png
Binary files 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
index 0000000..0472430
--- /dev/null
+++ b/res/images/00_winset_thumbs_loading_bg.png
Binary files differ
diff --git a/res/images/01_controlbar_icon_delete.png b/res/images/01_controlbar_icon_delete.png
new file mode 100755
index 0000000..07e2898
--- /dev/null
+++ b/res/images/01_controlbar_icon_delete.png
Binary files 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
index 0000000..3f5a68f
--- /dev/null
+++ b/res/images/01_controlbar_icon_set_as.png
Binary files differ
diff --git a/res/images/01_controlbar_icon_share.png b/res/images/01_controlbar_icon_share.png
new file mode 100755
index 0000000..76ef1ce
--- /dev/null
+++ b/res/images/01_controlbar_icon_share.png
Binary files differ
diff --git a/res/images/01_header_icon_add.png b/res/images/01_header_icon_add.png
new file mode 100755
index 0000000..43c4984
--- /dev/null
+++ b/res/images/01_header_icon_add.png
Binary files differ
diff --git a/res/images/01_header_icon_cancel.png b/res/images/01_header_icon_cancel.png
new file mode 100755
index 0000000..4fb54c3
--- /dev/null
+++ b/res/images/01_header_icon_cancel.png
Binary files differ
diff --git a/res/images/01_header_icon_others.png b/res/images/01_header_icon_others.png
new file mode 100755
index 0000000..4fc9dfa
--- /dev/null
+++ b/res/images/01_header_icon_others.png
Binary files 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
index 0000000..771ebb8
--- /dev/null
+++ b/res/images/12_music_player_sound_path.png
Binary files differ
diff --git a/res/images/DM_Gallery_Increase.png b/res/images/DM_Gallery_Increase.png
new file mode 100755
index 0000000..fdf6231
--- /dev/null
+++ b/res/images/DM_Gallery_Increase.png
Binary files 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
index 0000000..8e34351
--- /dev/null
+++ b/res/images/T01-2_hold_icon_lock.png
Binary files 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
index 0000000..5cb7824
--- /dev/null
+++ b/res/images/T01-2_icon_toolbar_cancel.png
Binary files differ
diff --git a/res/images/T01_Image_Look.png b/res/images/T01_Image_Look.png
new file mode 100755
index 0000000..5ecda87
--- /dev/null
+++ b/res/images/T01_Image_Look.png
Binary files differ
diff --git a/res/images/T01_Nocontents_multimedia.png b/res/images/T01_Nocontents_multimedia.png
new file mode 100755
index 0000000..a59046f
--- /dev/null
+++ b/res/images/T01_Nocontents_multimedia.png
Binary files differ
diff --git a/res/images/T01_Option_header_bt.png b/res/images/T01_Option_header_bt.png
new file mode 100755
index 0000000..94b1e2f
--- /dev/null
+++ b/res/images/T01_Option_header_bt.png
Binary files 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
index 0000000..17331c1
--- /dev/null
+++ b/res/images/T01_Option_header_bt_press.png
Binary files differ
diff --git a/res/images/T01_Trim_handle_beginning.png b/res/images/T01_Trim_handle_beginning.png
new file mode 100755
index 0000000..859aa3e
--- /dev/null
+++ b/res/images/T01_Trim_handle_beginning.png
Binary files differ
diff --git a/res/images/T01_Trim_handle_ending.png b/res/images/T01_Trim_handle_ending.png
new file mode 100755
index 0000000..adf7c82
--- /dev/null
+++ b/res/images/T01_Trim_handle_ending.png
Binary files differ
diff --git a/res/images/T01_back.png b/res/images/T01_back.png
new file mode 100755
index 0000000..73d57a5
--- /dev/null
+++ b/res/images/T01_back.png
Binary files differ
diff --git a/res/images/T01_btn_prev.png b/res/images/T01_btn_prev.png
new file mode 100755
index 0000000..ccaf337
--- /dev/null
+++ b/res/images/T01_btn_prev.png
Binary files differ
diff --git a/res/images/T01_check.png b/res/images/T01_check.png
new file mode 100755
index 0000000..d5057e4
--- /dev/null
+++ b/res/images/T01_check.png
Binary files differ
diff --git a/res/images/T01_checkbox.png b/res/images/T01_checkbox.png
new file mode 100755
index 0000000..61dc76a
--- /dev/null
+++ b/res/images/T01_checkbox.png
Binary files differ
diff --git a/res/images/T01_control_icon_detail.png b/res/images/T01_control_icon_detail.png
new file mode 100755
index 0000000..e82b44d
--- /dev/null
+++ b/res/images/T01_control_icon_detail.png
Binary files differ
diff --git a/res/images/T01_control_icon_fullscreen.png b/res/images/T01_control_icon_fullscreen.png
new file mode 100755
index 0000000..7fa140f
--- /dev/null
+++ b/res/images/T01_control_icon_fullscreen.png
Binary files differ
diff --git a/res/images/T01_control_icon_reduce.png b/res/images/T01_control_icon_reduce.png
new file mode 100755
index 0000000..fbdb906
--- /dev/null
+++ b/res/images/T01_control_icon_reduce.png
Binary files differ
diff --git a/res/images/T01_control_top_arrow.png b/res/images/T01_control_top_arrow.png
new file mode 100755
index 0000000..3f2ee50
--- /dev/null
+++ b/res/images/T01_control_top_arrow.png
Binary files differ
diff --git a/res/images/T01_control_top_bg.png b/res/images/T01_control_top_bg.png
new file mode 100755
index 0000000..e7b5045
--- /dev/null
+++ b/res/images/T01_control_top_bg.png
Binary files differ
diff --git a/res/images/T01_controlbar_icon_cancel.png b/res/images/T01_controlbar_icon_cancel.png
new file mode 100755
index 0000000..5cb7824
--- /dev/null
+++ b/res/images/T01_controlbar_icon_cancel.png
Binary files differ
diff --git a/res/images/T01_controlbar_icon_done.png b/res/images/T01_controlbar_icon_done.png
new file mode 100755
index 0000000..46304a4
--- /dev/null
+++ b/res/images/T01_controlbar_icon_done.png
Binary files differ
diff --git a/res/images/T01_controller_btn.png b/res/images/T01_controller_btn.png
new file mode 100755
index 0000000..4db7a11
--- /dev/null
+++ b/res/images/T01_controller_btn.png
Binary files differ
diff --git a/res/images/T01_controller_btn_press.png b/res/images/T01_controller_btn_press.png
new file mode 100755
index 0000000..4069b0f
--- /dev/null
+++ b/res/images/T01_controller_btn_press.png
Binary files differ
diff --git a/res/images/T01_grid_select_check.png b/res/images/T01_grid_select_check.png
new file mode 100755
index 0000000..f131f47
--- /dev/null
+++ b/res/images/T01_grid_select_check.png
Binary files differ
diff --git a/res/images/T01_icon_expand.png b/res/images/T01_icon_expand.png
new file mode 100755
index 0000000..ba1158e
--- /dev/null
+++ b/res/images/T01_icon_expand.png
Binary files differ
diff --git a/res/images/T01_icon_reduce.png b/res/images/T01_icon_reduce.png
new file mode 100755
index 0000000..7e80daa
--- /dev/null
+++ b/res/images/T01_icon_reduce.png
Binary files differ
diff --git a/res/images/T01_icon_soundPath.png b/res/images/T01_icon_soundPath.png
new file mode 100755
index 0000000..79e0cda
--- /dev/null
+++ b/res/images/T01_icon_soundPath.png
Binary files differ
diff --git a/res/images/T01_icon_soundPath_h.png b/res/images/T01_icon_soundPath_h.png
new file mode 100755
index 0000000..ad3b1d4
--- /dev/null
+++ b/res/images/T01_icon_soundPath_h.png
Binary files differ
diff --git a/res/images/T01_icon_soundPath_press.png b/res/images/T01_icon_soundPath_press.png
new file mode 100755
index 0000000..9fcc466
--- /dev/null
+++ b/res/images/T01_icon_soundPath_press.png
Binary files differ
diff --git a/res/images/T01_player_progress_bar.png b/res/images/T01_player_progress_bar.png
new file mode 100755
index 0000000..2f25452
--- /dev/null
+++ b/res/images/T01_player_progress_bar.png
Binary files differ
diff --git a/res/images/T01_player_progress_bg.png b/res/images/T01_player_progress_bg.png
new file mode 100755
index 0000000..58d94cc
--- /dev/null
+++ b/res/images/T01_player_progress_bg.png
Binary files differ
diff --git a/res/images/T01_player_progress_point.png b/res/images/T01_player_progress_point.png
new file mode 100755
index 0000000..0e8c5c5
--- /dev/null
+++ b/res/images/T01_player_progress_point.png
Binary files differ
diff --git a/res/images/T01_sound_path.png b/res/images/T01_sound_path.png
new file mode 100755
index 0000000..d4f3843
--- /dev/null
+++ b/res/images/T01_sound_path.png
Binary files differ
diff --git a/res/images/T01_title_bg.png b/res/images/T01_title_bg.png
new file mode 100755
index 0000000..039da67
--- /dev/null
+++ b/res/images/T01_title_bg.png
Binary files differ
diff --git a/res/images/T01_title_bg_h.png b/res/images/T01_title_bg_h.png
new file mode 100755
index 0000000..7d0cec4
--- /dev/null
+++ b/res/images/T01_title_bg_h.png
Binary files differ
diff --git a/res/images/T01_title_btn.png b/res/images/T01_title_btn.png
new file mode 100755
index 0000000..20c31f1
--- /dev/null
+++ b/res/images/T01_title_btn.png
Binary files differ
diff --git a/res/images/T01_title_btn_press.png b/res/images/T01_title_btn_press.png
new file mode 100755
index 0000000..49861ed
--- /dev/null
+++ b/res/images/T01_title_btn_press.png
Binary files differ
diff --git a/res/images/T01_toolbar_bg.png b/res/images/T01_toolbar_bg.png
new file mode 100755
index 0000000..e02c6c6
--- /dev/null
+++ b/res/images/T01_toolbar_bg.png
Binary files differ
diff --git a/res/images/T01_toolbar_press.png b/res/images/T01_toolbar_press.png
new file mode 100755
index 0000000..851583e
--- /dev/null
+++ b/res/images/T01_toolbar_press.png
Binary files 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
index 0000000..cc9c1bc
--- /dev/null
+++ b/res/images/T01_video_list_progress_bar.png
Binary files 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
index 0000000..fc80139
--- /dev/null
+++ b/res/images/adjustment/T01-2_controller_progress_handle.png
Binary files 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
index 0000000..d14c5f6
--- /dev/null
+++ b/res/images/adjustment/T01-2_controller_progress_handle_press.png
Binary files 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
index 0000000..40efe0e
--- /dev/null
+++ b/res/images/adjustment/T01-2_fine_adjustment_bg.png
Binary files 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
index 0000000..b088e8a
--- /dev/null
+++ b/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png
Binary files 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
index 0000000..34240ab
--- /dev/null
+++ b/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png
Binary files 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
index 0000000..b4c6def
--- /dev/null
+++ b/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png
Binary files 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
index 0000000..b8fa147
--- /dev/null
+++ b/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png
Binary files 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
index 0000000..2d4a8ca
--- /dev/null
+++ b/res/images/bookmark/T01-2_bookmark_thumbnail.png
Binary files 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
index 0000000..13fa60a
--- /dev/null
+++ b/res/images/bookmark/T01-2_btn_bookmark.png
Binary files 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
index 0000000..34ef87f
--- /dev/null
+++ b/res/images/bookmark/T01-2_btn_bookmark_press.png
Binary files 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
index 0000000..a040031
--- /dev/null
+++ b/res/images/bookmark/T01-2_btn_remove_bookmark.png
Binary files 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
index 0000000..812f6f0
--- /dev/null
+++ b/res/images/bookmark/T01-2_btn_remove_bookmark_press.png
Binary files 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
index 0000000..2df684b
--- /dev/null
+++ b/res/images/bookmark/T01-2_function_tray.png
Binary files 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
index 0000000..b5692d1
--- /dev/null
+++ b/res/images/bookmark/T01-2_icon_thumbnail_bg.png
Binary files differ
diff --git a/res/images/com.samsung.video-player.png b/res/images/com.samsung.video-player.png
new file mode 100644
index 0000000..0cc2384
--- /dev/null
+++ b/res/images/com.samsung.video-player.png
Binary files 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
index 0000000..aa8b191
--- /dev/null
+++ b/res/images/com.samsung.video-player.png_old
Binary files 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
index 0000000..89e94e7
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_01.png
Binary files 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
index 0000000..06e41d4
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_02.png
Binary files 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
index 0000000..919801c
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_03.png
Binary files 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
index 0000000..4bc3885
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_ff.png
Binary files 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
index 0000000..c5b9e8f
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png
Binary files 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
index 0000000..28a8872
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_pause.png
Binary files 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
index 0000000..37609ad
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png
Binary files 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
index 0000000..9bf836d
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_play.png
Binary files 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
index 0000000..e9e9583
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png
Binary files 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
index 0000000..1140a01
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_rew.png
Binary files 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
index 0000000..306af4e
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png
Binary files 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
index 0000000..8d2fe43
--- /dev/null
+++ b/res/images/desktop/controlbar/DM_Key screen_icon_volume.png
Binary files 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
index 0000000..03f54cf
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_controller_progress_bar.png
Binary files 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
index 0000000..f020771
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_controller_progress_bg.png
Binary files 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
index 0000000..fc80139
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_controller_progress_handle.png
Binary files 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
index 0000000..d14c5f6
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_controller_progress_handle_press.png
Binary files 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
index 0000000..40efe0e
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_fine_adjustment_bg.png
Binary files 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
index 0000000..b088e8a
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png
Binary files 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
index 0000000..34240ab
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png
Binary files 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
index 0000000..b4c6def
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png
Binary files 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
index 0000000..b8fa147
--- /dev/null
+++ b/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_01.png b/res/images/gallery_loading_ani_01.png
new file mode 100755
index 0000000..9402e71
--- /dev/null
+++ b/res/images/gallery_loading_ani_01.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_02.png b/res/images/gallery_loading_ani_02.png
new file mode 100755
index 0000000..e71d491
--- /dev/null
+++ b/res/images/gallery_loading_ani_02.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_03.png b/res/images/gallery_loading_ani_03.png
new file mode 100755
index 0000000..1ed0de9
--- /dev/null
+++ b/res/images/gallery_loading_ani_03.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_04.png b/res/images/gallery_loading_ani_04.png
new file mode 100755
index 0000000..18cc497
--- /dev/null
+++ b/res/images/gallery_loading_ani_04.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_05.png b/res/images/gallery_loading_ani_05.png
new file mode 100755
index 0000000..036c49b
--- /dev/null
+++ b/res/images/gallery_loading_ani_05.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_06.png b/res/images/gallery_loading_ani_06.png
new file mode 100755
index 0000000..3cb5e33
--- /dev/null
+++ b/res/images/gallery_loading_ani_06.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_07.png b/res/images/gallery_loading_ani_07.png
new file mode 100755
index 0000000..fae06de
--- /dev/null
+++ b/res/images/gallery_loading_ani_07.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_08.png b/res/images/gallery_loading_ani_08.png
new file mode 100755
index 0000000..70eaaf0
--- /dev/null
+++ b/res/images/gallery_loading_ani_08.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_09.png b/res/images/gallery_loading_ani_09.png
new file mode 100755
index 0000000..7fb390c
--- /dev/null
+++ b/res/images/gallery_loading_ani_09.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_10.png b/res/images/gallery_loading_ani_10.png
new file mode 100755
index 0000000..941fc3b
--- /dev/null
+++ b/res/images/gallery_loading_ani_10.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_11.png b/res/images/gallery_loading_ani_11.png
new file mode 100755
index 0000000..a67149d
--- /dev/null
+++ b/res/images/gallery_loading_ani_11.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_12.png b/res/images/gallery_loading_ani_12.png
new file mode 100755
index 0000000..b36421a
--- /dev/null
+++ b/res/images/gallery_loading_ani_12.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_13.png b/res/images/gallery_loading_ani_13.png
new file mode 100755
index 0000000..d70d609
--- /dev/null
+++ b/res/images/gallery_loading_ani_13.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_14.png b/res/images/gallery_loading_ani_14.png
new file mode 100755
index 0000000..ab52db7
--- /dev/null
+++ b/res/images/gallery_loading_ani_14.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_15.png b/res/images/gallery_loading_ani_15.png
new file mode 100755
index 0000000..1de8adb
--- /dev/null
+++ b/res/images/gallery_loading_ani_15.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_16.png b/res/images/gallery_loading_ani_16.png
new file mode 100755
index 0000000..521b61f
--- /dev/null
+++ b/res/images/gallery_loading_ani_16.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_17.png b/res/images/gallery_loading_ani_17.png
new file mode 100755
index 0000000..6cb5ba9
--- /dev/null
+++ b/res/images/gallery_loading_ani_17.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_18.png b/res/images/gallery_loading_ani_18.png
new file mode 100755
index 0000000..a636079
--- /dev/null
+++ b/res/images/gallery_loading_ani_18.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_19.png b/res/images/gallery_loading_ani_19.png
new file mode 100755
index 0000000..0a4f650
--- /dev/null
+++ b/res/images/gallery_loading_ani_19.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_20.png b/res/images/gallery_loading_ani_20.png
new file mode 100755
index 0000000..14cc339
--- /dev/null
+++ b/res/images/gallery_loading_ani_20.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_21.png b/res/images/gallery_loading_ani_21.png
new file mode 100755
index 0000000..0e78db7
--- /dev/null
+++ b/res/images/gallery_loading_ani_21.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_22.png b/res/images/gallery_loading_ani_22.png
new file mode 100755
index 0000000..80d592e
--- /dev/null
+++ b/res/images/gallery_loading_ani_22.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_23.png b/res/images/gallery_loading_ani_23.png
new file mode 100755
index 0000000..b4bd7ca
--- /dev/null
+++ b/res/images/gallery_loading_ani_23.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_24.png b/res/images/gallery_loading_ani_24.png
new file mode 100755
index 0000000..69445e4
--- /dev/null
+++ b/res/images/gallery_loading_ani_24.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_25.png b/res/images/gallery_loading_ani_25.png
new file mode 100755
index 0000000..233a038
--- /dev/null
+++ b/res/images/gallery_loading_ani_25.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_26.png b/res/images/gallery_loading_ani_26.png
new file mode 100755
index 0000000..d52a017
--- /dev/null
+++ b/res/images/gallery_loading_ani_26.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_27.png b/res/images/gallery_loading_ani_27.png
new file mode 100755
index 0000000..4221ecc
--- /dev/null
+++ b/res/images/gallery_loading_ani_27.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_28.png b/res/images/gallery_loading_ani_28.png
new file mode 100755
index 0000000..da37330
--- /dev/null
+++ b/res/images/gallery_loading_ani_28.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_29.png b/res/images/gallery_loading_ani_29.png
new file mode 100755
index 0000000..41e97e1
--- /dev/null
+++ b/res/images/gallery_loading_ani_29.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_30.png b/res/images/gallery_loading_ani_30.png
new file mode 100755
index 0000000..ac0bb55
--- /dev/null
+++ b/res/images/gallery_loading_ani_30.png
Binary files differ
diff --git a/res/images/gallery_video_add_btn.png b/res/images/gallery_video_add_btn.png
new file mode 100755
index 0000000..63f7d63
--- /dev/null
+++ b/res/images/gallery_video_add_btn.png
Binary files 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
index 0000000..2bfc65b
--- /dev/null
+++ b/res/images/gallery_video_add_btn_press.png
Binary files differ
diff --git a/res/images/gallery_video_control_ff.png b/res/images/gallery_video_control_ff.png
new file mode 100755
index 0000000..e0a49f1
--- /dev/null
+++ b/res/images/gallery_video_control_ff.png
Binary files 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
index 0000000..57d60d6
--- /dev/null
+++ b/res/images/gallery_video_control_ff_2.png
Binary files 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
index 0000000..6f023ea
--- /dev/null
+++ b/res/images/gallery_video_control_ff_3.png
Binary files 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
index 0000000..427735f
--- /dev/null
+++ b/res/images/gallery_video_control_ff_4.png
Binary files 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
index 0000000..93aa2be
--- /dev/null
+++ b/res/images/gallery_video_control_ff_5.png
Binary files 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
index 0000000..7a0428d
--- /dev/null
+++ b/res/images/gallery_video_control_frame_back.png
Binary files 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
index 0000000..af2b776
--- /dev/null
+++ b/res/images/gallery_video_control_frame_forword.png
Binary files differ
diff --git a/res/images/gallery_video_control_next.png b/res/images/gallery_video_control_next.png
new file mode 100755
index 0000000..e0a49f1
--- /dev/null
+++ b/res/images/gallery_video_control_next.png
Binary files differ
diff --git a/res/images/gallery_video_control_pause.png b/res/images/gallery_video_control_pause.png
new file mode 100755
index 0000000..d36fbf4
--- /dev/null
+++ b/res/images/gallery_video_control_pause.png
Binary files differ
diff --git a/res/images/gallery_video_control_play.png b/res/images/gallery_video_control_play.png
new file mode 100755
index 0000000..16b49a5
--- /dev/null
+++ b/res/images/gallery_video_control_play.png
Binary files differ
diff --git a/res/images/gallery_video_control_prev.png b/res/images/gallery_video_control_prev.png
new file mode 100755
index 0000000..029e57c
--- /dev/null
+++ b/res/images/gallery_video_control_prev.png
Binary files differ
diff --git a/res/images/gallery_video_control_rew.png b/res/images/gallery_video_control_rew.png
new file mode 100755
index 0000000..029e57c
--- /dev/null
+++ b/res/images/gallery_video_control_rew.png
Binary files 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
index 0000000..ad63c27
--- /dev/null
+++ b/res/images/gallery_video_control_rew_2.png
Binary files 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
index 0000000..96d43fd
--- /dev/null
+++ b/res/images/gallery_video_control_rew_3.png
Binary files 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
index 0000000..60f2a1d
--- /dev/null
+++ b/res/images/gallery_video_control_rew_4.png
Binary files 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
index 0000000..2eba4f6
--- /dev/null
+++ b/res/images/gallery_video_control_rew_5.png
Binary files differ
diff --git a/res/images/gallery_video_delete_btn.png b/res/images/gallery_video_delete_btn.png
new file mode 100755
index 0000000..fe62076
--- /dev/null
+++ b/res/images/gallery_video_delete_btn.png
Binary files 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
index 0000000..2d2466f
--- /dev/null
+++ b/res/images/gallery_video_delete_btn_press.png
Binary files differ
diff --git a/res/images/gallery_video_fastforward_1x.png b/res/images/gallery_video_fastforward_1x.png
new file mode 100755
index 0000000..c1ea6b1
--- /dev/null
+++ b/res/images/gallery_video_fastforward_1x.png
Binary files differ
diff --git a/res/images/gallery_video_fastforward_2x.png b/res/images/gallery_video_fastforward_2x.png
new file mode 100755
index 0000000..ea0486c
--- /dev/null
+++ b/res/images/gallery_video_fastforward_2x.png
Binary files differ
diff --git a/res/images/gallery_video_fastforward_3x.png b/res/images/gallery_video_fastforward_3x.png
new file mode 100755
index 0000000..6e16eff
--- /dev/null
+++ b/res/images/gallery_video_fastforward_3x.png
Binary files differ
diff --git a/res/images/gallery_video_fastforward_4x.png b/res/images/gallery_video_fastforward_4x.png
new file mode 100755
index 0000000..a1eeacb
--- /dev/null
+++ b/res/images/gallery_video_fastforward_4x.png
Binary files differ
diff --git a/res/images/gallery_video_icon_btn.png b/res/images/gallery_video_icon_btn.png
new file mode 100755
index 0000000..9ef6888
--- /dev/null
+++ b/res/images/gallery_video_icon_btn.png
Binary files 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
index 0000000..628c8e7
--- /dev/null
+++ b/res/images/gallery_video_icon_btn_press.png
Binary files differ
diff --git a/res/images/gallery_video_icon_mute.png b/res/images/gallery_video_icon_mute.png
new file mode 100755
index 0000000..e92f376
--- /dev/null
+++ b/res/images/gallery_video_icon_mute.png
Binary files differ
diff --git a/res/images/gallery_video_icon_volume.png b/res/images/gallery_video_icon_volume.png
new file mode 100755
index 0000000..49d9cf5
--- /dev/null
+++ b/res/images/gallery_video_icon_volume.png
Binary files differ
diff --git a/res/images/gallery_video_player_bg.png b/res/images/gallery_video_player_bg.png
new file mode 100755
index 0000000..611a7b7
--- /dev/null
+++ b/res/images/gallery_video_player_bg.png
Binary files differ
diff --git a/res/images/gallery_video_popup_mute.png b/res/images/gallery_video_popup_mute.png
new file mode 100755
index 0000000..32f447c
--- /dev/null
+++ b/res/images/gallery_video_popup_mute.png
Binary files differ
diff --git a/res/images/gallery_video_rewind_1x.png b/res/images/gallery_video_rewind_1x.png
new file mode 100755
index 0000000..31f3696
--- /dev/null
+++ b/res/images/gallery_video_rewind_1x.png
Binary files differ
diff --git a/res/images/gallery_video_rewind_2x.png b/res/images/gallery_video_rewind_2x.png
new file mode 100755
index 0000000..17c17c9
--- /dev/null
+++ b/res/images/gallery_video_rewind_2x.png
Binary files differ
diff --git a/res/images/gallery_video_rewind_3x.png b/res/images/gallery_video_rewind_3x.png
new file mode 100755
index 0000000..badb983
--- /dev/null
+++ b/res/images/gallery_video_rewind_3x.png
Binary files differ
diff --git a/res/images/gallery_video_rewind_4x.png b/res/images/gallery_video_rewind_4x.png
new file mode 100755
index 0000000..a855514
--- /dev/null
+++ b/res/images/gallery_video_rewind_4x.png
Binary files 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
index 0000000..d53be43
--- /dev/null
+++ b/res/images/icon/06_myfiles_list_folder.png
Binary files 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
index 0000000..7354c9e
--- /dev/null
+++ b/res/images/icon/T01-2_icon_function_bg.png
Binary files 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
index 0000000..0f40b7b
--- /dev/null
+++ b/res/images/icon/T01-2_icon_popup_sound_allive.png
Binary files 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
index 0000000..eb9b26d
--- /dev/null
+++ b/res/images/icon/T01-2_icon_popup_sound_audio_track.png
Binary files 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
index 0000000..a5aa8a0
--- /dev/null
+++ b/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png
Binary files 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
index 0000000..b548ecd
--- /dev/null
+++ b/res/images/icon/T01-2_icon_popup_sound_settings.png
Binary files 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
index 0000000..5122b35
--- /dev/null
+++ b/res/images/icon/T01-2_icon_popup_subtitle.png
Binary files 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
index 0000000..1cab618
--- /dev/null
+++ b/res/images/icon/T01-2_icon_popup_trim.png
Binary files 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
index 0000000..2e46917
--- /dev/null
+++ b/res/images/icon/T01-2_icon_title_allshare.png
Binary files 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
index 0000000..1da849c
--- /dev/null
+++ b/res/images/icon/T01-2_icon_title_soundpath.png
Binary files 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
index 0000000..ff44f72
--- /dev/null
+++ b/res/images/icon/T01_controlbar_icon_add_to_home.png
Binary files 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
index 0000000..52b77ba
--- /dev/null
+++ b/res/images/icon/_06_myfiles_list_folder.png
Binary files 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
index 0000000..535503b
--- /dev/null
+++ b/res/images/mw/T01-2_icon_close.png
Binary files 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
index 0000000..49b535c
--- /dev/null
+++ b/res/images/mw/T01-2_icon_full_size.png
Binary files 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
index 0000000..df600e1
--- /dev/null
+++ b/res/images/mw/T01-2_icon_hide_panel.png
Binary files 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
index 0000000..df473a6
--- /dev/null
+++ b/res/images/mw/T01-2_icon_open_panel.png
Binary files 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
index 0000000..e509e80
--- /dev/null
+++ b/res/images/mw/T01-2_multiscreen_bg.png
Binary files 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
index 0000000..72463d6
--- /dev/null
+++ b/res/images/mw/T01-2_multiscreen_bg_press.png
Binary files 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
index 0000000..17b8cc8
--- /dev/null
+++ b/res/images/mw/T01-2_multiscreen_player_bg.png
Binary files 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
index 0000000..c53ca33
--- /dev/null
+++ b/res/images/mw/T01-2_player_icon_FF.png
Binary files 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
index 0000000..76fdaee
--- /dev/null
+++ b/res/images/mw/T01-2_player_icon_FF_press.png
Binary files 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
index 0000000..367d26d
--- /dev/null
+++ b/res/images/mw/T01-2_player_icon_Pause.png
Binary files 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
index 0000000..65b0d49
--- /dev/null
+++ b/res/images/mw/T01-2_player_icon_Pause_press.png
Binary files 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
index 0000000..4ef93d9
--- /dev/null
+++ b/res/images/mw/T01-2_player_icon_Play.png
Binary files 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
index 0000000..123bd29
--- /dev/null
+++ b/res/images/mw/T01-2_player_icon_Play_press.png
Binary files 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
index 0000000..4ceb469
--- /dev/null
+++ b/res/images/mw/T01-2_player_icon_REW.png
Binary files 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
index 0000000..82f9b5e
--- /dev/null
+++ b/res/images/mw/T01-2_player_icon_REW_press.png
Binary files 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
index 0000000..b1fee34
--- /dev/null
+++ b/res/images/mw/T01-2_resize_controller.png
Binary files 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
index 0000000..185866b
--- /dev/null
+++ b/res/images/mw/T01-2_resize_controller_press.png
Binary files differ
diff --git a/res/images/navibar_item_separator_shadow.png b/res/images/navibar_item_separator_shadow.png
new file mode 100755
index 0000000..05d347d
--- /dev/null
+++ b/res/images/navibar_item_separator_shadow.png
Binary files differ
diff --git a/res/images/naviframe_optionheader.png b/res/images/naviframe_optionheader.png
new file mode 100755
index 0000000..e90f19c
--- /dev/null
+++ b/res/images/naviframe_optionheader.png
Binary files differ
diff --git a/res/images/naviframe_optionheader_arrow.png b/res/images/naviframe_optionheader_arrow.png
new file mode 100755
index 0000000..de84372
--- /dev/null
+++ b/res/images/naviframe_optionheader_arrow.png
Binary files 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
index 0000000..ac1beec
--- /dev/null
+++ b/res/images/option/T01-2_icon_controller_connection_info.png
Binary files 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
index 0000000..715a23d
--- /dev/null
+++ b/res/images/option/T01-2_icon_controller_more.png
Binary files 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
index 0000000..abc3dd4
--- /dev/null
+++ b/res/images/option/T01-2_icon_controller_multiwin.png
Binary files 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
index 0000000..3ab9f18
--- /dev/null
+++ b/res/images/option/T01-2_icon_controller_repeat_off.png
Binary files 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
index 0000000..42ea4cc
--- /dev/null
+++ b/res/images/option/T01-2_icon_controller_repeat_on.png
Binary files 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
index 0000000..0619a24
--- /dev/null
+++ b/res/images/option/T01-2_icon_controller_sa.png
Binary files 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
index 0000000..f1e796a
--- /dev/null
+++ b/res/images/option/T01-2_icon_controller_trim.png
Binary files 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
index 0000000..7354c9e
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_bg.png
Binary files 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
index 0000000..76e182f
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_bookmark.png
Binary files 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
index 0000000..6c9a5d3
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_screenmode.png
Binary files 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
index 0000000..3a545b6
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_screenmode02.png
Binary files 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
index 0000000..9c001f6
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_screenmode03.png
Binary files 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
index 0000000..614c426
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_select_bg.png
Binary files 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
index 0000000..39d8972
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_share.png
Binary files 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
index 0000000..51207bb
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_subtitle.png
Binary files 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
index 0000000..0619696
--- /dev/null
+++ b/res/images/option/T01-2_icon_function_trim.png
Binary files differ
diff --git a/res/images/org.tizen.video-player.png b/res/images/org.tizen.video-player.png
new file mode 100755
index 0000000..8814085
--- /dev/null
+++ b/res/images/org.tizen.video-player.png
Binary files 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
index 0000000..e58ce84
--- /dev/null
+++ b/res/images/panel/T01-2_btn_toolbar_back.png
Binary files 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
index 0000000..0852249
--- /dev/null
+++ b/res/images/panel/T01-2_btn_toolbar_back_press.png
Binary files 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
index 0000000..3e09485
--- /dev/null
+++ b/res/images/panel/T01-2_btn_toolbar_volum.png
Binary files 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
index 0000000..d07e670
--- /dev/null
+++ b/res/images/panel/T01-2_btn_toolbar_volum_press.png
Binary files 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
index 0000000..f7c10e8
--- /dev/null
+++ b/res/images/panel/T01-2_btn_toolbar_volume.png
Binary files 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
index 0000000..03f54cf
--- /dev/null
+++ b/res/images/panel/T01-2_controller_progress_bar.png
Binary files 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
index 0000000..f020771
--- /dev/null
+++ b/res/images/panel/T01-2_controller_progress_bg.png
Binary files 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
index 0000000..e8012e3
--- /dev/null
+++ b/res/images/panel/T01-2_icon_controller_repeat.png
Binary files 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
index 0000000..941301f
--- /dev/null
+++ b/res/images/panel/T01-2_icon_controller_repeat_1.png
Binary files 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
index 0000000..bdd28af
--- /dev/null
+++ b/res/images/panel/T01-2_icon_controller_repeat_all.png
Binary files 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
index 0000000..3b6b488
--- /dev/null
+++ b/res/images/panel/T01-2_icon_controller_sa.png
Binary files 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
index 0000000..5cb7824
--- /dev/null
+++ b/res/images/panel/T01-2_icon_toolbar_cancel.png
Binary files 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
index 0000000..46304a4
--- /dev/null
+++ b/res/images/panel/T01-2_icon_toolbar_done.png
Binary files 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
index 0000000..2918312
--- /dev/null
+++ b/res/images/panel/T02_volume_icon_Mute.png
Binary files 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
index 0000000..a7a8fd0
--- /dev/null
+++ b/res/images/subtitle/T01-2_sync_btn_bg.png
Binary files 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
index 0000000..44cb065
--- /dev/null
+++ b/res/images/subtitle/T01-2_sync_faster.png
Binary files 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
index 0000000..f252cc3
--- /dev/null
+++ b/res/images/subtitle/T01-2_sync_list_press.png
Binary files 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
index 0000000..92b43e6
--- /dev/null
+++ b/res/images/subtitle/T01-2_sync_slowly.png
Binary files 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
index 0000000..e58ce84
--- /dev/null
+++ b/res/images/toolbar/T01-2_btn_toolbar_back.png
Binary files 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
index 0000000..3e09485
--- /dev/null
+++ b/res/images/toolbar/T01-2_btn_toolbar_volum.png
Binary files 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
index 0000000..f7c10e8
--- /dev/null
+++ b/res/images/toolbar/T01-2_btn_toolbar_volume.png
Binary files 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
index 0000000..53500ff
--- /dev/null
+++ b/res/images/toolbar/T01-2_controlbar_icon_folder.png
Binary files 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
index 0000000..0520970
--- /dev/null
+++ b/res/images/toolbar/T01-2_controlbar_icon_near_device.png
Binary files 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
index 0000000..0717057
--- /dev/null
+++ b/res/images/toolbar/T01-2_controlbar_icon_recorded.png
Binary files 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
index 0000000..da41533
--- /dev/null
+++ b/res/images/toolbar/T01-2_controlbar_icon_video.png
Binary files 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
index 0000000..5cb7824
--- /dev/null
+++ b/res/images/toolbar/T01-2_icon_toolbar_cancel.png
Binary files 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
index 0000000..757aee3
--- /dev/null
+++ b/res/images/toolbar/T01-2_icon_toolbar_delete.png
Binary files 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
index 0000000..46304a4
--- /dev/null
+++ b/res/images/toolbar/T01-2_icon_toolbar_done.png
Binary files 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
index 0000000..4dcd409
--- /dev/null
+++ b/res/images/toolbar/T01-2_icon_toolbar_setting.png
Binary files 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
index 0000000..e252d2b
--- /dev/null
+++ b/res/images/toolbar/T01-2_icon_toolbar_sort_by.png
Binary files 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
index 0000000..e748043
--- /dev/null
+++ b/res/images/toolbar/T02_controlbar_icon_search.png
Binary files 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
index 0000000..2918312
--- /dev/null
+++ b/res/images/toolbar/T02_volume_icon_Mute.png
Binary files 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
index 0000000..0f92633
--- /dev/null
+++ b/res/images/trim/T01-2_controller_track_ball.png
Binary files 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
index 0000000..46dbb93
--- /dev/null
+++ b/res/images/trim/T01-2_controller_trimming_handle_beginning.png
Binary files 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
index 0000000..f610a78
--- /dev/null
+++ b/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png
Binary files 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
index 0000000..3984517
--- /dev/null
+++ b/res/images/trim/T01-2_controller_trimming_handle_ending.png
Binary files 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
index 0000000..bae372a
--- /dev/null
+++ b/res/images/trim/T01-2_controller_trimming_handle_ending_press.png
Binary files 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
index 0000000..a6aaf21
--- /dev/null
+++ b/res/images/trim/T01-2_icon_toolbar_forward.png
Binary files 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
index 0000000..6b9d2d8
--- /dev/null
+++ b/res/images/trim/T01-2_icon_toolbar_reverse.png
Binary files 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
index 0000000..c1ea6b1
--- /dev/null
+++ b/res/images/trim/gallery_video_fastforward_1x.png
Binary files 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
index 0000000..ea0486c
--- /dev/null
+++ b/res/images/trim/gallery_video_fastforward_2x.png
Binary files 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
index 0000000..6e16eff
--- /dev/null
+++ b/res/images/trim/gallery_video_fastforward_3x.png
Binary files 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
index 0000000..a1eeacb
--- /dev/null
+++ b/res/images/trim/gallery_video_fastforward_4x.png
Binary files 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
index 0000000..31f3696
--- /dev/null
+++ b/res/images/trim/gallery_video_rewind_1x.png
Binary files 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
index 0000000..17c17c9
--- /dev/null
+++ b/res/images/trim/gallery_video_rewind_2x.png
Binary files 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
index 0000000..badb983
--- /dev/null
+++ b/res/images/trim/gallery_video_rewind_3x.png
Binary files 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
index 0000000..a855514
--- /dev/null
+++ b/res/images/trim/gallery_video_rewind_4x.png
Binary files differ
diff --git a/res/images/video_sound_path_dim.png b/res/images/video_sound_path_dim.png
new file mode 100755
index 0000000..02b5867
--- /dev/null
+++ b/res/images/video_sound_path_dim.png
Binary files 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
index 0000000..00d960c
--- /dev/null
+++ b/res/images/volume/T01-2_player_progress_bar.png
Binary files 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
index 0000000..a9a629a
--- /dev/null
+++ b/res/images/volume/T01-2_player_progress_bg.png
Binary files 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
index 0000000..a5bb976
--- /dev/null
+++ b/res/images/volume/T01-2_player_volume_handle.png
Binary files 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
index 0000000..598fb63
--- /dev/null
+++ b/res/images/volume/T01-2_player_volume_handle_press.png
Binary files 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
index 0000000..da5bf5d
--- /dev/null
+++ b/res/images/volume/T01-2_volume_icon_01.png
Binary files 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
index 0000000..8020ecb
--- /dev/null
+++ b/res/images/volume/T01-2_volume_icon_02.png
Binary files 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
index 0000000..11b536d
--- /dev/null
+++ b/res/images/white/common/00_popup_bubble_bg.png
Binary files 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
index 0000000..a37b8be
--- /dev/null
+++ b/res/images/white/common/00_popup_tail_bottom.png
Binary files 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
index 0000000..593c109
--- /dev/null
+++ b/res/images/white/common/00_popup_tail_left.png
Binary files 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
index 0000000..0b451f7
--- /dev/null
+++ b/res/images/white/common/00_popup_tail_right.png
Binary files 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
index 0000000..d99ce87
--- /dev/null
+++ b/res/images/white/common/00_popup_tail_top.png
Binary files 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
index 0000000..d21ae34
--- /dev/null
+++ b/res/images/white/common/00_winset_control_toolbar_bg.png
Binary files 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
index 0000000..2d0503d
--- /dev/null
+++ b/res/images/white/common/00_winset_control_top_arrow.png
Binary files 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
index 0000000..187516e
--- /dev/null
+++ b/res/images/white/common/00_winset_control_top_bg.png
Binary files 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
index 0000000..2be73aa
--- /dev/null
+++ b/res/images/white/common/00_winset_title_line.png
Binary files differ
diff --git a/res/images/white/common/01_scroller.png b/res/images/white/common/01_scroller.png
new file mode 100755
index 0000000..88ee4ab
--- /dev/null
+++ b/res/images/white/common/01_scroller.png
Binary files 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
index 0000000..1644c53
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_arrow.png
Binary files 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
index 0000000..aa3a361
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_bg.png
Binary files 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
index 0000000..e86b399
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_btn_bg.png
Binary files 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
index 0000000..53427eb
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_btn_bg2.9.png
Binary files 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
index 0000000..c4be89a
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_btn_normal.png
Binary files 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
index 0000000..c62a838
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_btn_press_bottom.png
Binary files 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
index 0000000..f60efb0
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_btn_press_middle.png
Binary files 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
index 0000000..6da7da9
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_btn_press_top.png
Binary files 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
index 0000000..16ceb28
--- /dev/null
+++ b/res/images/white/common/T01-2_popup_divider.png
Binary files 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
index 0000000..fe53ace
--- /dev/null
+++ b/res/images/white/common/T01-2_title_btn_bg.png
Binary files 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
index 0000000..c74d762
--- /dev/null
+++ b/res/images/white/common/T01-2_title_btn_bg_press_01.png
Binary files 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
index 0000000..4c56281
--- /dev/null
+++ b/res/images/white/common/T01-2_title_btn_bg_press_02.png
Binary files 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
index 0000000..413b481
--- /dev/null
+++ b/res/images/white/control/T01-2_icon_toolbar_next.png
Binary files 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
index 0000000..cd95fae
--- /dev/null
+++ b/res/images/white/control/T01-2_icon_toolbar_pause.png
Binary files 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
index 0000000..e939a59
--- /dev/null
+++ b/res/images/white/control/T01-2_icon_toolbar_play.png
Binary files 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
index 0000000..c57dd54
--- /dev/null
+++ b/res/images/white/control/T01-2_icon_toolbar_previous.png
Binary files 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
index 0000000..d2ce746
--- /dev/null
+++ b/res/images/white/control/T01-2_icon_toolbar_stop.png
Binary files 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
index 0000000..e58ce84
--- /dev/null
+++ b/res/images/white/panel/T01-2_btn_toolbar_back.png
Binary files 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
index 0000000..f7c10e8
--- /dev/null
+++ b/res/images/white/panel/T01-2_btn_toolbar_volume.png
Binary files 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
index 0000000..2918312
--- /dev/null
+++ b/res/images/white/panel/T02_volume_icon_Mute.png
Binary files differ
diff --git a/res/po/CMakeLists.txt b/res/po/CMakeLists.txt
new file mode 100755
index 0000000..407cb2b
--- /dev/null
+++ b/res/po/CMakeLists.txt
@@ -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
index 0000000..eb1a31e
--- /dev/null
+++ b/res/po/POTFILES.in
@@ -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
index 0000000..c000c40
--- /dev/null
+++ b/res/po/de_DE.po
@@ -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
index 0000000..e3e9716
--- /dev/null
+++ b/res/po/el_GR.po
@@ -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
index 0000000..e39a146
--- /dev/null
+++ b/res/po/en.po
@@ -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
index 0000000..89ad5c6
--- /dev/null
+++ b/res/po/es_ES.po
@@ -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
index 0000000..ffa675c
--- /dev/null
+++ b/res/po/fr_FR.po
@@ -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
index 0000000..1e0fa64
--- /dev/null
+++ b/res/po/it_IT.po
@@ -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
index 0000000..bcb7201
--- /dev/null
+++ b/res/po/ja_JP.po
@@ -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
index 0000000..013f753
--- /dev/null
+++ b/res/po/ko_KR.po
@@ -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
index 0000000..9b866cc
--- /dev/null
+++ b/res/po/nl_NL.po
@@ -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
index 0000000..7e467b2
--- /dev/null
+++ b/res/po/pt_PT.po
@@ -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
index 0000000..84ae19a
--- /dev/null
+++ b/res/po/ru_RU.po
@@ -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
index 0000000..beec85b
--- /dev/null
+++ b/res/po/tr_TR.po
@@ -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
index 0000000..3c73f77
--- /dev/null
+++ b/res/po/zh_CN.po
@@ -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
index 0000000..5f840aa
--- /dev/null
+++ b/res/po/zh_HK.po
@@ -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
index 0000000..8237fde
--- /dev/null
+++ b/res/po/zh_TW.po
@@ -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
index 0000000..8c79577
--- /dev/null
+++ b/src/mp-drm-ctrl.c
@@ -0,0 +1,411 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..a47a959
--- /dev/null
+++ b/src/mp-external-ug.c
@@ -0,0 +1,628 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..f5bcc4f
--- /dev/null
+++ b/src/mp-util-media-service.c
@@ -0,0 +1,2497 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..07267f6
--- /dev/null
+++ b/src/mp-util.c
@@ -0,0 +1,1649 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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");
+ }
+}
+
+
+static void MpUtilSoundMgrVolumeChangeCb(sound_type_e nType, unsigned int nVolume, void *pUserData)
+{
+ VideoLogInfo("");
+
+ //char szFilename[9] = { 0 };
+
+ if (!pUserData ) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ if(nType != (sound_type_e)VOLUME_KEY_TYPE_MEDIA)
+ {
+ return;
+ }
+
+ bool bMute = FALSE;
+
+ if(nVolume == 0)
+ {
+ bMute = TRUE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute(pAppData, bMute);
+
+}
+/*
+ * 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);
+}
+
+bool MpUtilCheckMuteStatus()
+{
+ VideoLogInfo("");
+
+ int nVolume = 0;
+ int nRet = 0;
+ nRet = sound_manager_get_volume(VOLUME_KEY_TYPE_MEDIA, &nVolume);
+ if(nRet != SOUND_MANAGER_ERROR_NONE)
+ {
+ VideoLogError("sound_manager_get_volume fail : %d", nRet);
+ return FALSE;
+ }
+
+ if(nVolume == 0)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool MpUtilSetVolumeChangeCbSet(void *pUserData)
+{
+ int ret = 0;
+ VideoLogInfo("");
+
+ ret = sound_manager_set_volume_changed_cb(MpUtilSoundMgrVolumeChangeCb, pUserData);
+ if(ret != SOUND_MANAGER_ERROR_NONE)
+ {
+ VideoLogError("sound_manager_set_volume_changed_cb fail : %d", ret);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+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;
+}
diff --git a/src/mp-video-animation-ctrl.c b/src/mp-video-animation-ctrl.c
new file mode 100755
index 0000000..3acc475
--- /dev/null
+++ b/src/mp-video-animation-ctrl.c
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..0102d79
--- /dev/null
+++ b/src/mp-video-app-ctrl.c
@@ -0,0 +1,1383 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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);
+static void MpVideoAppCtrlSetMute(VideoAppData *pAppData, bool bMute);
+
+
+/*
+ * 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;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute = (void *)MpVideoAppCtrlSetMute;
+}
+
+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;
+ }
+
+ MpVideoAppCtrlRotateScreen(pAppData, MpUtilGetRotationState());
+
+ }
+ 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);
+ MpUtilSetVolumeChangeCbUnset();
+
+ 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 MpVideoAppCtrlSetMute(VideoAppData *pAppData, bool bMute)
+{
+ VideoLogInfo("");
+
+ MpVideoViewCtrlSetMuteValue(bMute);
+}
+
+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());
+
+ MpUtilSetVolumeChangeCbSet((void *)pAppData);
+
+ 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 100755
index 0000000..240fbd2
--- /dev/null
+++ b/src/mp-video-ctrl-mgr.c
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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.");
+ }
+
+ 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
index 0000000..2143d2a
--- /dev/null
+++ b/src/mp-video-display-view.c
@@ -0,0 +1,1341 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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;
+ }
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+
+ 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);
+ }
+
+ if(MpUtilCheckMuteStatus())
+ {
+ MpVideoDisplayViewSetMuteStatus(TRUE);
+ }
+
+ 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);
+ }
+}
+
+void MpVideoDisplayViewSetMuteStatus(bool bMute)
+{
+ VideoLogInfo("");
+
+ if(pDisplayViewCtrlEdj == NULL)
+ {
+ VideoLogError("Display control edj is NULL");
+ return;
+ }
+
+ if(bMute)
+ {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SET_MUTE, "*");
+ }
+ else
+ {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_UNSET_MUTE, "*");
+ }
+
+}
+
diff --git a/src/mp-video-player-mgr.c b/src/mp-video-player-mgr.c
new file mode 100644
index 0000000..e1b786f
--- /dev/null
+++ b/src/mp-video-player-mgr.c
@@ -0,0 +1,856 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..6ad16d7
--- /dev/null
+++ b/src/mp-video-progressbar.c
@@ -0,0 +1,752 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..a9df9e5
--- /dev/null
+++ b/src/mp-video-service-ctrl.c
@@ -0,0 +1,629 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..3c7e5ec
--- /dev/null
+++ b/src/mp-video-sound-path-ctrl.c
@@ -0,0 +1,605 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..b5c8657
--- /dev/null
+++ b/src/mp-video-streaming-ctrl.c
@@ -0,0 +1,818 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 100755
index 0000000..0ffdf63
--- /dev/null
+++ b/src/mp-video-streaming-view.c
@@ -0,0 +1,743 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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);
+
+ if(MpUtilCheckMuteStatus())
+ {
+ MpVideoStreamingViewSetMuteStatus(TRUE);
+ }
+
+ 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);
+}
+
+void MpVideoStreamingViewSetMuteStatus(bool bMute)
+{
+ VideoLogInfo("");
+ if(pStreamingViewCtrlEdj == NULL)
+ {
+ VideoLogError("streaming control edj is NULL");
+ return;
+ }
+
+ if(bMute)
+ {
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_SET_MUTE, "*");
+ }
+ else
+ {
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_UNSET_MUTE, "*");
+ }
+
+}
+
diff --git a/src/mp-video-subtitle-ctrl.c b/src/mp-video-subtitle-ctrl.c
new file mode 100755
index 0000000..b47fc68
--- /dev/null
+++ b/src/mp-video-subtitle-ctrl.c
@@ -0,0 +1,352 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 100755
index 0000000..f3892ae
--- /dev/null
+++ b/src/mp-video-view-mgr.c
@@ -0,0 +1,1390 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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 MpVideoViewCtrlSetMuteValue(bool bMute)
+{
+
+ 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)
+ {
+ MpVideoDisplayViewSetMuteStatus(bMute);
+ }
+ else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+ {
+ MpVideoStreamingViewSetMuteStatus(bMute);
+ }
+}
+
+
+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
index 0000000..6601587
--- /dev/null
+++ b/src/mp-video-volume-ctrl.c
@@ -0,0 +1,450 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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
index 0000000..32396ec
--- /dev/null
+++ b/src/video-player.c
@@ -0,0 +1,535 @@
+/*
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (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();
+ MpUtilVolumeTypeSet();
+
+ 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;
+ MpUtilVolumeTypeSet();
+
+ 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();
+ MpUtilVolumeTypeUnset();
+ 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("");
+
+ MpUtilVolumeTypeUnset();
+ 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;
+ }
+ MpUtilVolumeTypeSet();
+
+ 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;
+}