summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYeongil Jang <yg0577.jang@samsung.com>2012-09-24 08:28:22 +0900
committerYeongil Jang <yg0577.jang@samsung.com>2012-09-24 08:28:22 +0900
commitc0d82a36a38cb281acbf916c371582bf49ae3231 (patch)
tree21f66e9366e768f92f626a7a6a49c2ea5311ae08
parent12696a9e64dbccb08db7c8adb66e1075a39d6d14 (diff)
downloadvideo-player-c0d82a36a38cb281acbf916c371582bf49ae3231.tar.gz
video-player-c0d82a36a38cb281acbf916c371582bf49ae3231.tar.bz2
video-player-c0d82a36a38cb281acbf916c371582bf49ae3231.zip
Signed-off-by: Yeongil Jang <yg0577.jang@samsung.com>
-rw-r--r--CMakeLists.txt211
-rwxr-xr-xLICENSE75
-rwxr-xr-xNOTICE1
-rwxr-xr-xdebian/changelog122
-rwxr-xr-xdebian/control29
-rwxr-xr-xdebian/org.tizen.video-player.install7
-rwxr-xr-xdebian/org.tizen.video-player.install.in7
-rwxr-xr-xdebian/org.tizen.video-player.postinst10
-rwxr-xr-xdebian/org.tizen.video-player.postinst.in10
-rwxr-xr-xdebian/rules121
-rwxr-xr-xdebian/substvars1
-rw-r--r--include/mp-drm-ctrl.h74
-rwxr-xr-xinclude/mp-external-ug.h50
-rwxr-xr-xinclude/mp-util-media-service.h123
-rw-r--r--include/mp-util.h92
-rwxr-xr-xinclude/mp-video-animation-ctrl.h35
-rwxr-xr-xinclude/mp-video-app-ctrl.h34
-rw-r--r--include/mp-video-ctrl-mgr.h55
-rw-r--r--include/mp-video-display-view.h60
-rwxr-xr-xinclude/mp-video-info-ctrl.h25
-rwxr-xr-xinclude/mp-video-info-view.h29
-rw-r--r--include/mp-video-log.h42
-rw-r--r--include/mp-video-player-mgr.h102
-rwxr-xr-xinclude/mp-video-progressbar.h34
-rw-r--r--include/mp-video-service-ctrl.h44
-rw-r--r--include/mp-video-sound-path-ctrl.h29
-rwxr-xr-xinclude/mp-video-streaming-ctrl.h41
-rw-r--r--include/mp-video-streaming-view.h57
-rwxr-xr-xinclude/mp-video-string-define.h140
-rwxr-xr-xinclude/mp-video-subtitle-ctrl.h27
-rw-r--r--include/mp-video-type-define.h165
-rwxr-xr-xinclude/mp-video-value-define.h233
-rwxr-xr-xinclude/mp-video-view-mgr.h44
-rwxr-xr-xinclude/mp-xml-parser.h52
-rw-r--r--include/video-player.h104
-rwxr-xr-xorg.tizen.video-player.xml63
-rw-r--r--packaging/org.tizen.video-player.spec91
-rwxr-xr-xres/edc/add_tag.edc346
-rwxr-xr-xres/edc/animation.edc299
-rwxr-xr-xres/edc/control.edc1065
-rwxr-xr-xres/edc/detail.edc34
-rwxr-xr-xres/edc/hidden_button_panel.edc187
-rwxr-xr-xres/edc/image_res.edc114
-rwxr-xr-xres/edc/main.edc509
-rwxr-xr-xres/edc/multi_win.edc69
-rwxr-xr-xres/edc/option_button.edc231
-rwxr-xr-xres/edc/panel.edc118
-rwxr-xr-xres/edc/popup_progressbar.edc263
-rwxr-xr-xres/edc/progress.edc445
-rwxr-xr-xres/edc/setting.edc33
-rwxr-xr-xres/edc/subtitle.edc55
-rwxr-xr-xres/edc/vp-button-white.edc504
-rwxr-xr-xres/edc/vp-button.edc1086
-rwxr-xr-xres/edc/vp-check.edc1318
-rwxr-xr-xres/edc/vp-controlbar.edc760
-rwxr-xr-xres/edc/vp-ctxpopup.edc1762
-rwxr-xr-xres/edc/vp-custom-winset-style.edc11
-rwxr-xr-xres/edc/vp-layout.edc178
-rwxr-xr-xres/edc/vp-naviframe.edc4830
-rwxr-xr-xres/edc/vp-naviframe_white.edc2872
-rwxr-xr-xres/edc/vp-progressbar-list.edc584
-rwxr-xr-xres/edc/vp-toolbar.edc1733
-rwxr-xr-xres/edc/vp_font.edc16
-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_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/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
-rw-r--r--res/images/icon/_06_myfiles_list_folder.pngbin0 -> 1729 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/org.tizen.video-player.pngbin0 -> 19700 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_back.pngbin0 -> 3835 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_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/toolbar/T01-2_btn_toolbar_back.pngbin0 -> 3835 bytes
-rwxr-xr-xres/images/toolbar/T01-2_btn_toolbar_volum.pngbin0 -> 4129 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/video_sound_path_dim.pngbin0 -> 527 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 -> 3347 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 -> 3327 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/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.c413
-rw-r--r--src/mp-external-ug.c569
-rwxr-xr-xsrc/mp-util-media-service.c2417
-rw-r--r--src/mp-util.c1375
-rwxr-xr-xsrc/mp-video-animation-ctrl.c151
-rwxr-xr-xsrc/mp-video-app-ctrl.c1432
-rw-r--r--src/mp-video-ctrl-mgr.c526
-rw-r--r--src/mp-video-display-view.c1071
-rwxr-xr-xsrc/mp-video-info-ctrl.c437
-rw-r--r--src/mp-video-info-view.c255
-rwxr-xr-xsrc/mp-video-player-mgr.c632
-rwxr-xr-xsrc/mp-video-progressbar.c730
-rw-r--r--src/mp-video-service-ctrl.c495
-rw-r--r--src/mp-video-sound-path-ctrl.c381
-rwxr-xr-xsrc/mp-video-streaming-ctrl.c813
-rw-r--r--src/mp-video-streaming-view.c679
-rwxr-xr-xsrc/mp-video-subtitle-ctrl.c190
-rwxr-xr-xsrc/mp-video-view-mgr.c1167
-rwxr-xr-xsrc/mp-xml-parser.c374
-rw-r--r--src/video-player.c306
301 files changed, 39131 insertions, 138 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..00bc551
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,211 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(video-player C CXX)
+
+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-xml-parser.c
+src/mp-video-view-mgr.c
+src/mp-video-display-view.c
+src/mp-video-info-view.c
+src/mp-external-ug.c
+src/mp-video-progressbar.c
+src/mp-util-media-service.c
+src/mp-video-sound-path-ctrl.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-info-ctrl.c
+src/mp-video-service-ctrl.c
+src/mp-drm-ctrl.c
+)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}/include
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+ elementary
+ drm-client
+ utilX
+ dlog
+ vconf
+ libxml-2.0
+ 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
+ pmapi
+ capi-appfw-application
+ capi-media-player
+ capi-media-sound-manager
+ capi-media-image-util
+ 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}\"")
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "/opt/apps/org.tizen.video-player/data")
+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("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+#ADD_DEFINITIONS("-DUSE_XVIMAGESINK")
+
+
+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(detail.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/detail.edc
+${CMAKE_BINARY_DIR}/res/edc/detail.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/detail.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(hidden_button_panel.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/hidden_button_panel.edc
+${CMAKE_BINARY_DIR}/res/edc/hidden_button_panel.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/hidden_button_panel.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(multi_win.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/multi_win.edc
+${CMAKE_BINARY_DIR}/res/edc/multi_win.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/multi_win.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} detail.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-custom-winset-style.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} hidden_button_panel.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} popup_progressbar.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} multi_win.edj)
+
+
+######################################
+# install desktop file & icon, edje #
+######################################
+
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+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/detail.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-custom-winset-style.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/hidden_button_panel.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/popup_progressbar.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/multi_win.edj DESTINATION ${EDJDIR})
+
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.video-player.xml DESTINATION /opt/share/packages)
+
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/org.tizen.video-player.png DESTINATION /opt/share/icons/default/small/)
+#INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/ DESTINATION ${RESDIR}/images)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/icon/ DESTINATION ${RESDIR}/images/icon)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/toolbar/ DESTINATION ${RESDIR}/images/toolbar)
+
+ADD_SUBDIRECTORY(res/po)
diff --git a/LICENSE b/LICENSE
new file mode 100755
index 0000000..7ccb5b5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,75 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://www.tizenopensource.org/license
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies with the standards set forth in the Compatibility Definition Document and passes the Compatibility Test Suite as defined from time to time by the Tizen Technical Steering Group and certified by the Tizen Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work solely as incorporated into a Tizen Certified Platform, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work solely as incorporated into a Tizen Certified Platform to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof pursuant to the copyright license above, in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+ 2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+ 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+ 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Flora License, Version 1.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.tizenopensource.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..f085dc6
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
diff --git a/debian/changelog b/debian/changelog
index 34e1d09..9aa8b91 100755
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,119 +1,7 @@
-harfbuzz (0.7.0-1slp2+1) unstable; urgency=low
+video-player (0.1.5) unstable; urgency=low
- * Upgrade to latest harfbuzz
+ * Initial release.
+ * Git: pkgs/v/video-player
+ * Tag : video-player_0.1.5
- -- Mike McCormack <mj.mccormack@samsung.com> Wed, 03 Aug 2011 17:42:58 +0900
-
-harfbuzz (0.4.1-1slp2+2) unstable; urgency=low
-
- * Move headers to dev package
- * use CMake to build
-
- -- Mike McCormack <mj.mccormack@samsung.com> Thu, 21 Apr 2011 19:10:30 +0900
-
-harfbuzz (0.4.1-1slp2+1) unstable; urgency=low
-
- * Fixed an issue with uninitialized values
- * Fixed an issue with log clusters not updated correctly.
- * Git: 165.213.180.234:slp/pkgs/h/harfbuzz
- * Tag: harfbuzz_0.4.1-1slp2+1
-
- -- Tom Hacohen <tom.hacohen@partner.samsung.com> Tue, 18 Jan 2011 16:00:38 +0900
-
-harfbuzz (0.4.0-1slp2+13) unstable; urgency=low
-
- * Fixed version number in the .pc file
- * Git: 165.213.180.234:slp/pkgs/h/harfbuzz
- * Tag: harfbuzz_0.4.0-1slp2+13
-
- -- Tom Hacohen <tom.hacohen@partner.samsung.com> Tue, 04 Jan 2011 16:45:04 +0200
-
-harfbuzz (0.4.0-1slp2+12) unstable; urgency=low
-
- * Modify git repository path
- * Git: 165.213.180.234:slp/pkgs/h/harfbuzz
- * Tag: harfbuzz_0.4.0-1slp2+12
-
- -- Jihoon Kim <jihoon48.kim@samsung.com> Mon, 20 Dec 2010 13:45:30 +0900
-
-harfbuzz (0.4.0-1slp2+11) unstable; urgency=low
-
- * Change FPIC to fPIC
- * Git: 165.213.180.234:/git/slp/pkgs/harfbuzz
- * Tag: harfbuzz_0.4.0-1slp2+11
-
- -- Jihoon Kim <jihoon48.kim@samsung.com> Mon, 20 Dec 2010 13:39:26 +0900
-
-harfbuzz (0.4.0-1slp2+10) unstable; urgency=low
-
- * Add git tag
- * Git: 165.213.180.234:/git/slp/pkgs/harfbuzz
- * Tag: harfbuzz_0.4.0-1slp2+10
-
- -- Jihoon Kim <jihoon48.kim@samsung.com> Wed, 10 Nov 2010 11:30:49 +0900
-
-harfbuzz (0.4.0-1slp2+8) unstable; urgency=low
-
- * Added maintainer according to policy
-
- -- prameet.k <prameet.k@partner.samsung.com> Fri, 21 May 2010 10:00:53 +0900
-
-harfbuzz (0.4.0-1slp2+7) unstable; urgency=low
-
- * Change maintainer according to the policy
-
- -- Jihoon Kim <jihoon48.kim@samsung.com> Wed, 21 Apr 2010 10:00:53 +0900
-
-harfbuzz (0.4.0-1slp2+6) unstable; urgency=high
-
- * Modified the control file
-
- -- Janani <janani.k@samsung.com> Thu, 08 Apr 2010 15:14:53 +0530
-
-harfbuzz (0.4.0-1slp2+5) unstable; urgency=low
-
- * Removed DOS style line endings
-
- -- Janani <janani.k@samsung.com> Thu, 08 Apr 2010 10:53:45 +0530
-
-harfbuzz (0.4.0-1slp2+4) unstable; urgency=low
-
- * Minor changes
-
- -- Janani <janani.k@samsung.com> Tue, 06 Apr 2010 13:14:09 +0530
-
-harfbuzz (0.4.0-1slp2+3) unstable; urgency=low
-
- * Modified makefile and install file
-
- -- Janani <janani.k@samsung.com> Tue, 06 Apr 2010 13:11:30 +0530
-
-harfbuzz (0.4.0-1slp2+2) unstable; urgency=low
-
- * Package name changed
-
- -- Janani <janani.k@samsung.com> Fri, 26 Mar 2010 14:18:04 +0530
-
-harfbuzz (0.4.0-1slp2+1) unstable; urgency=low
-
- * Repackaging
-
- -- Janani <janani.k@samsung.com> Fri, 26 Mar 2010 10:14:37 +0530
-
-harfbuzz (0.3) unstable; urgency=low
-
- * Email ID corrected
-
- -- Janani <janani.k@samsung.com> Wed, 17 Mar 2010 16:00:07 +0530
-
-harfbuzz (0.2) unstable; urgency=low
-
- * Owner Changed
-
- -- Janani <janani.k@samsung.com> Mon, 15 Mar 2010 16:57:26 +0530
-
-harfbuzz (0.1) unstable; urgency=low
-
- * Initial Release.
-
- -- Janani <janani.k@samsung.com> Fri, 05 Mar 2010 10:49:10 +0530
+ -- jongdong.lee <jongdong.lee@samsung.com> Tue, 06 Dec 2011 16:49:05 -0800
diff --git a/debian/control b/debian/control
index 6c61eff..f312da5 100755
--- a/debian/control
+++ b/debian/control
@@ -1,24 +1,19 @@
-Source: harfbuzz
-Section: libs
+Source: video-player
+Section: video
Priority: optional
-Maintainer: janani <janani.k@samsung.com>, Kesavardhana Gandla <kesav.gandla@samsung.com>
-Build-Depends: debhelper (>= 5),libfreetype6-dev, pkg-config, ragel
+Maintainer: JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>, JuBong Lee <jubong@samsung.com>
+Uploaders: JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>, JuBong Lee <jubong@samsung.com>
+Build-Depends: debhelper (>= 5),libelm-dev, libappcore-efl-dev, libui-gadget-dev, libslp-utilx-dev, libmm-common-dev, libmm-player-dev, libmm-sound-dev, dlog-dev, libslp-pm-dev, libmm-session-dev, libmm-ta-dev, libmm-fileinfo-dev, libappcore-common-dev, libmedia-service-dev, libxml2-0, syspopup-caller-dev, libecore, libecore-file, libecore-imf, libecore-x, libecore-input, libecore-evas, libeina, libevas, libedje, libappsvc-dev, libail-0-dev, libefreet-dev, libicu-dev, execstack
Standards-Version: 3.7.2
-Package: libharfbuzz
+Package: org.tizen.video-player
Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Hindi Reshaping Library
+Depends: ${shlibs:Depends}, ${misc:Depends}, libappcore-efl-0, libslp-utilx-0, libslp-sensor-0, libmm-common, libmm-player, libmm-log, libmm-ta, libmm-sound-0, libmm-fileinfo, libdlog-0, libmm-session-0, libslp-setting-0, libappcore-efl-0, libui-gadget-0, libmm-utility, libxml2-0, libmedia-service, libpng12-0, libappsvc-0, libail-0, libmedia-utils
+Description: Video & streaming player
-
-Package: libharfbuzz-dev
-Architecture: any
-Section: libdevel
-Depends: ${misc:Depends}, libharfbuzz (= ${binary:Version})
-Description: Hindi reshaping library (unstripped)
-
-Package: libharfbuzz-dbg
+Package: org.tizen.video-player-dbg
Section: debug
Architecture: any
-Depends: ${misc:Depends}, libharfbuzz (= ${Source-Version})
-Description: Hindi reshaping library (unstripped)
+Depends: ${shlibs:Depends}, ${misc:Depends}, org.tizen.video-player (= ${Source-Version})
+Description: Video & streaming player (unstripped)
+
diff --git a/debian/org.tizen.video-player.install b/debian/org.tizen.video-player.install
new file mode 100755
index 0000000..eb020fa
--- /dev/null
+++ b/debian/org.tizen.video-player.install
@@ -0,0 +1,7 @@
+/opt/apps/org.tizen.video-player/bin/*
+/opt/apps/org.tizen.video-player/res/locale/*
+/opt/apps/org.tizen.video-player/res/icons/default/small/*
+/opt/apps/org.tizen.video-player/res/edje/*
+/opt/apps/org.tizen.video-player/res/images/*
+/opt/apps/org.tizen.video-player/data
+/opt/share/applications/*
diff --git a/debian/org.tizen.video-player.install.in b/debian/org.tizen.video-player.install.in
new file mode 100755
index 0000000..0ac9b2d
--- /dev/null
+++ b/debian/org.tizen.video-player.install.in
@@ -0,0 +1,7 @@
+@PREFIX@/bin/*
+@PREFIX@/res/locale/*
+@PREFIX@/res/icons/default/small/*
+@PREFIX@/res/edje/*
+@PREFIX@/res/images/*
+@PREFIX@/data
+/opt/share/applications/*
diff --git a/debian/org.tizen.video-player.postinst b/debian/org.tizen.video-player.postinst
new file mode 100755
index 0000000..1c1810e
--- /dev/null
+++ b/debian/org.tizen.video-player.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Create a directory to store video-player bookmark pictures and stuffs.
+# mkdir -p /opt/data/video-player
+
+if [ ${USER} == "root" ]
+then
+ #chown 5000:5000 /opt/data/video-player
+ chown -R 5000:5000 /opt/apps/org.tizen.video-player/data
+
+fi
diff --git a/debian/org.tizen.video-player.postinst.in b/debian/org.tizen.video-player.postinst.in
new file mode 100755
index 0000000..1c1810e
--- /dev/null
+++ b/debian/org.tizen.video-player.postinst.in
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Create a directory to store video-player bookmark pictures and stuffs.
+# mkdir -p /opt/data/video-player
+
+if [ ${USER} == "root" ]
+then
+ #chown 5000:5000 /opt/data/video-player
+ chown -R 5000:5000 /opt/apps/org.tizen.video-player/data
+
+fi
diff --git a/debian/rules b/debian/rules
index 8882abb..5097cee 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,9 +1,122 @@
#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
-include /usr/share/cdbs/1/class/autotools.mk
-include /usr/share/cdbs/1/rules/debhelper.mk
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
-DEB_CONFIGURE_SCRIPT := ./autogen.sh
-DEB_MAKE_CLEAN_TARGET := distclean
+CFLAGS += -Wall -g
+LDFLAGS ?=
+PREFIX ?= /opt/apps/org.tizen.video-player
+RESDIR ?= /opt/apps/org.tizen.video-player/res
+DATADIR ?= /opt/apps/org.tizen.video-player/data
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+CFLAGS += -fpie
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed -pie
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+ CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake . -DCMAKE_INSTALL_PREFIX=$(PREFIX)
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/video-player.sgml > video-player.1
+
+ for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+ cat $$f > $${f%.in}; \
+ sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
+ sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
+ sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
+ done
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ -$(MAKE) clean
+
+ find ./ -depth -type d -name "CMakeFiles" -exec rm {} -rf \;
+ find ./ -name "Makefile" -exec rm {} -f \;
+ find ./ -name "cmake_install.cmake" -exec rm {} -f \;
+ rm -rf CMakeCache.txt
+ rm -rf install_manifest.txt
+ rm -rf *.pc
+ rm -rf *.so
+ rm -rf org.tizen.video-player.desktop
+ rm -rf res/edc/*.edj
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/video-player.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+ execstack -c $(CURDIR)/debian/tmp/opt/apps/org.tizen.video-player/bin/video-player
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+ dh_install --sourcedir=debian/tmp
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+# dh_strip
+ dh_strip --dbg-package=org.tizen.video-player-dbg
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/debian/substvars b/debian/substvars
new file mode 100755
index 0000000..5c38c57
--- /dev/null
+++ b/debian/substvars
@@ -0,0 +1 @@
+shlibs:Depends=libdbus-1-0 (>= 1.1.1), libeet1, libeina-svn-04 (>= 0.0.2.062+svn20090910), libelm-svn-01, libembryo0, libglib2.0-0, libgstreamer-plugins-base0.10-0, libgstreamer0.10-0, libimlib2, zlib1g
diff --git a/include/mp-drm-ctrl.h b/include/mp-drm-ctrl.h
new file mode 100644
index 0000000..25ed52e
--- /dev/null
+++ b/include/mp-drm-ctrl.h
@@ -0,0 +1,74 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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..333f086
--- /dev/null
+++ b/include/mp-external-ug.h
@@ -0,0 +1,50 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 100755
index 0000000..e481798
--- /dev/null
+++ b/include/mp-util-media-service.h
@@ -0,0 +1,123 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 MpUtilMediaSvcGetVideoListSize(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 100644
index 0000000..b43747d
--- /dev/null
+++ b/include/mp-util.h
@@ -0,0 +1,92 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 MpUtilCheckPlayerType(char *szUriPath);
+bool MpUtilCheckLocalFileExist(char *uri);
+bool MpUtilCheckBatteryStatus(void);
+int MpUtilBatteryStatusNoti(VideoAppData* pAppData);
+int MpUtilBatteryStatusNotiIgnore(void);
+int MpUtilMMCstatusNoti(VideoAppData* pAppData);
+int MpUtilMMCstatusNotiIgnore(void);
+void MpUtilLanguageInit(VideoAppData* pAppData);
+int MpUtilCheckDlnaSortType(void* pSvcHandle, char* szBundleKey);
+int MpUtilCheckDlnaMediaID(void* pSvcHandle, char* szBundleKey);
+void MpUtilInitXML();
+void MpUtilDestroyXML();
+char* MpUtilGetXMLQualityURL(void);
+bool MpUtilIsXMLUrl(char* szMediaUri);
+bool MpUtilParsingXML(char* szMediaUri);
+int MpUtilGetXMLItemCount(void);
+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);
+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 MpUtilDetailPopup(VideoAppData *pAppData, int nVideoItemIndex, char *szTitle, void *PopupButtonCallbackFunc);
+bool MpUtilProgressPopUp(VideoAppData* pAppData, char* szLabel);
+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 MpUtilCheckCallStatus(void);
+bool MpUtilIsConnectEarjack(void);
+unsigned int MpUtilGetMainWindowXID(void);
+bool MpUtilRegisteEarjackCbFunc(void* pEarjackCb, void* pUserData);
+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);
+#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..42a04d2
--- /dev/null
+++ b/include/mp-video-animation-ctrl.h
@@ -0,0 +1,35 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 100755
index 0000000..6fb0899
--- /dev/null
+++ b/include/mp-video-app-ctrl.h
@@ -0,0 +1,34 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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);
+
+#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..a8b2cf3
--- /dev/null
+++ b/include/mp-video-ctrl-mgr.h
@@ -0,0 +1,55 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 *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 *pUserData);
+void MpVideoCtrlMgrSetOverlayXid(void* pXid);
+void MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData);
+
+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);
+bool MpVideoCtrlMgrMediaRealize(void);
+bool MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData);
+
+
+#endif
diff --git a/include/mp-video-display-view.h b/include/mp-video-display-view.h
new file mode 100644
index 0000000..d30f790
--- /dev/null
+++ b/include/mp-video-display-view.h
@@ -0,0 +1,60 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 MpVideoDisplayViewHideSoundpath(void);
+void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData);
+bool MpVideoDisplayViewIsTopView(void);
+void MpVideoDisplayViewShowNocontentImage(void *pUserData);
+void MpVideoDisplayViewHideNocontentImage(void);
+void MpVideoDisplayViewPortrate(void);
+void MpVideoDisplayViewLandscape(void);
+void MpVideoDisplayViewResetProgressBar(void *pUserData);
+void MpVideoDisplayViewLockScreen(void *pUserData);
+void MpVideoDisplayViewUnlockScreen(void *pUserData);
+bool MpVideoDisplayViewGetScreenLockState(void);
+int MpVideoDisplayViewGetScreenSize(void);
+bool MpVideoDisplayViewIsPauseByUser(void);
+void MpVideoDisplayViewUpdateProgressBar(void *pUserData);
+
+#endif
diff --git a/include/mp-video-info-ctrl.h b/include/mp-video-info-ctrl.h
new file mode 100755
index 0000000..d3a14cd
--- /dev/null
+++ b/include/mp-video-info-ctrl.h
@@ -0,0 +1,25 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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..a7ec098
--- /dev/null
+++ b/include/mp-video-info-view.h
@@ -0,0 +1,29 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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..60ecaa3
--- /dev/null
+++ b/include/mp-video-log.h
@@ -0,0 +1,42 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 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] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+#define VideoLogError( fmt,arg...) LOGD( "[%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..47eb09d
--- /dev/null
+++ b/include/mp-video-player-mgr.h
@@ -0,0 +1,102 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 *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 MpPlayerMgrSetMute(bool bMuteEnable);
+bool MpPlayerMgrGetMute(void);
+int MpPlayerMgrGetDuration(void);
+bool MpPlayerMgrSetOverlayXid(void* pOverlayXid);
+bool MpPlayerMgrSetSoundPriority(void);
+int MpPlayerMgrSetPlaySpeed(float nSpeedValue);
+int MpPlayerMgrGetVideoWidthResolution(void);
+int MpPlayerMgrGetVideoHeightResolution(void);
+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);
+int MpPlayerMgrGetBufferingPosition(void);
+bool MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData);
+int MpPlayerMgrGetFileStreamType(void);
+bool MpPlayerMgrSetScaling(bool bScale);
+
+#endif
diff --git a/include/mp-video-progressbar.h b/include/mp-video-progressbar.h
new file mode 100755
index 0000000..b5a9c6e
--- /dev/null
+++ b/include/mp-video-progressbar.h
@@ -0,0 +1,34 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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..e05a119
--- /dev/null
+++ b/include/mp-video-service-ctrl.h
@@ -0,0 +1,44 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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_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 MpVideoServiceCtrlGetPlayerTypeWithoutLog(void);
+int MpVideoServiceCtrlGetPlayerType(void);
+void MpVideoServiceCtrlSetPlayerType(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 100644
index 0000000..b46cd2d
--- /dev/null
+++ b/include/mp-video-sound-path-ctrl.h
@@ -0,0 +1,29 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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_UTIL_
diff --git a/include/mp-video-streaming-ctrl.h b/include/mp-video-streaming-ctrl.h
new file mode 100755
index 0000000..4a016d0
--- /dev/null
+++ b/include/mp-video-streaming-ctrl.h
@@ -0,0 +1,41 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 100644
index 0000000..a5f14a7
--- /dev/null
+++ b/include/mp-video-streaming-view.h
@@ -0,0 +1,57 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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(int nRotateMode);
+void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate);
+bool MpVideoStreamingViewGetBufferingState(void);
+bool MpVideoStreamingViewIsTopView(void);
+void MpVideoStreamingViewShowNocontentImage(void *pUserData);
+void MpVideoStreamingViewHideNocontentImage(void);
+void MpVideoStreamingViewLockScreen(void* pUserData);
+void MpVideoStreamingViewUnlockScreen(void* pUserData);
+bool MpVideoStreamingViewGetScreenLockState(void);
+void MpVideoStreamingViewPortrate(void);
+void MpVideoStreamingViewLandscape(void);
+void MpVideoStreamingViewUpdateProgressBar(void *pUserData);
+
+#endif
diff --git a/include/mp-video-string-define.h b/include/mp-video-string-define.h
new file mode 100755
index 0000000..4d544b0
--- /dev/null
+++ b/include/mp-video-string-define.h
@@ -0,0 +1,140 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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_
+
+
+#define MP_SYS_STRING "sys_string"
+#define MP_STREAMING_PLAYER_STR "Streaming player"
+
+#define MP_SHARE_MESSAGE (dgettext("sys_string", "IDS_COM_BODY_MESSAGE"))
+#define MP_SHARE_EMAIL (dgettext("sys_string", "IDS_COM_BODY_EMAIL"))
+#define MP_SHARE_BLUETOOTH (dgettext("sys_string", "IDS_COM_BODY_BLUETOOTH"))
+#define MP_SHARE_FTM (dgettext("sys_string", "IDS_COM_BODY_WI_FI"))
+#define MP_SHARE_FACEBOOK (dgettext("sys_string", "IDS_COM_BODY_FACEBOOK"))
+#define MP_SHARE_YOUTUBE (dgettext("sys_string", "IDS_COM_BODY_YOU_TUBE"))
+#define MP_SHARE_ALLSHARE (dgettext("sys_string", "IDS_COM_BODY_ALLSHARE"))
+
+
+#define MP_POPUP_FAVOURITES "Favourites"
+#define MP_POPUP_NEW_TAG "New tag"
+#define MP_VIDEO_POPUP_TAG "Tag"
+
+#define MP_VIDEO_PATH_KEY "path"
+#define MP_VIDEO_COOKIE_KEY "cookie"
+#define MP_VIDEO_DLNA_SORT_KEY "MSS_Sort_type"
+#define MP_VIDEO_DLNA_MEDIA_ID "MSS_MediaID"
+#define MP_VIDEO_DLNA_SERVER_ID "MSS_ServerID"
+#define MP_VIDEO_SPLIT_VIEW_KEY "split_screen"
+#define MP_VIDEO_DMR_PLAYER "Player List"
+
+
+// SMTP video player string
+#define MP_VPL_CONNECTION_FAIL (dgettext("sys_string", "IDS_COM_POP_CONNECTION_ERROR"))
+#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_SOUND_ALIVE "Sound Alive"
+#define MP_VPL_SUBTITLES "IDS_VPL_OPT_SUBTITLES"
+#define MP_VPL_REPEAT_MODE "Repeat mode"
+#define MP_VPL_AUDIO_TRACK "Audio track"
+
+/* SMTP Repeat mode string */
+#define MP_VPL_REPEAT_OFF "Stop after current video"
+#define MP_VPL_REPEAT_ALL_OFF "Stop after playing all videos"
+#define MP_VPL_REPEAT_ONE "Repeat 1"
+#define MP_VPL_REPEAT_ALL "Repeat all videos"
+
+/* SMTP Subtitle option string */
+#define MP_VPL_SUBTITLE_SHOW "Show subtitle"
+#define MP_VPL_SUBTITLE_HIDE "Hide subtitle"
+#define MP_VPL_SUBTITLE_LANGUAGE "Language"
+#define MP_VPL_SUBTITLE_SIZE "Size"
+#define MP_VPL_SUBTITLE_SYNC "Sync"
+
+#define MP_VPL_SUBTITLE_SIZE_LARGE "Large"
+#define MP_VPL_SUBTITLE_SIZE_MEDIUM "Medium"
+#define MP_VPL_SUBTITLE_SIZE_SMALL "Small"
+
+
+// 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"
+
+
+// Default system string
+#define MP_COM_POP_ERROR "IDS_COM_POP_ERROR"
+#define MP_COM_BODY_LOW_BATTERY "IDS_COM_BODY_LOW_BATTERY"
+#define MP_COM_BODY_DELETE (dgettext("sys_string", "IDS_COM_BODY_DELETE"))
+#define MP_COM_BODY_DELETE_Q (dgettext("sys_string", "IDS_COM_POP_DELETE_Q"))
+#define MP_COM_BODY_SELECT_ALL (dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"))
+#define MP_COM_POP_SELECTED (dgettext("sys_string", "IDS_COM_POP_SELECTED"))
+#define MP_COM_BODY_BACK "IDS_COM_BODY_BACK"
+#define MP_COM_SK_BACK "IDS_COM_SK_BACK"
+#define MP_COM_SK_YES "IDS_COM_SK_YES"
+#define MP_COM_SK_NO "IDS_COM_SK_NO"
+#define MP_COM_BUTTON_CANCEL (dgettext("sys_string", "IDS_IDLE_BUTTON_CANCEL"))
+#define MP_COM_BUTTON_SHARE "IDS_COM_BUTTON_SHARE"
+#define MP_COM_BODY_SIZE "IDS_COM_BODY_SIZE"
+#define MP_COM_BODY_DETAILS_TITLE "IDS_COM_BODY_DETAILS_TITLE"
+#define MP_COM_BODY_FORMAT "IDS_COM_BODY_FORMAT"
+#define MP_COM_POP_DATE "IDS_COM_POP_DATE"
+#define MP_COM_BODY_SOUNDS "IDS_COM_BODY_SOUNDS"
+#define MP_IDLE_BODY_RESOLUTION "IDS_IDLE_BODY_RESOLUTION"
+#define MP_COM_BODY_DETAILS (dgettext("sys_string", "IDS_COM_BODY_DETAILS"))
+#define MP_VIDEO_POPUP_SHARE "IDS_COM_SK4_SHARE"
+#define MP_COM_SEARCH dgettext("sys_string", "IDS_COM_BODY_SEARCH")
+
+#define MP_COM_SOUND_ALIVE (dgettext("sys_string", "IDS_COM_BODY_SOUNDS"))
+#define MP_COM_SETTINGS (dgettext("sys_string", "IDS_COM_BODY_SETTINGS"))
+#define MP_COM_POP_FILE_NOT_FOUND (dgettext("sys_string", "IDS_COM_POP_FILE_NOT_FOUND"))
+#define MP_COM_POP_INVALID_URL (dgettext("sys_string", "IDS_COM_POP_INVALID_URL"))
+#define MP_COM_POP_CONNECTION_FAILED (dgettext("sys_string", "IDS_COM_POP_CONNECTION_FAILED"))
+#define MP_COM_POP_FILE_NOT_EXIST (dgettext("sys_string", "IDS_COM_POP_FILE_NOT_EXIST"))
+
+#define MP_VIDEO_SOUND_PATH "Sound Path"
+
+
+/* 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?")
+
+
+#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..3c37da3
--- /dev/null
+++ b/include/mp-video-subtitle-ctrl.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 MpVideoSubtitleCtrlInit(void *pUserData);
+void MpVideoSubtitleCtrlDestroy(void);
+bool MpVideoSubtitleCtrlIsExistSubtitle(void);
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUriPath);
+
+#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..5ab9f56
--- /dev/null
+++ b/include/mp-video-type-define.h
@@ -0,0 +1,165 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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_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_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..ca44f0b
--- /dev/null
+++ b/include/mp-video-value-define.h
@@ -0,0 +1,233 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 "/opt/apps/org.tizen.video-player"
+#define EDJ_PATH "/opt/apps/org.tizen.video-player/res/edje"
+#define LOCALEDIR "/opt/apps/org.tizen.video-player/res/locale"
+
+#define VIDEO_BOOKMARK_DIR PREFIX"/data"
+#define VIDEO_TRIM_DATA_DIR PREFIX"/data"
+
+#define VIDEO_HEAD_ICON_SOUNDPATH PREFIX"/res/images/icon/T01-2_icon_title_soundpath.png"
+
+#define VIDEO_PLAYER_MAIN_EDJ EDJ_PATH"/main.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_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_MULTI_WIN_EDJ EDJ_PATH"/multi_win.edj"
+#define VIDEO_CUSTOM_THEME EDJ_PATH"/vp-custom-winset-style.edj"
+#define VIDEO_PLAYER_HIDDEN_PANEL_EDJ EDJ_PATH"/hidden_button_panel.edj"
+#define VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ EDJ_PATH"/popup_progressbar.edj"
+
+
+
+
+#define MAIN_EDJ_GROUP "main"
+#define CONTROL_EDJ_GROUP "control"
+#define PROGRESS_EDJ_GROUP "progress"
+#define MULTIWIN_EDJ_GROUP "mw"
+
+#define PANEL_EDJ_GROUP "panel"
+#define FAVORITE_EDJ_GROUP "favorite"
+#define ANIMATION_EDJ_GROUP "animation"
+#define DETAIL_EDJ_GROUP "detail"
+#define PANEL_BUTTON_EDJ_GROUP "panel.button"
+
+#define SWALLOW_MAIN_CONTROL "main.panel"
+#define SWALLOW_MAIN_ANIMATION "main.animation"
+#define SWALLOW_MAIN_PANEL_BUTTON "main.panel.button"
+
+#define SWALLOW_PANEL_CONTROL "panel.control"
+#define SWALLOW_PANEL_PROGRESS_BAR "panel.progress"
+
+#define SWALLOW_DETAIL_LIST "detail.list"
+#define PART_BUTTON_ICON "icon"
+
+#define MAIN_SPEED_TEXT "main.speedbox.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_SOUNDPATH_BUTTON "control.soundpath.button"
+#define SIGNAL_CONTROL_PART_FF_BUTTON "control.normal.ff.button"
+#define SIGNAL_CONTROL_PART_REW_BUTTON "control.normal.rew.button"
+
+#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH "hidden.button.panel.soundpath"
+
+#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_MODE_NORMAL "signal.control.mode.normal"
+#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_SOUNDPATH_BUTTON_DOWN "signal.control.soundpath.button.down"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UP "signal.control.soundpath.button.up"
+#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_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_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_VOL_BUTTON_MUTE "signal.control.volume.button.mute"
+#define SIGNAL_CONTROL_VOL_BUTTON_UNMUTE "signal.control.volume.button.unmute"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_ACTIVE "signal.control.soundpath.button.active"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UNACTIVE "signal.control.soundpath.button.unactive"
+
+
+#define SIGNAL_MW_PIXMAP_SHOW "signal.mw.image.show"
+#define SIGNAL_MW_PIXMAP_HIDE "signal.mw.image.hide"
+
+#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_PANEL_PORTRATE_MODE "signal.panel.portrate.mode"
+#define SIGNAL_PANEL_LANDSCAPE_MODE "signal.panel.landscape.mode"
+
+#define SIGNAL_PROGRESS_PORTRATE_MODE "signal.progress.portrate.mode"
+#define SIGNAL_PROGRESS_LANDSCAPE_MODE "signal.progress.landscape.mode"
+
+#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"
+
+// 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 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_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 XML_ITEM_NUM 6
+#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 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
+
+#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..04ac408
--- /dev/null
+++ b/include/mp-video-view-mgr.h
@@ -0,0 +1,44 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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, void *pUserData);
+void MpVideoViewCtrlInitAfterBeginOfStream(void*);
+void MpVideoViewCtrlPause(void* pUserData);
+void MpVideoViewCtrlResume(void* pUserData);
+void MpVideoViewShowLayout(void* pUserData);
+void MpVideoViewHideLayout(void* pUserData);
+void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void* pUserData);
+void MpVideoViewHideSoundpath(void* pUserData);
+void MpVideoViewCtrlChangeTitle(void *pUserData);
+bool MpVideoViewCtrlIsTopView(void *pUserData);
+void MpVideoViewCtrlShowNocontentImage(void* pUserData);
+void MpVideoViewCtrlHideNocontentImage(void* pUserData);
+void MpVideoViewCtrlResetProgressBar(void *pUserData);
+void MpVideoViewCtrlUpdateProgressbar(void *pUserData);
+bool MpVideoViewCtrlIsPauseByUser(void);
+#endif //_VIDEO_VIEW_MGR_ \ No newline at end of file
diff --git a/include/mp-xml-parser.h b/include/mp-xml-parser.h
new file mode 100755
index 0000000..3545022
--- /dev/null
+++ b/include/mp-xml-parser.h
@@ -0,0 +1,52 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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_XML_PARSER_H_
+#define _MP_XML_PARSER_H_
+
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <mp-util.h>
+
+
+typedef struct
+{
+ char szURL [STR_LEN_MAX];
+ int id;
+ int streaming_type;
+}MpXMLItemInfo;
+
+
+void mp_xml_init();
+void mp_xml_destroy();
+
+unsigned int mp_read_xml_file(const char *file_name, char **data);
+
+
+
+
+// [in]content : xml data
+// [in]length : length of content
+// [out]streamer_url : url of content
+bool mp_get_url_from_xml(const char *content, int length, char **streamer_url, int mode);
+char *mp_get_title_from_xml(const char *file_name);
+int mp_get_xmlitem(const char *content, int length, MpXMLItemInfo *item,int *nHttpCount, int *nRtspCount);
+
+#endif
diff --git a/include/video-player.h b/include/video-player.h
new file mode 100644
index 0000000..30bce4c
--- /dev/null
+++ b/include/video-player.h
@@ -0,0 +1,104 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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"
+
+
+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 (*VideoAppCtrlSetMute) (VideoAppData* pAppData);
+ void (*VideoAppCtrlRotateScreen) (VideoAppData *pAppData, int nRotateState);
+ void (*VideoAppCtrlGetPosition) (VideoAppData* pAppData);
+ void (*VideoAppCtrlSetPosition) (VideoAppData* pAppData);
+ void (*VideoAppCtrlHideLayout) (VideoAppData* pAppData);
+ void (*VideoAppCtrlShowLayout) (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 (*VideoAppCtrlPlayPreMedia) (VideoAppData* pAppData);
+ void (*VideoAppCtrlPlayNextMedia) (VideoAppData* pAppData);
+ void (*VideoAppCtrlGetBufferingPosition)(VideoAppData* pAppData);
+}VideoAppCtrlFunc;
+
+
+struct _VideoAppData
+{
+ Evas_Object* pMainWindow;
+
+ int nDuration;
+ int nSetPosition;
+ int nCurPosition;
+ int nSeekPosition;
+ int nSubtitleDuration;
+ int nBufferingPosition;
+
+ int nVideoWidthResolution;
+ int nVideoHeightResolution;
+
+ char szVideoTitle[STR_LEN_MAX];
+
+ char szMediaUri[STR_LEN_MAX];
+ char szPreMediaUri[STR_LEN_MAX];
+ char szNextMediaUri[STR_LEN_MAX];
+
+ int nPlayingSpeed;
+ bool bStartSeek;
+ bool bSeekComplete;
+
+ char szProxyAddress[STR_LEN_MAX];
+ char szUserAgent[STR_LEN_MAX];
+ char szCookie[STR_LEN_MAX];
+
+ MpPlayerState nPrePlayerState;
+ MpPlayerState nCurPlayerState;
+ VideoAppCtrlFunc VideoAppCtrlCallbackFunc;
+ MpPlayerState nSeekPlayerState;
+};
+
+#endif //__VIDEO_PLAYER__
diff --git a/org.tizen.video-player.xml b/org.tizen.video-player.xml
new file mode 100755
index 0000000..7952607
--- /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="/opt/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 100644
index 0000000..f18bcb2
--- /dev/null
+++ b/packaging/org.tizen.video-player.spec
@@ -0,0 +1,91 @@
+Name: org.tizen.video-player
+Summary: Video & streaming player
+Version: 0.5.124
+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(libxml-2.0)
+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(capi-system-haptic)
+BuildRequires: pkgconfig(ecore-evas)
+BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(xext)
+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=/opt/apps/org.tizen.video-player -DARCH=%{ARCH}
+make %{?jobs:-j%jobs}
+
+
+%install
+rm -rf %{buildroot}
+%make_install
+execstack -c %{buildroot}/opt/apps/org.tizen.video-player/bin/video-player
+
+%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
+
+chown -R 5000:5000 /opt/apps/org.tizen.video-player/data
+
+%files -n org.tizen.video-player
+%dir /opt/apps/org.tizen.video-player/data
+/opt/apps/org.tizen.video-player/bin/*
+/opt/apps/org.tizen.video-player/res/locale/*
+/opt/share/icons/default/small/*
+/opt/apps/org.tizen.video-player/res/edje/*
+/opt/apps/org.tizen.video-player/res/images/*
+/opt/share/packages/org.tizen.video-player.xml
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..f0ee9a4
--- /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_bold";
+ 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..49590e2
--- /dev/null
+++ b/res/edc/control.edc
@@ -0,0 +1,1065 @@
+
+#define BUTTON_PRESS_COLOR 56 149 205 255
+#define CONTROL_ICON_SIZE 136 144
+#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_".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
+
+
+#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.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: "gallery_video_control_rew_2.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_rew_3.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_rew_4.png"; }
+ }
+ description {
+ state: "step_4" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_rew_5.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: "gallery_video_control_ff_2.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_ff_3.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_ff_4.png"; }
+ }
+ description {
+ state: "step_4" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_ff_5.png"; }
+ }
+ description {
+ state: "portrate" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+
+ }
+ // <-- 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: 162 78;
+ 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: "gallery_video_rewind_1x.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_rewind_1x.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: "gallery_video_rewind_2x.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_rewind_3x.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_rewind_4x.png"; }
+ }
+ }
+
+ part {
+ name: "control.trim.ff.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 162 78;
+ 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: "gallery_video_fastforward_1x.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_fastforward_1x.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: "gallery_video_fastforward_2x.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_fastforward_3x.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_fastforward_4x.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.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);
+ }
+ }
+ // <-- play status part
+
+ // -->common control prog
+ CONTROL_BUTTON_PROG("control.play.button");
+ CONTROL_BUTTON_PROG("control.back.button");
+ CONTROL_BUTTON_PROG("control.volume.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/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..aabe709
--- /dev/null
+++ b/res/edc/image_res.edc
@@ -0,0 +1,114 @@
+
+images {
+ image: "gallery_video_player_bg.png" COMP;
+ image: "gallery_video_control_pause.png" COMP;
+ image: "gallery_video_control_play.png" COMP;
+ image: "gallery_video_control_rew.png" COMP;
+ image: "gallery_video_control_rew_2.png" COMP;
+ image: "gallery_video_control_rew_3.png" COMP;
+ image: "gallery_video_control_rew_4.png" COMP;
+ image: "gallery_video_control_rew_5.png" COMP;
+ image: "gallery_video_control_ff.png" COMP;
+ image: "gallery_video_control_ff_2.png" COMP;
+ image: "gallery_video_control_ff_3.png" COMP;
+ image: "gallery_video_control_ff_4.png" COMP;
+ image: "gallery_video_control_ff_5.png" COMP;
+ image: "gallery_video_control_frame_back.png" COMP;
+ image: "gallery_video_control_frame_forword.png" COMP;
+ image: "gallery_video_fastforward_1x.png" COMP;
+ image: "gallery_video_fastforward_2x.png" COMP;
+ image: "gallery_video_fastforward_3x.png" COMP;
+ image: "gallery_video_fastforward_4x.png" COMP;
+ image: "gallery_video_rewind_1x.png" COMP;
+ image: "gallery_video_rewind_2x.png" COMP;
+ image: "gallery_video_rewind_3x.png" COMP;
+ image: "gallery_video_rewind_4x.png" COMP;
+ image: "T01_Trim_handle_beginning.png" COMP;
+ image: "T01_Trim_handle_ending.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: "navibar_item_separator_shadow.png" COMP;
+ image: "T01_control_top_arrow.png" COMP;
+ image: "T01_control_top_bg.png" COMP;
+ image: "T01_toolbar_bg.png" COMP;
+ image: "T01_toolbar_press.png" COMP;
+ image: "00_winset_control_top_arrow.png" COMP;
+ image: "naviframe_optionheader.png" COMP;
+ image: "naviframe_optionheader_arrow.png" COMP;
+ image: "T01_Nocontents_multimedia.png" COMP;
+ image: "T01_control_icon_SA.png" COMP;
+ image: "T01_title_bg.png" COMP;
+ image: "T01_title_bg_h.png" COMP;
+
+ image: "T01_Image_Look.png" COMP;
+
+ image: "icon/T01-2_icon_function_bg.png" COMP;
+
+ image: "panel/T01-2_icon_controller_repeat.png" COMP;
+ image: "panel/T01-2_icon_controller_repeat_1.png" COMP;
+ image: "panel/T01-2_icon_controller_repeat_all.png" COMP;
+ image: "panel/T01-2_icon_controller_sa.png" COMP;
+ image: "panel/T01-2_controller_progress_bar.png" COMP;
+ image: "panel/T01-2_controller_progress_bg.png" COMP;
+ image: "panel/T01-2_btn_toolbar_volum.png" COMP;
+ image: "panel/T01-2_btn_toolbar_volum_press.png" COMP;
+ image: "panel/T01-2_btn_toolbar_back.png" COMP;
+ image: "panel/T01-2_btn_toolbar_back_press.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;
+
+ // 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/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;
+}
+
diff --git a/res/edc/main.edc b/res/edc/main.edc
new file mode 100755
index 0000000..792d5b4
--- /dev/null
+++ b/res/edc/main.edc
@@ -0,0 +1,509 @@
+#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: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 78;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.2 0.0; to_y: "main.option.button.bg"; }
+ rel2 { relative: 0.8 0.0; to_y: "main.option.button.bg"; }
+ color: GRAY_RECT_COLOR;
+ }
+ 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;
+ min: 0 78;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.2 0.0; to_y: "main.option.button.bg"; }
+ rel2 { relative: 0.8 0.0; to_y: "main.option.button.bg"; }
+ text {
+ font: FONT_BOLD_TYPE;
+ text_class: "slp_bold";
+ size: 32;
+ text: "";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "main.option.start.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 3;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "main.option.button.bg";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 65;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ image { normal: "icon/T01-2_icon_function_bg.png"; }
+ color: 255 255 255 255;
+
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "portrate" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 64;
+ }
+ description {
+ state: "trim" 0.0;
+ inherit: "default" 0.0;
+ visible : 0;
+ }
+
+ }
+
+ part {
+ name: "main.option.button";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 62;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to_y: main.option.start.rect;}
+ rel2 { relative: 1.0 0.0; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "portrate" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 61;
+ }
+ 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: "landscape" 0.0;
+ inherit: "default" 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 214;
+ 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;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 204;
+ }
+ description {
+ state: "trim" 0.0;
+ inherit: "default" 0.0;
+ min: 0 228;
+ }
+ }
+
+ 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 171;
+ }
+ 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 167;
+ 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;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 167;
+ }
+ 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.txt";
+ }
+
+ program {
+ signal: "signal.main.speedbox.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "main.speedbox";
+ 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.option.button.bg.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "main.option.button.bg";
+ }
+
+ program {
+ signal: "signal.main.portrate.mode";
+ source: "*";
+ action: STATE_SET "portrate" 0.0;
+ target: "main.option.button.bg";
+ target: "main.option.button";
+ target: "main.panel.bg";
+ target: "main.panel.top";
+ target: "main.panel.button";
+ target: "main.panel";
+ }
+
+ program {
+ signal: "signal.main.landscape.mode";
+ source: "*";
+ action: STATE_SET "landscape" 0.0;
+ target: "main.option.button.bg";
+ 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.bg";
+ target: "main.option.button";
+ target: "main.panel.bg";
+ target: "main.panel.top";
+ target: "main.panel.button";
+ target: "main.panel.line";
+ target: "main.panel";
+ }
+ } /* 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 100755
index 0000000..464f0e6
--- /dev/null
+++ b/res/edc/option_button.edc
@@ -0,0 +1,231 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 "image_res.edc"
+#include "vp_font.edc"
+
+#define CONTROL_BUTTON_PRESS_PART(_name_ , _w_ , _h_ , _align_x_ , _align_y_ , _rel_x1_ , _rel_x2_ , _rel_y1_, _rel_y2_ , _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; \
+ visible: 0; \
+ align: _align_x_ _align_y_; \
+ rel1 { relative: _rel_x1_ _rel_y1_; } \
+ rel2 { relative: _rel_x2_ _rel_y2_; } \
+ image { normal: _img_def_; border: 4 4 0 0;} \
+ color: 255 255 255 255; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ visible: 1; \
+ min: _w_ _h_; \
+ fixed: 1 1; \
+ align: _align_x_ _align_y_; \
+ rel1 { relative: _rel_x1_ _rel_y1_; } \
+ rel2 { relative: _rel_x2_ _rel_y2_; } \
+ 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 */
+
+
+#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: "option";
+
+ script {
+ public val_screensize_check = 0; /* 0: reduce, 1: full */
+
+ public change_screensize() {
+ if(get_int(val_screensize_check) == 0) {
+ set_int(val_screensize_check, 1);
+ set_state(PART:"option.screensize", "reduce", 0.0);
+ run_program(PROGRAM:"send.screensize.expand");
+ } else {
+ set_int(val_screensize_check, 0);
+ set_state(PART:"option.screensize", "default", 0.0);
+ run_program(PROGRAM:"send.screensize.normal");
+ }
+ }
+
+ }
+
+ parts {
+ part {
+ name: "option.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: 255 255 255 0;
+ }
+ }
+
+ CONTROL_BUTTON_PRESS_PART("option.screensize.button.bg", 74 ,74, 0.0, 0.0, 0.05, 0.05, 0.114, 0.114, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+ part {
+ name: "option.screensize";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 74 74;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.05 0.114; }
+ rel2 { relative: 0.05 0.114; }
+ image { normal: "T01_control_icon_fullscreen.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "reduce" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image { normal: "T01_control_icon_reduce.png"; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ CONTROL_BUTTON_PRESS_PART("option.detail.button.bg", 74 ,74, 1.0, 0.0, 0.95, 0.95, 0.114, 0.114, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+ part {
+ name: "option.detail";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 74 74;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.95 0.114; }
+ rel2 { relative: 0.95 0.114; }
+ image { normal: "T01_control_icon_detail.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ programs {
+ CONTROL_BUTTON_PROG("option.screensize");
+ CONTROL_BUTTON_PROG("option.detail");
+
+ program {
+ signal: "signal.option.screensize.down";
+ source: "*";
+ action: STATE_SET "pressed" 0.0;
+ target: "option.screensize.button.bg";
+ }
+
+ program {
+ signal: "signal.option.screensize.up";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "option.screensize.button.bg";
+ after: "option.screensize.change";
+ }
+
+ program {
+ name: "option.screensize.change";
+ script: { change_screensize(); }
+ }
+
+ program {
+ name: "send.screensize.normal";
+ action: SIGNAL_EMIT "signal.option.screensize.normal" "option.screensize";
+ }
+
+ program {
+ name: "send.screensize.expand";
+ action: SIGNAL_EMIT "signal.option.screensize.expand" "option.screensize";
+ }
+
+ program {
+ signal: "signal.option.detail.down";
+ source: "*";
+ action: STATE_SET "pressed" 0.0;
+ target: "option.detail.button.bg";
+ }
+
+ program {
+ signal: "signal.option.detail.up";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "option.detail.button.bg";
+ }
+
+ program {
+ signal: "signal.option.mode.streaming";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "option.detail";
+ target: "option.detail.button.bg";
+ }
+ } //programs
+ } //parts
+ } //group
+} //collections
diff --git a/res/edc/panel.edc b/res/edc/panel.edc
new file mode 100755
index 0000000..4e289c6
--- /dev/null
+++ b/res/edc/panel.edc
@@ -0,0 +1,118 @@
+#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 28;
+ 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 28;
+ 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";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 114;
+ 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;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 114;
+ rel1 { relative: 0.0 1.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ description {
+ state: "trim" 0.0;
+ inherit: "default" 0.0;
+ min: 0 114;
+ rel1 { relative: 0.0 1.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ } // parts
+
+ programs {
+ program {
+ signal: "signal.panel.portrate.mode";
+ source: "*";
+ action: STATE_SET "portrate" 0.0;
+ target: "panel.progress";
+ target: "panel.control";
+ }
+
+ program {
+ signal: "signal.panel.landscape.mode";
+ source: "*";
+ action: STATE_SET "landscape" 0.0;
+ target: "panel.progress";
+ target: "panel.control";
+ }
+
+ program {
+ signal: "signal.panel.trim.mode";
+ source: "*";
+ action: STATE_SET "trim" 0.0;
+ target: "panel.progress";
+ 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..4c5105d
--- /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_medium";
+ 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_medium";
+ 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_medium";
+ 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_medium";
+ 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_medium";
+ 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..6b43ccb
--- /dev/null
+++ b/res/edc/progress.edc
@@ -0,0 +1,445 @@
+#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.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: FONT_START_COLOR;
+ text {
+ font: FONT_MEDIUM_TYPE;
+ text_class: "slp_medium";
+ 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.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: FONT_END_COLOR;
+ text {
+ font: FONT_MEDIUM_TYPE;
+ text_class: "slp_medium";
+ 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_roman";
+ size: 40;
+ 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.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/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..5b19912
--- /dev/null
+++ b/res/edc/subtitle.edc
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 "vp_font.edc"
+#define SUBTITLE_W 400
+#define SUBTITLE_H 100
+
+
+
+collections {
+ group {
+ name: "subtitle";
+
+ parts {
+ part {
+ name: "subtitle.txt";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: SUBTITLE_W SUBTITLE_H;
+ color: FONT_COLOR;
+ color3: 0 0 0 255;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.5; offset: 0 0; }
+ rel2 { relative: 1.0 0.7; offset: 0 0; }
+ text {
+ text_class: "list_line1";
+ font: FONT_NANE;
+ size: TITLE_FONT_SIZE;
+ text: "";
+ align: 0.5 0.5;
+ }
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
diff --git a/res/edc/vp-button-white.edc b/res/edc/vp-button-white.edc
new file mode 100755
index 0000000..371a7ca
--- /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_medium";
+ 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..4eabcfb
--- /dev/null
+++ b/res/edc/vp-button.edc
@@ -0,0 +1,1086 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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.
+ */
+
+
+#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-check.edc b/res/edc/vp-check.edc
new file mode 100755
index 0000000..a0ab5f5
--- /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=HelveticaNeue:style=Roman font_size=32 color=#ffffff wrap=char";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font=HelveticaNeue:style=Bold";
+ tag: "b" "+ font=HelveticaNeue: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..999bd16
--- /dev/null
+++ b/res/edc/vp-ctxpopup.edc
@@ -0,0 +1,1762 @@
+///////////////////////////////////////////////////////////////////////////////////////
+//
+// 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 0 0 0 165
+#define CTXPOPUP_BG_PRESS_COLOR_INC 0 140 210 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 44
+#define CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC 44
+#define CTXPOPUP_ITEM_HEIGHT_INC 110
+#define CTXPOPUP_ITEM_ICON_INC 160 110
+#define CTXPOPUP_ICON_WIDTH_INC 80
+#define CTXPOPUP_ICON_HEIGHT_INC 80
+#define CTXPOPUP_ARROW_SIZE_INC 48 48
+#define CTXPOPUP_CONTENT_WIDTH_MAX_INC 630
+#define CTXPOPUP_ITEM_PADDING_INC 25
+#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;
+ 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;
+ }
+ 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/00_popup_tail_top.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=Roman";
+ 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..7579320
--- /dev/null
+++ b/res/edc/vp-custom-winset-style.edc
@@ -0,0 +1,11 @@
+#include "image_res.edc"
+
+collections {
+ #include "vp-button-white.edc"
+ #include "vp-controlbar.edc"
+ #include "vp-naviframe_white.edc"
+ #include "vp-layout.edc"
+ #include "vp-check.edc"
+ #include "vp-progressbar-list.edc"
+ #include "vp-ctxpopup.edc"
+}
diff --git a/res/edc/vp-layout.edc b/res/edc/vp-layout.edc
new file mode 100755
index 0000000..b4752b8
--- /dev/null
+++ b/res/edc/vp-layout.edc
@@ -0,0 +1,178 @@
+ /*************************************************/
+ /* 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: "indicator";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ max: 999999 50;
+ fixed: 0 1;
+ align: 0.5 0;
+ color: 0 0 0 255;
+ }
+ }
+
+ 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: "indicator";
+ rel1.relative: 0.0 1.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;
+ }
+ }
+ } /* parts */
+} /* 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";
+ 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;
+ }
+ }
+ } /* parts */
+} /* 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..a234858
--- /dev/null
+++ b/res/edc/vp-naviframe_white.edc
@@ -0,0 +1,2872 @@
+#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 */
+
+
+
+ group { name:"elm/naviframe/item/video/basic2/default";
+ alias:"elm/naviframe/item/video/2line/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;
+ 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_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: "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: 1;
+ }
+ }
+ 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" "";
+ }
+ }
+ }
+ group { name: "elm/naviframe/item/video/segment/default";
+ script {
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ images {
+ image: "white/common/00_winset_control_toolbar_bg.png" COMP;
+ }
+ 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;
+ 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"; }
+ }
+ 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: "left_padding";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 1.0; }
+ fixed: 1 0;
+ min: NAVIFRAME_PADDING_INC;
+ visible: 0;
+ }
+ }
+ part { name: "right_padding";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ fixed: 1 0;
+ min: NAVIFRAME_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";
+ size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ align: 0.5 0.5;
+ text_class: "slp_medium";
+ }
+ 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 0;
+ rel1.to: "left_padding";
+ rel1.relative: 1.0 0.0;
+ rel2.to: "right_padding";
+ rel2.relative: 0.0 1.0;
+ }
+ }
+ 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: "segment";
+ 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_x: "left_padding";
+ rel1.to_y: "elm.text.title";
+ rel1.relative: 1 1;
+ rel2.to_x: "right_padding";
+ rel2.to_y: "elm.text.title";
+ rel2.relative: 0 1;
+ }
+ }
+ 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";
+ 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/video/tabbar/default";
+ script {
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ images {
+ image: "white/common/00_winset_control_toolbar_bg.png" COMP;
+ }
+ 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";
+ 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: "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/video/basic/instant/default";
+ inherit: "elm/naviframe/item/video/basic/default";
+ alias:"elm/naviframe/item/video/1line/instant/default";
+ alias:"elm/naviframe/item/video/instant/default";
+ script {
+ public oh_show = 0; //optionheader show/hide
+ public oh_close = 0; //optionheader close/open
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ 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";
+ }
+ }
+ }
+ group { name:"elm/naviframe/item/video/basic2/instant/default";
+ inherit: "elm/naviframe/item/video/basic2/default";
+ alias:"elm/naviframe/item/video/2line/instant/default";
+ alias:"elm/naviframe/item/video/instant2/default";
+ script {
+ public oh_show = 0; //optionheader show/hide
+ public oh_close = 0; //optionheader close/open
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ 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";
+ }
+ }
+ }
+ group { name: "elm/naviframe/item/video/segment/instant/default";
+ inherit: "elm/naviframe/item/video/segment/default";
+ script {
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ 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";
+ }
+ }
+ }
+
+ group { name: "elm/naviframe/item/video/tabbar/instant/default";
+ inherit: "elm/naviframe/item/video/tabbar/default";
+ script {
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ 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: "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);
+ }
+ }
+ }
+ }
+ group { name:"elm/naviframe/item/video/empty/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_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;
+ 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"; }
+ }
+ 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: "title";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ 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"; }
+ }
+ }
+ 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: "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_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_int(oh_show, 0);
+ }
+ }
+ program { name: "optionheader_open";
+ signal: "elm,state,optionheader,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_bg";
+ 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";
+ 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";
+ 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";
+ 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" "";
+ }
+ }
+ }
diff --git a/res/edc/vp-progressbar-list.edc b/res/edc/vp-progressbar-list.edc
new file mode 100755
index 0000000..e05f745
--- /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 16
+
+#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_medium";
+ 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_medium";
+ 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_medium";
+ 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-toolbar.edc b/res/edc/vp-toolbar.edc
new file mode 100755
index 0000000..06af23a
--- /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_medium";
+ 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_font.edc b/res/edc/vp_font.edc
new file mode 100755
index 0000000..2982e3e
--- /dev/null
+++ b/res/edc/vp_font.edc
@@ -0,0 +1,16 @@
+#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 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_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/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/_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/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/org.tizen.video-player.png b/res/images/org.tizen.video-player.png
new file mode 100755
index 0000000..3b009fc
--- /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..ff4851e
--- /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_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/toolbar/T01-2_btn_toolbar_back.png b/res/images/toolbar/T01-2_btn_toolbar_back.png
new file mode 100755
index 0000000..ff4851e
--- /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_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/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/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..e29bc4c
--- /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..0c19cc0
--- /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/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..ddc299e
--- /dev/null
+++ b/src/mp-drm-ctrl.c
@@ -0,0 +1,413 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 100644
index 0000000..9aebdfb
--- /dev/null
+++ b/src/mp-external-ug.c
@@ -0,0 +1,569 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 Evas_Object *pUGPopupHandle = 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 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;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ Evas_Object *pLayoutBase = NULL;
+
+ pLayoutBase = ug_get_layout(pUiGadget);
+ if (!pLayoutBase) {
+ return;
+ }
+
+ switch (nMode) {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(pLayoutBase, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(pAppData->pMainWindow, 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("");
+
+
+ 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;
+ }
+
+ MpExternalUGDestroyPopupList();
+}
+
+static void MpExternalUgResFn(service_h pRequest, service_h pReply, service_result_e nResult, void *pUserData)
+{
+ if(!pUserData)
+{
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+}
+
+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;
+ }
+
+// VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ char *pLabel = (char *)elm_object_item_text_get((Elm_Object_Item *) pEventInfo);
+
+ if(pLabel)
+ {
+ MpExternalUGDestroyPopupList();
+
+ VideoLogInfo("Select Controlbar item of popup : %s", pLabel);
+
+ if(!strcmp(pLabel, MP_SHARE_MESSAGE))
+ {
+ MpExternalUgLoad(MP_EXTERNAL_UG_MESSAGE, pUserData);
+ }
+ else if(!strcmp(pLabel, MP_SHARE_EMAIL))
+ {
+ MpExternalUgLoad(MP_EXTERNAL_UG_EMAIL, pUserData);
+ }
+ else if(!strcmp(pLabel, MP_SHARE_BLUETOOTH))
+ {
+ MpExternalUgLoad(MP_EXTERNAL_UG_BLUETOOTH, pUserData);
+ }
+ else if(!strcmp(pLabel, MP_SHARE_FTM))
+ {
+ MpExternalUgLoad(MP_EXTERNAL_UG_FTM, pUserData);
+ }
+ else if(!strcmp(pLabel, MP_SHARE_FACEBOOK))
+ {
+ MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_FACEBOOK, pUserData);
+ }
+ else if(!strcmp(pLabel, MP_SHARE_YOUTUBE))
+ {
+ MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_YOUTUBE, pUserData);
+ }
+ }
+}
+
+/*
+ * 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;
+
+
+ MpExternalUGDestroyPopupList();
+
+ MpUtilSetAlphaOfMainWindow(FALSE);
+
+ pUGPopupHandle = elm_ctxpopup_add(pParent);
+ elm_ctxpopup_direction_priority_set(pUGPopupHandle, ELM_CTXPOPUP_DIRECTION_DOWN,
+ ELM_CTXPOPUP_DIRECTION_RIGHT,
+ ELM_CTXPOPUP_DIRECTION_LEFT,
+ ELM_CTXPOPUP_DIRECTION_UP);
+
+ elm_object_style_set(pUGPopupHandle, "video/default");
+
+ evas_object_smart_callback_add(pUGPopupHandle, "dismissed", MpExternalUGPopupCb, (void *)pAppData);
+
+ elm_ctxpopup_item_append(pUGPopupHandle, MP_SHARE_MESSAGE, NULL, MpExternalUGSelectListItem, (void *)pAppData);
+ elm_ctxpopup_item_append(pUGPopupHandle, MP_SHARE_EMAIL, NULL, MpExternalUGSelectListItem, (void *)pAppData);
+ elm_ctxpopup_item_append(pUGPopupHandle, MP_SHARE_BLUETOOTH, NULL, MpExternalUGSelectListItem, (void *)pAppData);
+ elm_ctxpopup_item_append(pUGPopupHandle, MP_SHARE_FTM, NULL, MpExternalUGSelectListItem, (void *)pAppData);
+ elm_ctxpopup_item_append(pUGPopupHandle, MP_SHARE_YOUTUBE, NULL, MpExternalUGSelectListItem, (void *)pAppData);
+ elm_ctxpopup_item_append(pUGPopupHandle, MP_SHARE_FACEBOOK, NULL, MpExternalUGSelectListItem, (void *)pAppData);
+
+
+ int nPosX = 0;
+ int nPosY = 0;
+ int nW = 0;
+ int nH = 0;
+
+ if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL ||
+ MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE)
+ {
+ ecore_x_window_size_get(ecore_x_window_root_first_get(),&nW, &nH);
+ }
+ else {
+ ecore_x_window_size_get(ecore_x_window_root_first_get(),&nH, &nW);
+ }
+
+ int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+ if(nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY) {
+ nPosX = ((nW / 5)/2) * elm_config_scale_get();
+ }
+ else if(nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE) {
+ nPosX = ((nW / 4)/2) * elm_config_scale_get();
+ }
+ else if(nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL) {
+ nPosX = ((nW / 4)/2) * elm_config_scale_get();
+ }
+ else if(nTmpPlayerType == MP_VIDEO_PLAYER_MMS) {
+ nPosX = ((nW / 4)/2) * elm_config_scale_get();
+ }
+
+ nPosY = elm_config_scale_get() * 200;
+
+ evas_object_move(pUGPopupHandle, nPosX, nPosY);
+
+ 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..678543e
--- /dev/null
+++ b/src/mp-util-media-service.c
@@ -0,0 +1,2417 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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"
+
+
+typedef struct
+{
+ media_folder_h pFolderHandle;
+ char *szFolderUrl;
+}st_FolderItem;
+
+
+static Eina_List *VideoFolderList = NULL;
+static Eina_List *VideoItemList = NULL;
+static int nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE;
+
+
+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(szItemFilePath == NULL)
+ {
+ VideoLogInfo("Fail to get file path of media item.");
+ return TRUE;
+ }
+
+ strncpy(szItemFilePath, szTmpItemFilePath, STR_LEN_MAX - 1);
+ free(szTmpItemFilePath);
+
+ VideoLogInfo("szItemFilePath : %s", szItemFilePath);
+
+ 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;
+ }
+
+ 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);
+ }
+
+ 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 || strlen(szFolderPath) <= 0)
+ {
+ 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};
+
+ 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};
+
+ 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};
+
+ 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;
+
+ 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.");
+ media_filter_destroy(m_FilterHandle);
+ 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.");
+ media_filter_destroy(m_FilterHandle);
+ 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().");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if(!pTagHandle)
+ {
+ VideoLogInfo("Fail to get pTagHandle.");
+ return FALSE;
+ }
+
+ if(media_tag_get_tag_id(pTagHandle, &nTagID) != MEDIA_CONTENT_ERROR_NONE)
+ {
+ VideoLogInfo("Fail to get tag ID.");
+ 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.");
+ media_filter_destroy(m_FilterHandle);
+ 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.");
+ media_filter_destroy(m_FilterHandle);
+ 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().");
+ 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 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;
+
+ 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("");
+
+ int nSortType = MP_MEDIA_SORT_BY_NAME_ASC;
+ 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;
+
+ 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_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;
+ }
+}
+
+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);
+
+ 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);
+ }
+ 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);
+ }
+ 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;
+ }
+
+ 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 >= MpUtilMediaSvcGetVideoListSize())
+ {
+ 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 >= MpUtilMediaSvcGetVideoListSize())
+ {
+ 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 >= MpUtilMediaSvcGetVideoListSize())
+ {
+ 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 >= MpUtilMediaSvcGetVideoListSize())
+ {
+ 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 MpUtilMediaSvcGetVideoListSize(void)
+{
+ if(!VideoItemList)
+ {
+ VideoLogInfo("Not exist video item list handle.");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ return (int)eina_list_count(VideoItemList);
+}
+
+void* MpUtilMediaSvcGetVideoitem(const int nVideoItemIndex)
+{
+ if(!VideoItemList)
+ {
+ VideoLogInfo("Not exist video item list handle.");
+ return NULL;
+ }
+
+ if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSize())
+ {
+ 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", MpUtilMediaSvcGetVideoListSize());
+
+ 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_DESC, 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);
+ }
+ 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);
+ }
+
+ 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 100644
index 0000000..c556081
--- /dev/null
+++ b/src/mp-util.c
@@ -0,0 +1,1375 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 <sound_manager.h>
+
+#include <aul.h>
+#include <glib.h>
+#include <errno.h>
+#include <vconf.h>
+#include <utilX.h>
+#include <pmapi.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-xml-parser.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 "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://"
+
+static bool bAlphaSet = TRUE;
+
+static Ecore_X_Window pMainXwindow = 0;
+static Ecore_X_Display *pX11DisplayHandle = NULL;
+static Evas_Object *pMainRect = NULL;
+
+static Evas_Object *pPopUpHandle = NULL;
+static Evas_Object *pPopupWindow = NULL;
+
+MpXMLItemInfo pXmlItem[XML_ITEM_NUM];
+int nXmlItemCount = 0;
+int nHttpQuality = 0;
+int nHttpCount = 0;
+int nRtspCount = 0;
+bool bXmlLoad = FALSE;
+
+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) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ return;
+ }
+ } else {
+ VideoLogInfo("Fail to get vconf");
+ }
+}
+
+static void MpUtilMMCStatusChangeCb(keynode_t * pKeyNode, void *pUserData)
+{
+ VideoLogInfo("");
+
+ char szFilename[9] = { 0 };
+
+ if (!pUserData || !pKeyNode) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ char *keyname = vconf_keynode_get_name(pKeyNode);
+ if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0) {
+ int nMMCState = vconf_keynode_get_int(pKeyNode);
+ if (nMMCState == VCONFKEY_FILEMANAGER_DB_UPDATED) {
+ strncpy(szFilename, pAppData->szMediaUri, sizeof(szFilename) - 1);
+ VideoLogInfo("FILE NAME[%s]", szFilename);
+ if (!strcmp(MP_UTIL_MMC_PATH, szFilename)) {
+ /* MpUtilNotifyPopUp(pAppData, "MMC card is ejected", NULL); */
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ }
+ }
+ } else {
+ VideoLogInfo("Fail to get vconf");
+ }
+}
+
+
+/*
+ * External function
+ */
+
+void MpUtilExitVideoPlayer(void)
+{
+ VideoLogInfo("");
+
+ elm_exit();
+}
+
+static void MpUtilDestroyMainWindow(void *pUserData, Evas_Object *pEvasObject,
+ void *pEvent)
+{
+ VideoLogInfo("");
+
+ MpUtilExitVideoPlayer();
+}
+
+void MpUtilResetForRelaunching(void)
+{
+ VideoLogInfo("");
+
+ pX11DisplayHandle = NULL;
+ pPopUpHandle = NULL;
+ pPopupWindow = NULL;
+
+ memset(pXmlItem, 0, sizeof(MpXMLItemInfo) * XML_ITEM_NUM);
+
+ nXmlItemCount = 0;
+ nHttpQuality = 0;
+ nHttpCount = 0;
+ nRtspCount = 0;
+ bXmlLoad = FALSE;
+}
+
+void MpUtilSetAlphaOfMainWindow(bool bSetAlpha)
+{
+ VideoLogInfo("");
+
+ if(bSetAlpha)
+ {
+ evas_object_hide(pMainRect);
+ }
+ else
+ {
+ evas_object_show(pMainRect);
+ }
+ 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);
+ }
+
+ pMainXwindow = elm_win_xwindow_get(pEvasObject);
+#if 0
+ unsigned int output = 1;
+ Ecore_X_Display *display = ecore_x_display_get ();
+ Ecore_X_Atom atom = ecore_x_atom_get ("XV_OUTPUT");
+ utilx_set_window_cardinal_property (display, pMainXwindow, atom, &output);
+#endif
+ Evas *pMainWindowEvas = evas_object_evas_get(pEvasObject);
+
+ pMainRect = evas_object_rectangle_add(pMainWindowEvas);
+ int nW, nH;
+ if(nCurRotateValue == VIDEO_ROTATE_PORTRAIT_NORMAL ||
+ nCurRotateValue == VIDEO_ROTATE_PORTRAIT_REVERSE)
+ {
+ ecore_x_window_size_get(ecore_x_window_root_first_get(),
+ &nW, &nH);
+ }
+ else {
+ ecore_x_window_size_get(ecore_x_window_root_first_get(),
+ &nW, &nH);
+ }
+
+ evas_object_move(pMainRect, 0, 0);
+ evas_object_resize(pMainRect, nW, nH);
+ evas_object_color_set(pMainRect, 0, 0, 0, 255);
+ evas_object_hide(pMainRect);
+
+ 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 MpUtilCheckPlayerType(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;
+}
+
+
+void MpUtilLanguageInit(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ if (!pAppData) {
+ VideoLogInfo("[ERR] No exist appdata.");
+ return;
+ }
+
+ char *szPath = NULL;
+
+ szPath = vconf_get_str(VCONFKEY_LANGSET);
+ if (!szPath) {
+ VideoLogInfo("Language setting has no proper value (nil)");
+ return;
+ }
+
+ VideoLogInfo("Setting language is %s", szPath);
+
+ setenv("LANG", szPath, 1);
+ setenv("LC_ALL", szPath, 1);
+ setenv("LANGUAGE", szPath, 1);
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+}
+
+int MpUtilCheckDlnaSortType(void *pSvcHandle, char *szBundleKey)
+{
+ VideoLogInfo("");
+
+ if(!pSvcHandle)
+ {
+ VideoLogInfo("No exist service data.");
+ return (int)MP_MEDIA_SORT_BY_NONE;
+ }
+
+// char szSortType[SVC_LEN_MAX] = {0};
+ char *szSortType = (char*)malloc(sizeof(char) * SVC_LEN_MAX);
+ if(service_get_extra_data(pSvcHandle, szBundleKey, &szSortType) != SERVICE_ERROR_NONE)
+ {
+ VideoLogInfo("No exist mime type.");
+ return FALSE;
+ }
+
+ int nTmpSortType = atoi(szSortType);
+
+ VideoLogInfo("nTmpSortType : %d", nTmpSortType);
+
+ free(szSortType);
+
+ return (int)nTmpSortType;
+}
+
+int MpUtilCheckDlnaMediaID(void *pSvcHandle, char *szBundleKey)
+{
+ VideoLogInfo("");
+
+ if(!pSvcHandle)
+ {
+ VideoLogInfo("No exist service data.");
+ return -1;
+ }
+
+// char szMediID[SVC_LEN_MAX] = {0};
+ char *szMediID = (char*)malloc(sizeof(char) * SVC_LEN_MAX);
+ if(service_get_extra_data(pSvcHandle, szBundleKey, &szMediID) != SERVICE_ERROR_NONE)
+ {
+ VideoLogInfo("No exist mime type.");
+ return FALSE;
+ }
+
+ int media_id = atoi(szMediID);
+
+ VideoLogInfo("media_id : %d", media_id);
+
+ free(szMediID);
+
+ return (int)media_id;
+}
+
+bool MpUtilIsXMLUrl(char *szMediaUri)
+{
+ VideoLogInfo("URI : %s", szMediaUri);
+
+ if (!g_str_has_suffix(szMediaUri, ".xml")) {
+ VideoLogInfo("No have xml uri.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void MpUtilInitXML()
+{
+ VideoLogInfo("");
+
+ mp_xml_init();
+}
+
+void MpUtilDestroyXML()
+{
+ VideoLogInfo("");
+
+ mp_xml_destroy();
+}
+
+char *MpUtilGetXMLQualityURL(void)
+{
+ VideoLogInfo("");
+
+ if (nHttpCount > 1 || nRtspCount > 1) {
+ nHttpQuality = (nHttpQuality + 1) % 2;
+ return strdup(pXmlItem[nHttpQuality].szURL);
+ }
+
+ return NULL;
+}
+
+bool MpUtilParsingXML(char *szMediaUri)
+{
+ VideoLogInfo("");
+ char *pXmlData = NULL;
+ char *szTmpUri = NULL;
+ int nInsertCount = 0;
+ unsigned int nFileSize = 0;
+
+ if (!szMediaUri) {
+ VideoLogInfo("[ERR] No have Media uri.");
+ return FALSE;
+ }
+ MpUtilInitXML();
+
+ szTmpUri = (char *)strdup(szMediaUri);
+
+ if (szTmpUri == NULL) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ if (!g_str_has_suffix(szTmpUri, ".xml")) {
+ VideoLogInfo("No have xml uri.");
+ /* prevent 2011/07/12 */
+ if (szTmpUri)
+ free(szTmpUri);
+ return TRUE;
+ }
+
+ memset(pXmlItem, 0, sizeof(MpXMLItemInfo) * XML_ITEM_NUM);
+
+ nFileSize = mp_read_xml_file(szTmpUri, &pXmlData);
+ if (nFileSize == 0 || pXmlData == NULL) {
+ VideoLogInfo("[ERR] Invalid XML File : %s", szTmpUri);
+ if (szTmpUri)
+ free(szTmpUri);
+
+ if (pXmlData)
+ free(pXmlData);
+
+ return FALSE;
+ }
+
+ nInsertCount = mp_get_xmlitem(pXmlData, nFileSize,
+ pXmlItem, &nHttpCount, &nRtspCount);
+ if (nInsertCount > 0) {
+ VideoLogInfo("Get xml item : %d", nInsertCount);
+ nXmlItemCount = nInsertCount;
+ }
+
+ if (nHttpCount > 1) {
+ nHttpQuality = 0;
+ memset((void *)szMediaUri, 0, sizeof(szMediaUri));
+ strncpy(szMediaUri, pXmlItem[nHttpQuality].szURL, STR_LEN_MAX - 1);
+ nXmlItemCount = nHttpCount;
+ } else if (nRtspCount > 1) {
+ nHttpQuality = 0;
+ memset((void *)szMediaUri, 0, sizeof(szMediaUri));
+ strncpy(szMediaUri, pXmlItem[nHttpQuality].szURL, STR_LEN_MAX - 1);
+ VideoLogInfo("URL : %s", szMediaUri);
+ nXmlItemCount = nRtspCount;
+ } else {
+ char *szParsedUrl = NULL;
+ bool bResult =
+ mp_get_url_from_xml(pXmlData, nFileSize, &szParsedUrl,
+ _WIFI_MODE_);
+
+ if (bResult == FALSE || szParsedUrl == NULL) {
+ VideoLogInfo("[ERR] XML parsing failed!");
+ free(szTmpUri);
+ //MpVideoAppCtrlExit(pAppData);
+ return FALSE;
+ }
+
+ memset((void *)szMediaUri, 0, STR_LEN_MAX);
+ strncpy(szMediaUri, szParsedUrl, STR_LEN_MAX - 1);
+
+ if (szParsedUrl) {
+ free(szParsedUrl);
+ }
+ }
+
+ //pAppData->nCurPlayerType = MP_STREAMING_PLAYER;
+ //strncpy(pAppData->szVideoTitle, mp_get_title_from_xml(szTmpUri), STR_LEN_MAX - 1);
+
+ bXmlLoad = TRUE;
+
+ if (pXmlData) {
+ free(pXmlData);
+ }
+
+ if (szTmpUri) {
+ free(szTmpUri);
+ }
+
+ return TRUE;
+}
+
+int MpUtilGetXMLItemCount(void)
+{
+ VideoLogInfo("");
+
+ if (nHttpCount > 0)
+ return nHttpCount;
+
+ if (nRtspCount > 0)
+ return nRtspCount;
+
+ return 0;
+
+}
+
+int MpUtilGetRotationStateFromAppcore(void)
+{
+ VideoLogInfo("");
+ int bLocked = -1;
+
+ if (vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &bLocked) != 0)
+ {
+ VideoLogInfo("Get vlalue fail");
+ return nCurRotateValue;
+ }
+
+ if(bLocked == false)
+ {
+ switch(app_get_device_orientation())
+ {
+ case APP_DEVICE_ORIENTATION_0:
+ VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL");
+ nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL;
+ break;
+
+ case APP_DEVICE_ORIENTATION_90:
+ VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE");
+ nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_REVERSE;
+ break;
+
+ case APP_DEVICE_ORIENTATION_180:
+ VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL");
+ nCurRotateValue = VIDEO_ROTATE_PORTRAIT_REVERSE;
+ break;
+
+ case APP_DEVICE_ORIENTATION_270:
+ VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE");
+ nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_NORMAL;
+ break;
+ }
+ }
+ return nCurRotateValue;
+}
+
+int MpUtilGetRotationState(void)
+{
+ VideoLogInfo("");
+
+ return nCurRotateValue;
+}
+
+void MpUtilSetRotationState(int nCurRotation)
+{
+ VideoLogInfo("");
+
+ nCurRotateValue = nCurRotation;
+
+ if (pPopupWindow) {
+ MpUtilRotateWindow(nCurRotation, pPopupWindow);
+ }
+}
+
+bool MpUtilGetTitleFromFilepath(char *szFilepath, char *szTitle, int nLengthTitle)
+{
+ VideoLogInfo("");
+
+ if (!szFilepath || !szTitle) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ char *szTitleName;
+ char *szExt;
+
+ memset(szTitle, 0, nLengthTitle);
+
+ szTitleName = strrchr(szFilepath, '/');
+
+ if (szTitleName)
+ szTitleName++;
+ else
+ szTitleName = szFilepath;
+
+ szExt = strrchr(szTitleName, '.');
+
+ if (szExt) {
+ int nTmpStringSize = szExt - szTitleName;
+ strncpy(szTitle, szTitleName, nTmpStringSize);
+ } else {
+ strncpy(szTitle, szTitleName, STR_LEN_MAX - 1);
+ }
+
+ return TRUE;
+}
+
+void MpUtilInitSession(void)
+{
+ VideoLogInfo("");
+
+ sound_manager_set_session_type(SOUND_SESSION_TYPE_EXCLUSIVE);
+}
+
+void MpUtilFinishSession(void)
+{
+ VideoLogInfo("");
+
+ sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
+}
+
+void MpUtilVolumeTypeSet(void)
+{
+ VideoLogInfo("");
+
+ sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
+}
+
+void MpUtilVolumeTypeUnset(void)
+{
+ VideoLogInfo("");
+
+ sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE);
+}
+
+void 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", dgettext("sys_string", 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", dgettext("sys_string", 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, dgettext(MP_SYS_STRING, 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, dgettext(MP_SYS_STRING, 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 || pUserData == 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>", dgettext(MP_SYS_STRING, 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>", dgettext(MP_SYS_STRING, 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>", dgettext(MP_SYS_STRING, 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>", dgettext(MP_SYS_STRING, 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>", dgettext(MP_SYS_STRING, 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, dgettext(MP_SYS_STRING, 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_icon_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 MpUtilCheckCallStatus(void)
+{
+ VideoLogInfo("");
+
+ int nCallStatus = 0;
+
+ if (!vconf_get_int(VCONFKEY_CALL_STATE, &nCallStatus)) {
+ if (nCallStatus != VCONFKEY_CALL_OFF) {
+ return FALSE;
+ }
+ }
+
+ 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;
+}
+
+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);
+
+}
diff --git a/src/mp-video-animation-ctrl.c b/src/mp-video-animation-ctrl.c
new file mode 100755
index 0000000..e52550c
--- /dev/null
+++ b/src/mp-video-animation-ctrl.c
@@ -0,0 +1,151 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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..fca112d
--- /dev/null
+++ b/src/mp-video-app-ctrl.c
@@ -0,0 +1,1432 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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-drm-ctrl.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 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 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 MpVideoAppCtrlPlayPreMedia(VideoAppData *pAppData);
+static void MpVideoAppCtrlPlayNextMedia(VideoAppData *pAppData);
+static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData);
+
+
+
+/*
+ * Callback function
+ */
+static void MpVideoAppCtrlCheckDrmPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if(!pUserData)
+ {
+ VideoLogInfo("[ERR] No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpUtilDeletePopupHandle();
+}
+
+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;
+
+ MpVideoViewHideSoundpath(pUserData);
+ MpVideoAppCtrlPause(pAppData);
+
+ 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);
+ }
+ }
+
+ MpVideoAppCtrlBeginOfStream(pAppData);
+ MpUtilLcdNormalPowerLockForResume();
+
+ return 0;
+}
+
+static int MpVideoAppCtrlEndOfPlayCb(void *pUserData)
+{
+ if(!pUserData)
+ {
+ VideoLogInfo("[ERR] No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ MpVideoAppCtrlEndOfStream(pAppData);
+
+ MpUtilLcdNormalPowerUnlockForPause();
+
+ return 0;
+}
+
+static int MpVideoAppCtrlBufferingCb(void *pUserData)
+{
+ if(!pUserData)
+ {
+ VideoLogInfo("No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ 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("== CALL PAUSE =================================");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE;
+ }
+ else if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_RESUME) {
+ VideoLogInfo("== CALL RESUME =================================");
+ 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(pAppData)))
+ {
+ 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), MpVideoAppCtrlExitCb);
+ 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), MpVideoAppCtrlEndOfStream);
+ 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;
+
+ 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(pUserData)))
+ {
+ 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(pUserData)))
+ {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+}
+
+static void MpVideoAppCtrlPlayerInterruptedCbCb(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(pUserData)))
+ {
+ 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(pUserData)))
+ {
+ 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(pUserData)))
+ {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+}
+
+/*
+ * 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.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.VideoAppCtrlPlayPreMedia = (void *)MpVideoAppCtrlPlayPreMedia;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia = (void *)MpVideoAppCtrlPlayNextMedia;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition = (void *)MpVideoAppCtrlGetBufferingPosition;
+}
+
+bool MpVideoAppCtrlCheckDrm(VideoAppData *pAppData, char *szMediaPath)
+{
+ if(!pAppData)
+ {
+ VideoLogInfo("No exist appdata.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoDrmInit();
+
+ if(MpVideoDrmIsDrmFile(szMediaPath))
+ {
+ MpVideoDrmInfo *pResult = NULL;
+ pResult = MpVideoDrmCheckLeftRo(pAppData->szVideoTitle, szMediaPath);
+ if(pResult->nErrorCode != MP_VIDEO_DRM_ERROR_NONE)
+ {
+ char szErrMsg[STR_LEN_MAX] ={0,};
+
+ if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_INTERNAL) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_UNLOCK, ecore_file_file_get(szMediaPath));
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_TIME_BASED) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_UNLOCK, ecore_file_file_get(szMediaPath));
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_INTERVAL) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_UNLOCK, ecore_file_file_get(szMediaPath));
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_INTERVAL_BASED_DAYS,ecore_file_file_get(szMediaPath) , pResult->nData);
+ MpUtilYesNoPopUp(pAppData, NULL, szErrMsg, MpVideoAppCtrlCheckDrmPopupCb, MpVideoAppCtrlExitCb);
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_ACCUMULATED) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_UNLOCK,ecore_file_file_get(szMediaPath));
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_COUNT) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_UNLOCK, ecore_file_file_get(szMediaPath));
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_COUNT_SMALL) {
+ if(pResult->nData == 1) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_COUNT_BASED_OPEN_ONE,ecore_file_file_get(szMediaPath) );
+ }
+ else {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_COUNT_BASED_OPEN_MANY,ecore_file_file_get(szMediaPath) , pResult->nData);
+ }
+
+ MpUtilYesNoPopUp(pAppData, NULL, szErrMsg, MpVideoAppCtrlCheckDrmPopupCb, MpVideoAppCtrlExitCb);
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_TIME_COUNT_BASED) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_UNLOCK,szMediaPath );
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_TIME_INDIVIDULAL) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_UNLOCK,szMediaPath );
+ }
+ else if(pResult->nErrorCode == MP_VIDEO_DRM_ERROR_TIME_SYSTEM) {
+ snprintf(szErrMsg, STR_LEN_MAX, MP_VPL_DRM_UNLOCK,szMediaPath );
+ }
+
+ if(pResult->nErrorCode != MP_VIDEO_DRM_ERROR_COUNT_SMALL &&
+ pResult->nErrorCode != MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE) {
+ MpUtilNotifyPopUp(pAppData,szErrMsg, MpVideoAppCtrlCheckDrmPopupCb);
+ MpVideoAppCtrlExit(pAppData);
+ if(pResult) {
+ free(pResult);
+ pResult = NULL;
+ }
+ return FALSE;
+ }
+
+ if(pResult) {
+ free(pResult);
+ pResult = NULL;
+ }
+ }
+
+ if(pResult) {
+ free(pResult);
+ pResult = NULL;
+ }
+
+ if(!MpVideoDrmCheckForward(szMediaPath))
+ {
+ VideoLogInfo("[EXIT BY CHECKING DRM]");
+ MpUtilNotifyPopUp(pAppData, "Forward Lock DRM file.", MpVideoAppCtrlCheckDrmPopupCb);
+ MpVideoAppCtrlExit(pAppData);
+ return FALSE;
+ }
+
+ MpVideoDrmSetConsumptionState(VIDEO_DRM_CONSUMPTION_STATE_ENABLE);
+ }
+
+ MpVideoDrmStartConsumption(pAppData->szMediaUri);
+
+ return TRUE;
+}
+
+static void MpVideoAppCtrlPlayPreMedia(VideoAppData *pAppData)
+{
+ if(!pAppData)
+ {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ if(strlen(pAppData->szPreMediaUri) <= 0)
+ {
+ VideoLogInfo("szPreMediaUri is NULL.");
+ return;
+ }
+
+ VideoLogInfo("Current media uri : %s", pAppData->szMediaUri);
+ VideoLogInfo("Previous media uri : %s", pAppData->szPreMediaUri);
+
+ strncpy(pAppData->szMediaUri, pAppData->szPreMediaUri, sizeof(pAppData->szMediaUri) - 1);
+ MpVideoAppCtrlShowLayout(pAppData);
+
+ 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)
+ {
+ MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(pAppData->szMediaUri, pAppData->szPreMediaUri, pAppData->szNextMediaUri, false);
+ }
+
+ MpVideoAppCtrlReLaunching(pAppData);
+}
+
+static void MpVideoAppCtrlPlayNextMedia(VideoAppData *pAppData)
+{
+ if(!pAppData)
+ {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ if(strlen(pAppData->szNextMediaUri) <= 0)
+ {
+ VideoLogInfo("szNextMediaUri is NULL.");
+ return;
+ }
+
+ VideoLogInfo("Current media uri : %s", pAppData->szMediaUri);
+ VideoLogInfo("Next media uri : %s", pAppData->szNextMediaUri);
+
+ strncpy(pAppData->szMediaUri, pAppData->szNextMediaUri, sizeof(pAppData->szMediaUri) - 1);
+ MpVideoAppCtrlShowLayout(pAppData);
+
+ 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)
+ {
+ MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(pAppData->szMediaUri, pAppData->szPreMediaUri, pAppData->szNextMediaUri, false);
+ }
+
+ MpVideoAppCtrlReLaunching(pAppData);
+}
+
+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);
+ MpVideoAppCtrlCheckDrm(pAppData, pAppData->szMediaUri);
+
+ MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, (void *)MpUtilGetMainWindowXID(), (void *)pAppData);
+
+ MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb, MpVideoAppCtrlPlayerInterruptedCbCb, MpVideoAppCtrlPlayerErrorCb, MpVideoAppCtrlPlayerBufferingCb, (void*)pAppData);
+
+ MpVideoCtrlMgrMediaRealize();
+
+ MpVideoAppCtrlRotateScreen(pAppData, MpUtilGetRotationState());
+
+ pAppData->bStartSeek = FALSE;
+ if(pAppData->nSetPosition > 0)
+ {
+ VideoLogInfo("Pending seek position time : %dms", pAppData->nSetPosition);
+ MpVideoAppCtrlSetPosition(pAppData);
+ pAppData->bStartSeek = TRUE;
+ }
+
+ if(MpVideoViewCtrlIsPauseByUser())
+ {
+ MpVideoCtrlMgrSetMute(TRUE);
+ }
+
+ if(!pAppData->bStartSeek)
+ {
+ MpVideoCtrlMgrMediaPlay((void *)pAppData);
+ MpVideoAppCtrlBeginOfStream(pAppData);
+ MpUtilLcdNormalPowerLockForResume();
+ }
+
+ MpVideoCtrlMgrMediaPlay((void *)pAppData);
+
+ }
+ else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+ {
+ if(!MpVideoStreamingCtrlIsNetworkOn())
+ {
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_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;
+
+ MpVideoDrmStopConsumption();
+ 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;
+
+ MpVideoDrmPauseConsumption();
+ MpVideoCtrlMgrMediaPause(pAppData);
+ MpVideoViewCtrlPause(pAppData);
+ MpVideoAppCtrlShowLayout(pAppData);
+ MpUtilLcdNormalPowerUnlockForPause();
+}
+
+static void MpVideoAppCtrlResume(VideoAppData *pAppData)
+{
+ if(!pAppData)
+ {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ 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();
+ MpVideoDrmResumeConsumption();
+ 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 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("");
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
+ MpUtilMultimediaKeyGrab();
+
+ MpVideoAppCtrlGetVideoResolution(pAppData);
+ pAppData->nDuration = MpVideoCtrlMgrGetDuration();
+
+ MpVideoViewCtrlInitAfterBeginOfStream((void*)pAppData);
+
+ if(MpVideoViewCtrlIsPauseByUser())
+ {
+ 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.");
+ }
+ }
+
+ if(strlen(pAppData->szNextMediaUri) > 0)
+ {
+ MpVideoAppCtrlPlayNextMedia(pAppData);
+ }
+ else
+ {
+ MpVideoAppCtrlExit(pAppData);
+ }
+
+ MpVideoViewCtrlHideNocontentImage((void*)pAppData);
+}
+
+static void MpVideoAppCtrlExit(VideoAppData *pAppData)
+{
+ if(!pAppData)
+ {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if(pEcorePipeHandleForErrorMsg)
+ {
+ ecore_pipe_del(pEcorePipeHandleForErrorMsg);
+ pEcorePipeHandleForErrorMsg = NULL;
+ }
+
+ if(pEcorePipeHandleBOF)
+ {
+ ecore_pipe_del(pEcorePipeHandleBOF);
+ pEcorePipeHandleBOF = NULL;
+ }
+
+ if(pEcorePipeHandleEOF)
+ {
+ ecore_pipe_del(pEcorePipeHandleEOF);
+ pEcorePipeHandleEOF = NULL;
+ }
+
+ if(pEcorePipeHandleForBuffering)
+ {
+ ecore_pipe_del(pEcorePipeHandleForBuffering);
+ pEcorePipeHandleForBuffering = NULL;
+ }
+
+ if(pEcorePipeHandleForResumed)
+ {
+ ecore_pipe_del(pEcorePipeHandleForResumed);
+ pEcorePipeHandleForResumed = NULL;
+ }
+
+ if(pEcorePipeHandleForInterruped)
+ {
+ ecore_pipe_del(pEcorePipeHandleForInterruped);
+ pEcorePipeHandleForInterruped = NULL;
+ }
+
+ if(pEcorePipeHandlerForSeekComplete)
+ {
+ ecore_pipe_del(pEcorePipeHandlerForSeekComplete);
+ pEcorePipeHandlerForSeekComplete = NULL;
+ }
+
+ MpVideoAppCtrlStop(pAppData);
+ MpVideoCtrlMgrMediaDestroy(pAppData);
+ MpUtilDeletePopupHandle();
+ MpVideoViewCtrlDestroy((void *)pAppData);
+
+ if(MpVideoServiceCtrlGetPlayerType() == MP_STREAMING_PLAYER)
+ {
+ MpVideoStreamingCtrlDestroy((void *)pAppData);
+ }
+
+ MpExternalUgDestroyAll();
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+ elm_exit();
+}
+
+static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData)
+{
+ if(!pAppData)
+ {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ strncpy(pAppData->szCookie, MpVideoServiceCtrlGetCookieForStreaming(), STR_LEN_MAX - 1);
+
+ MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, (void *)MpUtilGetMainWindowXID(), (void *)pAppData);
+
+ MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb, MpVideoAppCtrlPlayerInterruptedCbCb, MpVideoAppCtrlPlayerErrorCb, MpVideoAppCtrlPlayerBufferingCb, (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);
+
+ 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);
+ MpVideoAppCtrlStart(pAppData);
+ }
+
+ if(nTmpPlayerType == MP_STREAMING_PLAYER)
+ {
+ MpVideoAppCtrlStartStreaming(pAppData);
+ pAppData->nSeekPosition = 0;;
+ }
+}
+
+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);
+}
+
+/*
+ * External function
+ */
+bool MpVideoAppCtrlInit(VideoAppData *pAppData)
+{
+ if(!pAppData)
+ {
+ VideoLogInfo("No exist appdata.");
+ return FALSE;
+ }
+
+ VideoLogInfo("Get rotation state from appcore. - %d", MpUtilGetRotationStateFromAppcore());
+
+ MpVideoAppCtrlFuncInit(pAppData);
+ MpVideoAppCtrlPipeInit(pAppData);
+ MpVideoViewCtrlInit(pAppData);
+
+ evas_object_show(pAppData->pMainWindow);
+ elm_win_activate(pAppData->pMainWindow);
+
+ if(!MpUtilCheckCallStatus())
+ {
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb);
+ return FALSE;
+ }
+
+ if(!MpUtilCheckBatteryStatus())
+ {
+ MpUtilNotifyPopUp(pAppData, dgettext("sys_string", 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);
+ MpUtilMediaSvcDestoryVideoList();
+ MpUtilMediaSvcFinishSession();
+ MpUtilBatteryStatusNotiIgnore();
+
+ nBufferingRate = 0;
+ nPlayerErrorType = 0;
+ nPlayerInterruptType = 0;
+
+ pAppData->nDuration = 0;
+ pAppData->nSetPosition = 0;
+ pAppData->nCurPosition = 0;
+ pAppData->nSeekPosition = 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();
+
+ 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, pUserData);
+}
+
+
diff --git a/src/mp-video-ctrl-mgr.c b/src/mp-video-ctrl-mgr.c
new file mode 100644
index 0000000..3a7c6c7
--- /dev/null
+++ b/src/mp-video-ctrl-mgr.c
@@ -0,0 +1,526 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 *pUserData)
+{
+ if(!pUserData)
+ {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+ VideoLogInfo("XID : %p", pOverlayXid);
+
+ 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(!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;
+}
+
+void MpVideoCtrlMgrMediaDestroy(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo(" Already destroy player handle.");
+ return;
+ }
+
+ if (!MpPlayerMgrUnrealize()) {
+ VideoLogInfo("[ERR] Fail to unrealize player handle.");
+ return;
+ }
+
+ if (!MpPlayerMgrDestroy()) {
+ VideoLogInfo("[ERR] Fail to destroy player handle.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+}
+
+bool MpVideoCtrlMgrMediaPlay(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrPlay()) {
+ VideoLogInfo("[ERR] Fail to play multimedia player.");
+ return FALSE;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
+
+ return TRUE;
+}
+
+void MpVideoCtrlMgrMediaStop(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR] Player handle is destroyed.");
+ return;
+ }
+
+ if (!MpPlayerMgrStop()) {
+ VideoLogInfo("[ERR] Fail to stop multimedia player.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
+}
+
+void MpVideoCtrlMgrMediaPause(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
+ VideoLogInfo
+ ("It is not possible to pause when player state is stop.");
+ return;
+ }
+
+ if (!MpPlayerMgrPause()) {
+ VideoLogInfo("[ERR] Fail to pause multimedia player.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
+}
+
+void MpVideoCtrlMgrMediaResume(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
+ VideoLogInfo
+ ("It is not possible to resume when player state is stop.");
+ return;
+ }
+
+ if (!MpPlayerMgrResume()) {
+ VideoLogInfo("[ERR] Fail to resume multimedia player.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
+}
+
+void MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *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, pUserData);
+}
+
+void MpVideoCtrlMgrSetOverlayXid(void *pXid)
+{
+ VideoLogInfo(" XID:%d", *((int *)pXid));
+
+ if (!MpPlayerMgrSetOverlayXid(pXid)) {
+ 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);
+ }
+}
+
+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("");
+
+ MpPlayerMgrSetDisplayMode(nRatioScreenSize);
+}
+
+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();
+}
+
+int MpVideoCtrlMgrGetBufferingPosition(void)
+{
+ /* VideoLogInfo(""); */
+
+ 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;
+
+ default:
+ return MP_PLAYER_ERROR_UNKNOWN_ERROR;
+ }
+}
+
+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;
+} \ 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 100644
index 0000000..3a2a894
--- /dev/null
+++ b/src/mp-video-display-view.c
@@ -0,0 +1,1071 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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-drm-ctrl.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
+
+static Evas_Object *pNaviFrameHandle = NULL;
+static Evas_Object *pDisplayViewLayout = NULL;
+static Evas_Object *pDisplayViewPanelEdj = NULL;
+static Evas_Object *pDisplayViewCtrlEdj = NULL;
+static Evas_Object *pDisplayViewProgressbarEdj = NULL;
+static Evas_Object *pDisplaySoundpathButton = NULL;
+
+static Ecore_Timer *pCtrlPanelHideTimer = NULL;
+static Ecore_Timer *pSpeedPressTimer = NULL;
+
+static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL;
+
+static ChangeDisplayViewCbFunc pChangeViewUserCbFunc = NULL;
+
+static bool bIsVideoViewScreenLock = FALSE;
+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 int nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+
+static bool bIsPauseByUser = FALSE;
+
+/*
+ * When the video display view is hieded by others view(favorite/info/etc),
+ * passing click event of mouse up in video display view.
+ */
+static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+
+
+
+/*
+ * Internal function.
+ */
+static void MpVideoDisplayViewUpdateFFStep(int nStep)
+{
+ VideoLogInfo("");
+
+ if (nStep < 0 || nStep > MAX_SPEED_STEP) {
+ VideoLogInfo("Invalid Step value:%d", nStep);
+ return;
+ }
+
+ char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, };
+
+ switch(nStep)
+ {
+ case MP_PLAYING_SPEED_2X: nStep = 1; break;
+ case MP_PLAYING_SPEED_3X: nStep = 2; break;
+ case MP_PLAYING_SPEED_4X: nStep = 3; break;
+ case MP_PLAYING_SPEED_5X: nStep = 4; break;
+ }
+
+ if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL || MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE)
+ {
+ snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", SIGNAL_CONTROL_NORMAL_FF_STEP, nStep);
+ }
+ else
+ {
+ snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", SIGNAL_CONTROL_NORMAL_FF_LANDSCAPE_STEP, nStep);
+ }
+
+ VideoLogInfo("%s", sig_format);
+ edje_object_signal_emit(pDisplayViewCtrlEdj, sig_format, "*");
+}
+
+static void MpVideoDisplayViewUpdateREWStep(int nStep)
+{
+ VideoLogInfo("");
+
+ if (nStep < 0 || nStep > MAX_SPEED_STEP) {
+ VideoLogInfo("Invalid Step value:%d", nStep);
+ return;
+ }
+
+ char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, };
+
+ switch(nStep)
+ {
+ case MP_PLAYING_SPEED_2X: nStep = 1; break;
+ case MP_PLAYING_SPEED_3X: nStep = 2; break;
+ case MP_PLAYING_SPEED_4X: nStep = 3; break;
+ case MP_PLAYING_SPEED_5X: nStep = 4; break;
+ }
+
+ if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL || MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE)
+ {
+ snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", SIGNAL_CONTROL_NORMAL_REW_STEP, nStep);
+ }
+ else
+ {
+ snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", SIGNAL_CONTROL_NORMAL_REW_LANDSCAPE_STEP, nStep);
+ }
+
+ VideoLogInfo("%s", sig_format);
+ edje_object_signal_emit(pDisplayViewCtrlEdj, sig_format, "*");
+}
+
+/*
+ * Callback function.
+ */
+
+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 MpVideoDisplayViewPressPauseButtonCb(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);
+ bIsPauseByUser = TRUE;
+ }
+ }
+}
+
+static void MpVideoDisplayViewPressResumeButtonCb(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);
+ bIsPauseByUser = FALSE;
+ }
+ }
+}
+
+static Eina_Bool MpVideoDisplayViewSpeedLongPressCb(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 fast forward", pAppData->nPlayingSpeed);
+ MpVideoDisplayViewUpdateFFStep(pAppData->nPlayingSpeed);
+ }
+ else if(nSpeedMode == -1)
+ {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
+ snprintf(caption, CAPTION_TEXT_MAX_LEN, "X%d fast reverse", pAppData->nPlayingSpeed);
+ MpVideoDisplayViewUpdateREWStep(pAppData->nPlayingSpeed);
+ }
+
+ 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, MpVideoDisplayViewSpeedLongPressCb, (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 (!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;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia(pAppData);
+ } else {
+ MpVideoDisplayViewUpdateFFStep(0);
+
+ edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
+ edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
+ }
+ bIsSpeedLongPress = FALSE;
+ }
+}
+
+static void MpVideoDisplayViewRewDownButtonCb(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_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, MpVideoDisplayViewSpeedLongPressCb, (void *)pAppData);
+ }
+}
+
+static void MpVideoDisplayViewRewUpButtonCb(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_REW_BUTTON_UP)) {
+ VideoLogInfo("Press Rewind up button.");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+
+ if (pSpeedPressTimer) {
+ ecore_timer_del(pSpeedPressTimer);
+ pSpeedPressTimer = NULL;
+ bIsPauseByUser = FALSE;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia(pAppData);
+ } else {
+ MpVideoDisplayViewUpdateREWStep(0);
+
+ edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
+ edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
+
+ pAppData->VideoAppCtrlCallbackFunc. VideoAppCtrlSpeedReset(pAppData);
+ }
+ bIsSpeedLongPress = 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("");
+
+ syspopup_launch("volume", NULL);
+}
+
+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 = nControlMouseMovePos - nControlMouseDownPos;
+ booster_step = booster_step / BOOSTER_STEP_DISTANCE;
+ } else if (nSpeedMode == -1) {
+ booster_step = nControlMouseDownPos - nControlMouseMovePos;
+ booster_step = booster_step / BOOSTER_STEP_DISTANCE;
+ } else {
+ VideoLogInfo("[ERR] Invalid SpeedMode.");
+ return;
+ }
+
+ if(booster_step == 0)
+ {
+ pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
+ }
+ else if(booster_step == 1)
+ {
+ pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X;
+ }
+ else if(booster_step == 2)
+ {
+ pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
+ }
+ else if(booster_step > 3)
+ {
+ pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
+ }
+
+ 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 fast forward", pAppData->nPlayingSpeed);
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
+ MpVideoDisplayViewUpdateFFStep(pAppData->nPlayingSpeed);
+ }
+ else
+ {
+ snprintf(caption, CAPTION_TEXT_MAX_LEN, "X%d fast reverse", pAppData->nPlayingSpeed);
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
+ MpVideoDisplayViewUpdateREWStep(pAppData->nPlayingSpeed);
+ }
+
+ 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.x;
+ 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.x;
+}
+
+static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoSoundpathHide();
+ MpUtilDeletePopupHandle();
+
+ if (MpUtilIsConnectEarjack()) {
+ 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");
+ }
+}
+
+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);
+
+ 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);
+
+ 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(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_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_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);
+
+ MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
+ }
+}
+
+void MpVideoDisplayViewInit(void *pUserData, int nPlayerType)
+{
+ VideoLogInfo("");
+
+ if (!pNaviFrameHandle|| !pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ MpVideoDisplayViewInitLayout(pUserData, nPlayerType);
+}
+
+
+/*
+ * External function
+ */
+void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb)
+{
+ if (!pNaviFrame || !pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ pNaviFrameHandle = pNaviFrame;
+ pChangeViewUserCbFunc = pChangeViewCb;
+
+ MpVideoDisplayViewInit(pUserData, nPlayerType);
+ pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line");
+
+ 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);
+ }
+
+ MpVideoDisplayViewShowControlPanel(pUserData);
+}
+
+void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
+{
+ if(!pUserData)
+ {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ 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);
+ }
+}
+
+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 (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;
+ }
+
+ bIsVideoViewScreenLock = FALSE;
+
+ bSwitchDisplayViewUI = TRUE;
+ nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+ nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+ bIsDisplayViewOnlyAudio = FALSE;
+ bIsPauseByUser = FALSE;
+}
+
+void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ 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;
+ MpVideoProgressbarCreateTimer((void *)pAppData);
+
+ bSwitchDisplayViewUI = TRUE;
+ evas_object_show(pDisplayViewLayout);
+
+ 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();
+ MpVideoDisplayViewUnlockScreen(pUserData);
+}
+
+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;
+
+ evas_object_hide(pDisplayViewLayout);
+
+ MpVideoProgressbarDeleteTimer();
+ MpExternalUgHide();
+ if (pCtrlPanelHideTimer) {
+ ecore_timer_del(pCtrlPanelHideTimer);
+ pCtrlPanelHideTimer = NULL;
+ }
+}
+
+void MpVideoDisplayViewActivate(void)
+{
+ VideoLogInfo("");
+
+ nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
+}
+
+void MpVideoDisplayViewUnactivate(void)
+{
+ VideoLogInfo("");
+
+ nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+}
+
+
+void MpVideoDisplayViewHideSoundpath(void)
+{
+ VideoLogInfo("");
+
+ MpVideoSoundpathHide();
+}
+
+void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
+
+ 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(void)
+{
+ VideoLogInfo("");
+
+ 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, "*");
+}
+
+void MpVideoDisplayViewLandscape(void)
+{
+ VideoLogInfo("");
+
+ 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, "*");
+}
+
+void MpVideoDisplayViewResetProgressBar(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (pDisplayViewLayout) {
+ MpVideoProgressbarReset(pUserData);
+ }
+}
+
+void MpVideoDisplayViewLockScreen(void *pUserData)
+{
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+
+ bIsVideoViewScreenLock = TRUE;
+}
+
+void MpVideoDisplayViewUnlockScreen(void *pUserData)
+{
+ VideoLogInfo("");
+
+ bIsVideoViewScreenLock = FALSE;
+}
+
+bool MpVideoDisplayViewGetScreenLockState(void)
+{
+ VideoLogInfo("");
+
+ return bIsVideoViewScreenLock;
+}
+
+int MpVideoDisplayViewGetScreenSize(void)
+{
+ VideoLogInfo("");
+
+ return nScreensizeStatus;
+}
+
+bool MpVideoDisplayViewIsPauseByUser(void)
+{
+ VideoLogInfo("%d", bIsPauseByUser);
+
+ return bIsPauseByUser;
+}
+
+void MpVideoDisplayViewUpdateProgressBar(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ MpVideoProgressbarCreateTimer(pUserData);
+}
diff --git a/src/mp-video-info-ctrl.c b/src/mp-video-info-ctrl.c
new file mode 100755
index 0000000..30afe88
--- /dev/null
+++ b/src/mp-video-info-ctrl.c
@@ -0,0 +1,437 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 <vconf.h>
+#include <libexif/exif-data.h>
+#include <metadata_extractor.h>
+
+#include <unicode/udat.h>
+#include <unicode/ustring.h>
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udatpg.h>
+#include <unicode/utmscale.h>
+
+#include "mp-util.h"
+#include "mp-drm-ctrl.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-info-ctrl.h"
+
+enum VIDEO_PLAYER_FILE_SIZE_TYPE
+{
+ SIZE_BYTE = 0,
+ SIZE_KB,
+ SIZE_MB,
+ SIZE_GB
+};
+
+bool MpVideoInfoCtrlGetGPS(char *szUriPath, double *nLongtitude, double *nLatitude)
+{
+ if (!szUriPath) {
+ VideoLogInfo("[ERR] No exist szUriPath.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ if (MpVideoDrmIsDrmFile(szUriPath)) {
+ VideoLogInfo("It's drm file.");
+ return FALSE;
+ }
+
+ metadata_extractor_h pMetadata;
+
+ char *szTmp = NULL;
+
+ *nLatitude = 0.0;
+ *nLongtitude = 0.0;
+
+ if(metadata_extractor_create(&pMetadata) != METADATA_EXTRACTOR_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] - metadata_extractor_create()");
+ return FALSE;
+ }
+
+ if(metadata_extractor_set_path(pMetadata, szUriPath) != METADATA_EXTRACTOR_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] - metadata_extractor_set_path()");
+ return FALSE;
+ }
+
+ if(metadata_extractor_get_metadata(pMetadata, METADATA_LATITUDE, &szTmp) != METADATA_EXTRACTOR_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] - metadata_extractor_get_metadata() - METADATA_LATITUDE");
+ metadata_extractor_destroy(pMetadata);
+ return FALSE;
+ }
+ else
+ {
+ if(szTmp)
+ {
+ VideoLogInfo("METADATA_LATITUDE : %s", szTmp);
+ *nLatitude = atof(szTmp);
+ }
+ else
+ {
+ *nLatitude = 0.0;
+ }
+
+ free(szTmp);
+ szTmp = NULL;
+ }
+
+ if(metadata_extractor_get_metadata(pMetadata, METADATA_LONGITUDE, &szTmp) != METADATA_EXTRACTOR_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] - metadata_extractor_get_metadata() - METADATA_LONGITUDE");
+ metadata_extractor_destroy(pMetadata);
+ return FALSE;
+ }
+ else
+ {
+ if(szTmp)
+ {
+ VideoLogInfo("METADATA_LONGITUDE : %s", szTmp);
+ *nLongtitude = atof(szTmp);
+ }
+ else
+ {
+ *nLongtitude = 0.0;
+ VideoLogInfo("METADATA_LONGITUDE : %s", szTmp);
+ }
+
+ free(szTmp);
+ szTmp = NULL;
+ }
+
+ metadata_extractor_destroy(pMetadata);
+
+ return TRUE;
+}
+
+bool MpVideoInfoCtrlGetResolution(char *szWidthResolution, char *szHeightResolution, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution(pAppData);
+
+ if (pAppData->nVideoWidthResolution > 0 && pAppData->nVideoHeightResolution > 0) {
+ snprintf(szWidthResolution, STR_LEN_MAX, "%d", pAppData->nVideoWidthResolution);
+ snprintf(szHeightResolution, STR_LEN_MAX, "%d", pAppData->nVideoHeightResolution);
+ } else {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static char *MpVideoInfoCtrlConvertingString(const char *szLocale, const char *szCustomSkeleton, const char *szTimezone, UDate st_Date)
+{
+#define UG_ICU_ARR_LENGTH 256
+
+ // Copy a byte string encoded in the default codepage to a ustring.
+ // Copies at most n characters. The result will be null terminated if the length of src is less than n.
+ // Performs a host byte to UChar conversion.
+
+ UChar ucustomSkeleton[UG_ICU_ARR_LENGTH] = {0,};
+
+ if (u_uastrncpy(ucustomSkeleton, szCustomSkeleton, UG_ICU_ARR_LENGTH) == NULL) {
+ VideoLogInfo("u_uastrncpy() error.");
+ return NULL;
+ }
+
+ UChar utimezone[UG_ICU_ARR_LENGTH] = {0,};
+
+ if (u_uastrncpy(utimezone, szTimezone, UG_ICU_ARR_LENGTH) == NULL) {
+ VideoLogInfo("u_uastrncpy() error.");
+ return NULL;
+ }
+
+ UErrorCode status = U_ZERO_ERROR;
+ UDateTimePatternGenerator *generator;
+ UDateFormat *formatter;
+
+ UChar bestPattern[UG_ICU_ARR_LENGTH] = {0,};
+ UChar formatted[UG_ICU_ARR_LENGTH] = {0,};
+ char formattedString[UG_ICU_ARR_LENGTH] = {0,};
+ int32_t bestPatternLength, formattedLength;
+
+ ucal_setDefaultTimeZone(utimezone , &status);
+
+ if (U_FAILURE(status)) {
+ VideoLogInfo("ucal_setDefaultTimeZone() is failed.");
+ return NULL;
+ }
+
+ uloc_setDefault(getenv("LC_TIME"), &status);
+
+ if (U_FAILURE(status)) {
+ VideoLogInfo("ucal_setDefaultTimeZone() is failed.");
+ return NULL;
+ }
+
+ generator = udatpg_open(szLocale, &status);
+ if (generator == NULL) {
+ return NULL;
+ }
+
+ bestPatternLength = udatpg_getBestPattern(generator, ucustomSkeleton, u_strlen(ucustomSkeleton), bestPattern, UG_ICU_ARR_LENGTH, &status);
+ if (bestPatternLength <= 0) {
+ return NULL;
+ }
+
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, szLocale, NULL, -1, bestPattern, -1, &status);
+ if (formatter == 0) {
+ return NULL;
+ }
+
+ formattedLength = udat_format(formatter, st_Date, formatted, UG_ICU_ARR_LENGTH, NULL, &status);
+ if (formattedLength <= 0) {
+ return NULL;
+ }
+
+ u_austrcpy(formattedString, formatted);
+ udatpg_close(generator);
+ udat_close(formatter);
+
+ if (strlen(formattedString) == 0) {
+ return NULL;
+ }
+
+ return strdup(formattedString);
+}
+
+static char* MpVideoInfoCtrlGetDateOfFile(time_t mtime)
+{
+#define UG_DATE_FORMAT_12 "yMMMdhms"
+#define UG_DATE_FORMAT_24 "yMMMdHms"
+
+ VideoLogInfo("");
+
+ char* szSkeleton = NULL;
+
+//jdlee
+/*
+ enum appcore_time_format nTimeformat;
+
+ int nRet = appcore_get_timeformat(&nTimeformat);
+ if(nRet == -1)
+ {
+ VideoLogInfo("Cannot get timeformat.");
+ nTimeformat = APPCORE_TIME_FORMAT_12;
+ }
+
+ if(nTimeformat == APPCORE_TIME_FORMAT_12)
+ {
+ szSkeleton = UG_DATE_FORMAT_12;
+ }
+ else if(nTimeformat == APPCORE_TIME_FORMAT_24)
+ {
+ szSkeleton = UG_DATE_FORMAT_24;
+ }
+ else
+ {
+ VideoLogInfo("Invalid time format : %d", nTimeformat);
+ szSkeleton = UG_DATE_FORMAT_12; // Default value.
+ }
+*/
+ szSkeleton = UG_DATE_FORMAT_12;
+
+ char *szLocale = vconf_get_str(VCONFKEY_REGIONFORMAT); // eg en_US.UTF-8
+ if(szLocale == NULL)
+ {
+ VideoLogInfo("Cannot get region format.");
+ szLocale = "en_US.UTF-8"; // Default value.
+ }
+
+ char *szTimezone = NULL;
+ szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID); // eg Asia/Seoul
+ if(szTimezone == NULL)
+ {
+ VideoLogInfo("Cannot get time zone.");
+ return strdup("N/A");
+ }
+
+ VideoLogInfo("Locale : %s TimeZone : %s TimeFormat : %s", szLocale, szSkeleton, szTimezone);
+
+ char* szDatestr = NULL;
+ szDatestr = MpVideoInfoCtrlConvertingString(szLocale, szSkeleton, szTimezone, (UDate)mtime * 1000);
+ if(!szDatestr)
+ {
+ VideoLogInfo("Cannot get time string.");
+ return strdup("N/A");
+ }
+
+ VideoLogInfo("ICU Date : %s", szDatestr);
+
+ return szDatestr;
+}
+
+static char* MpVideoInfoCtrlGetDrmFileExtension(char* szPath)
+{
+#define EXT_SIZE 128
+#define EXT_SPLITTER '.'
+
+ if (!szPath) {
+ VideoLogInfo("[ERR] No exist szPath.");
+ return NULL;
+ }
+
+ char szDrmContentType[STR_LEN_MAX] = {0};
+
+ MpVideoDrmGetFileExtension(szPath, szDrmContentType, STR_LEN_MAX);
+ VideoLogInfo("szDrmContentType : %s", szDrmContentType);
+
+ char szTmpExt[EXT_SIZE] = {0,};
+ char *szExt = NULL;
+ int nErr = -1;
+
+ nErr = aul_get_mime_extension(szDrmContentType, szTmpExt, sizeof(szTmpExt));
+
+ if (0 == nErr) {
+ szExt = strrchr(szTmpExt, EXT_SPLITTER);
+ if((szExt == NULL) || (szExt + 1 == NULL)) {
+ return NULL;
+ }
+ } else {
+ return NULL;
+ }
+
+ return strdup(szExt + 1);
+
+}
+
+char* MpVideoInfoCtrlGetFileExtension(char *szPath)
+{
+ if (!szPath) {
+ VideoLogInfo("Cannot get file extension. path is NULL");
+ return strdup("Unknown");
+ }
+
+ if (MpVideoDrmIsDrmFile(szPath)) {
+ VideoLogInfo("It's drm file.");
+
+ char *szFileExtension = MpVideoInfoCtrlGetDrmFileExtension(szPath);
+ if (szFileExtension) {
+ VideoLogInfo("Drm file extension. - %s", szFileExtension);
+ return szFileExtension;
+ } else {
+ VideoLogInfo("No have file extension.");
+ return strdup("Unknown");
+ }
+ } else {
+ char *szExt = NULL;
+ szExt = strrchr(szPath, '.');
+
+ if ((szExt != NULL) && ((szExt+1) != NULL)) {
+ return strdup(szExt + 1);
+ }
+ }
+
+ return strdup("Unknown");
+}
+
+char* MpVideoInfoCtrlGetFileSize(size_t size)
+{
+ VideoLogInfo("");
+
+#define FILE_SIZE_LEN_MAX 64
+#define BASIC_SIZE 1024 //used for file size check
+
+ int nCount = 0;
+
+ unsigned long int lsize = (unsigned long int)size;
+
+ char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1);
+ if (pTmp == NULL) {
+ return NULL;
+ }
+
+ while (size >= (BASIC_SIZE)) {
+ lsize = size;
+ size /= BASIC_SIZE;
+ nCount++;
+ }
+
+ if (nCount == SIZE_BYTE) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zu B", size);
+ } else if (nCount == SIZE_KB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zu KB", size);
+ } else if (nCount == SIZE_MB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zu MB", size);
+ } else if(nCount == SIZE_GB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zu GB", size);
+ }
+
+ VideoLogInfo("Size = %lu, OrigSize=%zu", lsize, size);
+
+ return pTmp;
+}
+
+bool MpVideoInfoCtrlGetFileInfo(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize)
+{
+ if (!szUriPath) {
+ VideoLogInfo("[ERR] No exist szUriPath.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ struct stat statbuf;
+
+ if (stat(szUriPath, &statbuf) == -1) {
+ VideoLogInfo("%s file is NULL", szUriPath);
+ return FALSE;
+ }
+
+ memset(szFileDate, 0, nFileDateSize);
+ memset(szFileExtension, 0, nFileExtensionSize);
+ memset(szFileSize, 0, nFilesizeSize);
+
+ char *szTmpDateOfFile = MpVideoInfoCtrlGetDateOfFile(statbuf.st_mtime);
+ char *szTmpFileExtension = MpVideoInfoCtrlGetFileExtension(szUriPath);
+ char *szTmpFileSize = MpVideoInfoCtrlGetFileSize(statbuf.st_size);
+
+ if (szTmpDateOfFile) {
+ VideoLogInfo("szTmpDateOfFile : %s", szTmpDateOfFile);
+ strncpy(szFileDate, szTmpDateOfFile, nFileDateSize);
+ free(szTmpDateOfFile);
+ }
+
+ if (szTmpFileExtension) {
+ VideoLogInfo("szTmpFileExtension : %s", szTmpFileExtension);
+ strncpy(szFileExtension, szTmpFileExtension, nFileExtensionSize);
+ free(szTmpFileExtension);
+ }
+
+ if (szTmpFileSize) {
+ VideoLogInfo("szTmpFileSize : %s", szTmpFileSize);
+ strncpy(szFileSize, szTmpFileSize, nFilesizeSize);
+ free(szTmpFileSize);
+ }
+
+ return TRUE;
+}
diff --git a/src/mp-video-info-view.c b/src/mp-video-info-view.c
new file mode 100644
index 0000000..9550d72
--- /dev/null
+++ b/src/mp-video-info-view.c
@@ -0,0 +1,255 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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-info-view.h"
+#include "mp-video-string-define.h"
+
+
+static Evas_Object *pInfoViewLayout = NULL;
+static Evas_Object *pNaviFrameHandle = NULL;
+static Evas_Object *pBackBtn = NULL;
+
+static int nInfoResolutionWidth = 0;
+static int nInfoResolutionHeight = 0;
+
+static char szInfoTitle[STR_LEN_MAX] = {0,};
+static int nInfoDuration = 0;
+
+
+
+/*
+ * Callback function.
+ */
+static void MpVideoInfoViewNaviFrameBackCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ /* Will be used if wanted it. */
+ //VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ evas_object_smart_callback_del(pBackBtn, "clicked", MpVideoInfoViewNaviFrameBackCb);
+
+ MpUtilDeletePopupHandle();
+
+ MpVideoInfoViewPop(pNaviFrameHandle, pUserData);
+
+ evas_object_smart_callback_add(pBackBtn, "clicked", MpVideoInfoViewNaviFrameBackCb, pUserData);
+}
+
+/*
+ * Internal function
+ */
+static char *MpVideoInfoViewItemLabelGet(const void *data, Evas_Object *obj,
+ const char *part)
+{
+ VideoLogInfo("");
+
+ int index = (int) data;
+ char subTxt[STR_LEN_MAX] = { 0, };
+
+ if (index > 2)
+ return NULL;
+
+ switch (index) {
+ case 0: /* title */
+ if (!strcmp(part, "elm.text.1")) {
+ return strdup("Title");
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(subTxt, STR_LEN_MAX, "%s", szInfoTitle);
+ VideoLogInfo("%s", subTxt);
+ return strdup(subTxt);
+ } else {
+ return NULL;
+ }
+ break;
+ case 1: /* duration */
+ if (!strcmp(part, "elm.text.1")) {
+ return strdup("Duration");
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(subTxt, STR_LEN_MAX, "%" PLAY_TIME_FORMAT,
+ PLAY_TIME_ARGS(nInfoDuration / 1000));
+ VideoLogInfo("%s", subTxt);
+ return strdup(subTxt);
+ } else {
+ return NULL;
+ }
+ break;
+ case 2: /* resolution */
+ if (!strcmp(part, "elm.text.1")) {
+ return strdup("Resolution");
+ } else if (!strcmp(part, "elm.text.2")) {
+ snprintf(subTxt, STR_LEN_MAX, "%d X %d",
+ nInfoResolutionWidth,
+ nInfoResolutionHeight);
+ VideoLogInfo("%s", subTxt);
+ return strdup(subTxt);
+ }
+ break;
+ }
+
+ return NULL;
+}
+
+static void MpVideoInfoViewInitValue(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData ) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ nInfoResolutionWidth = pAppData->nVideoWidthResolution;
+ nInfoResolutionHeight = pAppData->nVideoHeightResolution;
+
+ nInfoDuration = pAppData->nDuration;
+ if(pAppData->szVideoTitle) {
+ if(strcmp(pAppData->szVideoTitle, MP_STREAMING_PLAYER_STR) == 0) {
+ snprintf(szInfoTitle,STR_LEN_MAX,"Unknown");
+ } else {
+ snprintf(szInfoTitle,STR_LEN_MAX,"%s", pAppData->szVideoTitle);
+ }
+ } else {
+ snprintf(szInfoTitle,STR_LEN_MAX,"Unknown");
+ }
+}
+
+void MpVideoInfoViewInit(void *pParent, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData || !pParent) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pInfoViewLayout = elm_layout_add(pParent);
+
+ if (pInfoViewLayout) {
+ int i = 0;
+ Evas_Object *genlist = NULL;
+ Elm_Genlist_Item_Class *info_itc = NULL;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution(pAppData);
+
+ MpVideoInfoViewInitValue((void *)pAppData);
+ elm_layout_file_set(pInfoViewLayout, VIDEO_PLAYER_DETAIL_EDJ, DETAIL_EDJ_GROUP);
+
+ info_itc = elm_genlist_item_class_new();
+
+ info_itc->item_style = "2text.7";
+ info_itc->func.text_get = (void *)MpVideoInfoViewItemLabelGet;
+ info_itc->func.content_get = NULL;
+ info_itc->func.state_get = NULL;
+ info_itc->func.del = NULL;
+
+ genlist = elm_genlist_add(pParent);
+ elm_genlist_multi_select_set(genlist, EINA_FALSE);
+ elm_genlist_select_mode_set(genlist, EINA_TRUE);
+
+ for (i = 0; i < 3; i++) {
+ elm_genlist_item_append(genlist, info_itc, (void *)i, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+
+ elm_genlist_item_class_free(info_itc);
+
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ evas_object_show(genlist);
+ elm_object_part_content_set(pInfoViewLayout, SWALLOW_DETAIL_LIST, genlist);
+ evas_object_show(pInfoViewLayout);
+ }
+}
+
+/*
+ * External function
+ */
+void MpVideoInfoViewPush(void *pNaviFrame, void *pUserData)
+{
+ VideoLogInfo("");
+
+ Evas_Object *pTmpButton = NULL;
+ Elm_Object_Item *pNaviFrameItemInfoView = NULL;
+
+ pNaviFrameHandle = pNaviFrame;
+
+ MpVideoInfoViewInit(pNaviFrameHandle, pUserData);
+
+ pNaviFrameItemInfoView = elm_naviframe_item_push(pNaviFrameHandle, dgettext("sys_string", "IDS_COM_BODY_DETAILS"), NULL, NULL, pInfoViewLayout, "video/1line");
+
+ pBackBtn = elm_button_add(pNaviFrameHandle);
+ elm_object_text_set(pBackBtn, "btn_label");
+ evas_object_smart_callback_add(pBackBtn, "clicked", MpVideoInfoViewNaviFrameBackCb, pUserData);
+ elm_object_item_part_content_set(pNaviFrameItemInfoView, "prev_btn", pBackBtn);
+
+ pTmpButton = elm_object_item_part_content_get(pNaviFrameItemInfoView, "prev_btn");
+ if (pTmpButton) {
+ elm_object_style_set(pTmpButton, "video/navigationbar_prev_btn/default");
+ }
+
+ elm_object_item_signal_emit(pNaviFrameItemInfoView, "elm,state,optionheader,instant_close", "");
+}
+
+void MpVideoInfoViewPop(void *pNaviFrame, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ elm_naviframe_item_pop(pNaviFrame);
+
+ MpVideoInfoViewDestroy();
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+}
+
+void MpVideoInfoViewDestroy(void)
+{
+ VideoLogInfo("");
+
+ if (pInfoViewLayout) {
+ evas_object_del(pInfoViewLayout);
+ pInfoViewLayout = NULL;
+ }
+
+ if (pBackBtn) {
+ evas_object_del(pBackBtn);
+ pBackBtn = NULL;
+ }
+
+ pNaviFrameHandle = NULL;
+}
diff --git a/src/mp-video-player-mgr.c b/src/mp-video-player-mgr.c
new file mode 100755
index 0000000..768da7b
--- /dev/null
+++ b/src/mp-video-player-mgr.c
@@ -0,0 +1,632 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 *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;
+ }
+
+ 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 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;
+}
+
+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;
+ }
+
+ /* prevent 2011/07/12 */
+ VideoLogInfo("XID : %p", 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 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 MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode)
+{
+ VideoLogInfo("");
+
+ if(!MpPlayerMgrIsActive())
+ {
+ VideoLogInfo("[ERR]");
+ 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;
+}
+
+int MpPlayerMgrGetBufferingPosition(void)
+{
+ return 0;
+}
+
+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;
+}
diff --git a/src/mp-video-progressbar.c b/src/mp-video-progressbar.c
new file mode 100755
index 0000000..ad6ea8c
--- /dev/null
+++ b/src/mp-video-progressbar.c
@@ -0,0 +1,730 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 10
+#define PROGRESS_ADJUSTMENT_MODE_LIMIT 10
+
+
+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, "*");
+ }
+}
+
+
+/*
+ * 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) {
+ VideoLogInfo("[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;
+
+
+ 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;
+ MpVideoProgressbarDeleteTimer();
+
+ 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;
+
+ 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;
+
+ if(nTmpPlayerType != MP_STREAMING_PLAYER)
+ {
+ if(!pAppData->bSeekComplete)
+ {
+ pAppData->nSeekPosition = pAppData->nSetPosition;
+ }
+ else
+ {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+ MpVideoProgressbarCreateTimer((void *)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;
+ }
+ }
+ 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)
+ 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(pProgressAdjustCheckTimer) {
+ ecore_timer_del(pProgressAdjustCheckTimer);
+ pProgressAdjustCheckTimer = NULL;
+ }
+
+ if(pProgressAdjustRunTimer) {
+ ecore_timer_del(pProgressAdjustRunTimer);
+ pProgressAdjustRunTimer = NULL;
+ }
+
+ 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 100644
index 0000000..0d6b1f3
--- /dev/null
+++ b/src/mp-video-service-ctrl.c
@@ -0,0 +1,495 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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"
+
+
+static service_h pAppSvcHandle = NULL;
+static int nPlayerType = MP_VIDEO_PLAYER_SIMPLE;
+static char szStreamingCookie[STR_LEN_MAX] = {0};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Internal Function
+
+bool MpVideoServiceCtrlCheckMime(service_h pVideoServiceHandle, char *szMediaUri)
+{
+ VideoLogInfo("");
+
+ if(!pVideoServiceHandle)
+ {
+ VideoLogInfo("[ERR] No Exist Service handle.");
+ return FALSE;
+ }
+
+ if(!szMediaUri)
+ {
+ VideoLogInfo("[ERR] No Exist media uri.");
+ 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)
+ {
+ strncpy(szMediaUri, szMimeContent, STR_LEN_MAX - 1);
+ 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 *pStrVideoURI = NULL;
+
+ if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_URI_PATH, &pStrVideoURI) != SERVICE_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] No exist KEY of video/streaming URI.");
+ bRet = FALSE;
+ }
+
+ if(pStrVideoURI)
+ {
+ strncpy(szMediaUri, pStrVideoURI, STR_LEN_MAX - 1);
+ VideoLogInfo("Video/Streaming URI path : %s", szMediaUri);
+ free(pStrVideoURI);
+ bRet = TRUE;
+ }
+ else
+ {
+ VideoLogInfo("[ERR] 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 *pStrVideoURI = (char*)malloc(sizeof(char) * STR_LEN_MAX);
+ char *pGetOperation = (char*)malloc(sizeof(char) * SVC_LEN_MAX);
+
+ service_get_operation(pVideoServiceHandle, &pGetOperation);
+ if(!strcmp(SERVICE_OPERATION_VIEW , pGetOperation))
+ {
+ service_get_uri(pVideoServiceHandle, &pStrVideoURI);
+ if(strlen(pStrVideoURI) > 1)
+ {
+ strncpy(szMediaUri, pStrVideoURI, STR_LEN_MAX - 1);
+ }
+ else
+ {
+ VideoLogInfo("[ERR] No exist video/streaming URI.");
+ return FALSE;
+ }
+ }
+ else
+ {
+ VideoLogInfo("[ERR] No exist Operation.");
+ return FALSE;
+ }
+
+ VideoLogInfo("Video/Streaming URI path pStrVideoURI : %s", pStrVideoURI);
+ VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s", szMediaUri);
+
+ free(pStrVideoURI);
+ free(pGetOperation);
+
+ return TRUE;
+}
+
+bool MpVideoServiceCtrlIsXMLUrl(char *szMediaUri)
+{
+ VideoLogInfo("URI : %s", szMediaUri);
+
+ if (!g_str_has_suffix(szMediaUri, ".xml")) {
+ VideoLogInfo("No have xml uri.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool MpVideoServiceCtrlGetUri(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", szMediaUri);
+
+ return TRUE;
+}
+
+int MpVideoServiceCtrlVideoUriType(char* szMediaUri)
+{
+ if(szMediaUri == NULL)
+ {
+ VideoLogInfo("[ERR]");
+ return MP_ERROR_PLAYER_TYPE;
+ }
+
+ VideoLogInfo("");
+
+ int nRet = 0;
+
+ if(strlen(szMediaUri) > 0)
+ {
+ if(MpUtilCheckPlayerType(szMediaUri))
+ {
+ VideoLogInfo("MP_STREAMING_PLAYER");
+ nRet = MP_STREAMING_PLAYER;
+ }
+ else
+ {
+ VideoLogInfo("MP_VIDEO_PLAYER");
+ nRet = MP_VIDEO_PLAYER;
+ }
+ }
+ else
+ {
+ VideoLogInfo("[ERR] No exist video/streaming URI. : MP_ERROR_PLAYER_TYPE");
+ return MP_ERROR_PLAYER_TYPE;
+ }
+
+ VideoLogInfo("pAppData->szMediaUri : %s", szMediaUri);
+
+ return nRet;
+}
+
+bool MpVideoServiceCtrlCheckCookieForStreaming(service_h pVideoServiceHandle, char* szCookie)
+{
+ if(!pVideoServiceHandle)
+ {
+ VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value.");
+ return FALSE;
+ }
+
+ if(!szCookie)
+ {
+ VideoLogInfo("[ERR] No allocate szCookie.");
+ 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)
+ {
+ strncpy(szCookie, pStrVideoCookie, STR_LEN_MAX - 1);
+ VideoLogInfo("Video/Streaming URI path Cookie : %s", szCookie);
+ free(pStrVideoCookie);
+ bRet = TRUE;
+ }
+ else
+ {
+ VideoLogInfo("[ERR] No exist video/streaming URI.");
+ bRet = FALSE;
+ }
+
+ return TRUE;
+}
+
+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; //char *szVideoTagName = (char*)malloc(sizeof(char) * SVC_LEN_MAX);
+
+ 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; //char *szLaunchingByOtherApp = (char*)malloc(sizeof(char) * SVC_LEN_MAX);
+
+ 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;
+ }
+ 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;
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// External Function
+
+void MpVideoServiceCtrlReset(void)
+{
+ VideoLogInfo("");
+
+ pAppSvcHandle = NULL;
+
+ memset(szStreamingCookie, 0, STR_LEN_MAX);
+}
+
+int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char* szMediaUri)
+{
+ if(!pAppServiceHandle)
+ {
+ VideoLogInfo("");
+ return MP_ERROR_PLAYER_TYPE;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoServiceCtrlReset();
+
+ pAppSvcHandle = (service_h)pAppServiceHandle;
+
+ if(!MpVideoServiceCtrlGetUri(pAppSvcHandle, szMediaUri))
+ {
+ VideoLogInfo("MP_ERROR_PLAYER_TYPE");
+ nPlayerType = MP_ERROR_PLAYER_TYPE;
+ return nPlayerType;
+ }
+
+ if(MpUtilIsXMLUrl(szMediaUri))
+ {
+ if(!MpUtilParsingXML(szMediaUri))
+ {
+ VideoLogInfo("[ERR] Fail to get streaming URI path from XML.");
+ nPlayerType = MP_ERROR_PLAYER_TYPE;
+ return nPlayerType;
+ }
+
+ VideoLogInfo("MP_STREAMING_PLAYER");
+ nPlayerType = MP_STREAMING_PLAYER;
+ return nPlayerType;
+ }
+
+ if(strlen(szMediaUri) > 0)
+ {
+ int nResultPlayerType = 0;
+
+ nResultPlayerType = MpVideoServiceCtrlVideoUriType(szMediaUri);
+
+ if(nResultPlayerType == MP_ERROR_PLAYER_TYPE)
+ {
+ VideoLogInfo("MP_ERROR_PLAYER_TYPE");
+ nPlayerType = MP_ERROR_PLAYER_TYPE;
+ }
+ else if(nResultPlayerType == MP_VIDEO_PLAYER)
+ {
+ nPlayerType = MpVideoServiceCtrlCheckLauncher(pAppSvcHandle);
+ }
+ else if(nResultPlayerType == MP_STREAMING_PLAYER)
+ {
+ nPlayerType = MP_STREAMING_PLAYER;
+ MpVideoServiceCtrlCheckCookieForStreaming(pAppSvcHandle, szStreamingCookie);
+ }
+ else
+ {
+ }
+ }
+
+ return nPlayerType;
+}
+
+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)
+ {
+ nPlayerType = nSetPlayerType;
+ }
+}
+
+char* MpVideoServiceCtrlGetCookieForStreaming(void)
+{
+ VideoLogInfo("");
+
+ if(strlen(szStreamingCookie) < 1)
+ {
+ VideoLogInfo("No exist streaming cookie.");
+ }
+
+ return 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 100644
index 0000000..3cb3856
--- /dev/null
+++ b/src/mp-video-sound-path-ctrl.c
@@ -0,0 +1,381 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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[MP_VIDEO_SOUND_PATH_NUM][STR_LEN_MAX];
+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;
+
+ for (nCount = 0; nCount < MP_VIDEO_SOUND_PATH_NUM; nCount++) {
+ memset(&szSoundPathItems[nCount][0], 0,
+ sizeof(char) * STR_LEN_MAX);
+ }
+
+ MpVideoSoundpathDeleteRadioButton();
+
+ if (pGenList) {
+ evas_object_del(pGenList);
+ pGenList = NULL;
+ }
+
+ if (pVideoSoundPathPopUpHandle) {
+ evas_object_del(pVideoSoundPathPopUpHandle);
+ pVideoSoundPathPopUpHandle = NULL;
+ }
+
+ MpUtilSetAlphaOfMainWindow(TRUE);
+}
+
+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][0]);
+ }
+
+ 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("");
+
+ 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_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;
+
+ strncpy(&szSoundPathItems[MP_SOUND_PATH_SPEAKER][0], MP_VIDEO_SOUND_PATH_SPEAKER, STR_LEN_MAX - 1);
+
+ if (MpUtilIsConnectEarjack()) {
+ VideoLogInfo("Connect earjack.");
+ bIsConnectEarjack = TRUE;
+ strncpy(&szSoundPathItems[MP_SOUND_PATH_EARJACK][0], MP_VIDEO_SOUND_PATH_EARJACK, STR_LEN_MAX - 1);
+ } else {
+ VideoLogInfo("No connect earjack.");
+ }
+
+ if (SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName)) {
+ VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+ } else {
+ if (bBluetoothConnect) {
+ VideoLogInfo("Connect szBluetoothName : %s", szBluetoothName);
+ bIsConnectBluetooth = TRUE;
+ strncpy(&szSoundPathItems[MP_SOUND_PATH_BLUETOOTH][0], szBluetoothName, STR_LEN_MAX - 1);
+ if(szBluetoothName) {
+ free(szBluetoothName);
+ szBluetoothName = NULL;
+ }
+ } else {
+ 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;
+ }
+}
+
+/*
+ * 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);
+
+ MpVideoSoundpathCurrentState();
+
+ pVideoSoundPathPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+ elm_object_style_set(pVideoSoundPathPopUpHandle, "min_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);
+
+ 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();
+}
+
+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;
+}
diff --git a/src/mp-video-streaming-ctrl.c b/src/mp-video-streaming-ctrl.c
new file mode 100755
index 0000000..117b1cd
--- /dev/null
+++ b/src/mp-video-streaming-ctrl.c
@@ -0,0 +1,813 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 char szNetworkProxy[STR_LEN_MAX] = {0};
+static char szNetworkIpAddress[STR_LEN_MAX] = {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_VPL_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");
+ break;
+
+ case MP_NETWORK_ON:
+ VideoLogInfo("MP_NETWORK_ON");
+ 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(pUserData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR:
+ VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+ if(pEcorePipeHandleForResume) {
+ if(!ecore_pipe_write(pEcorePipeHandleForResume,
+ pUserData, sizeof(pUserData))) {
+ 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(pUserData))) {
+ 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(pUserData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+ }
+ }
+ else {
+ if(pEcorePipeHandleForPause) {
+ if(!ecore_pipe_write(pEcorePipeHandleForPause,
+ pUserData, sizeof(pUserData))) {
+ 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;
+
+ memset(szNetworkIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+ 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;
+ }
+
+ strncpy(szNetworkIpAddress, szTmp, STR_LEN_MAX - 1);
+
+ VideoLogInfo("Network ip address : %s", szNetworkIpAddress);
+ }
+ 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(szNetworkIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+ strncpy(szNetworkIpAddress, szTmp, STR_LEN_MAX - 1);
+
+ memset(szRetIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+ strncpy(szRetIpAddress, szTmp, STR_LEN_MAX - 1);
+
+ VideoLogInfo("Current network ip address : %s", szNetworkIpAddress);
+
+ 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(szNetworkProxy, 0, sizeof(char) * STR_LEN_MAX);
+ strncpy(szNetworkProxy, szTmp, STR_LEN_MAX - 1);
+
+ memset(szRetProxy, 0, sizeof(char) * STR_LEN_MAX);
+ strncpy(szRetProxy, szTmp, STR_LEN_MAX - 1);
+
+ VideoLogInfo("Current network ip address : %s", szNetworkProxy);
+
+ if(szTmp)
+ free(szTmp);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool MpVideoStreamingCtrlIsNetworkOn(void)
+{
+ VideoLogInfo("");
+
+ int ntmpCheckNetworkON = 0;
+
+ if (!vconf_get_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, &ntmpCheckNetworkON)) {
+ switch(ntmpCheckNetworkON)
+ {
+ case MP_NETWORK_CLOSE:
+ VideoLogInfo("Network close.");
+ return FALSE;
+
+ case MP_NETWORK_ON:
+ VideoLogInfo("Network on.");
+ return TRUE;
+ }
+ } else {
+ VideoLogInfo("Network close.");
+ }
+
+ return FALSE;
+}
+
+int MpVideoStreamingCtrlGetNetworkStatus(void)
+{
+ VideoLogInfo("");
+
+ int ntmpGetNetworkStatus = 0;
+
+ if (!vconf_get_int(VCONFKEY_NETWORK_STATUS, &ntmpGetNetworkStatus)) {
+ switch(ntmpGetNetworkStatus)
+ {
+ case VCONFKEY_NETWORK_OFF:
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("MP_NETWORK_TYPE_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR:
+ nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
+ VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+ break;
+
+ case VCONFKEY_NETWORK_WIFI:
+ nNetworkStatus = MP_NETWORK_TYPE_WIFI;
+ VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+ break;
+
+ default:
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("MP_NETWORK_TYPE_OFF - default");
+ break;
+ }
+ } else {
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("MP_NETWORK_TYPE_OFF - invalid value");
+ }
+
+ return nNetworkStatus;
+}
+
+int MpVideoStreamingCtrlGetWifiState()
+{
+ VideoLogInfo("");
+
+ int ntmpGetWifiState = 0;
+
+ if (!vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &ntmpGetWifiState)) {
+ switch(ntmpGetWifiState)
+ {
+ case VCONFKEY_NETWORK_WIFI_OFF:
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
+ nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
+ VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
+ break;
+
+ case VCONFKEY_NETWORK_WIFI_CONNECTED:
+ nWifiState = MP_NETWORK_WIFI_CONNECTED;
+ VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
+ break;
+
+ default:
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
+ break;
+ }
+ } else {
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
+ }
+
+ return nWifiState;
+
+}
+
+int MpVideoStreamingCtrlGetCellularState()
+{
+ VideoLogInfo("");
+
+ int ntmpGetCellularState = 0;
+
+ if (!vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &ntmpGetCellularState)) {
+ switch(ntmpGetCellularState)
+ {
+ case VCONFKEY_NETWORK_CELLULAR_ON:
+ nCellularState = MP_NETWORK_CELLULAR_ON;
+ VideoLogInfo("MP_NETWORK_CELLULAR_ON");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
+ nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
+ VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
+ nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
+ VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
+ nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
+ break;
+
+ default:
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
+ break;
+ }
+ } else {
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
+ }
+
+ return nCellularState;
+}
+
+void MpVideoStreamingCtrlDestroy(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (pNetworkTimeoutTimer) {
+ ecore_timer_del(pNetworkTimeoutTimer);
+ pNetworkTimeoutTimer = NULL;
+ }
+
+ if(pEcorePipeHandleForPause) {
+ ecore_pipe_del(pEcorePipeHandleForPause);
+ pEcorePipeHandleForPause = NULL;
+ }
+
+ if(pEcorePipeHandleForResume) {
+ ecore_pipe_del(pEcorePipeHandleForResume);
+ pEcorePipeHandleForResume = NULL;
+ }
+}
+
+
+
+bool MpVideoStreamingCtrlInit(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ char szTmp[STR_LEN_MAX] = {0};
+ bool bNetworkState = FALSE;
+
+ if(bIsInitCallbackFunc == EINA_FALSE) {
+ MpVideoStreamingCtrlPipeInit(pUserData);
+
+ MpVideoStreamingCtrlSetNotifyNetworkStatus(pUserData);
+ MpVideoStreamingCtrlSetNotifyChangingIp(pUserData);
+ MpVideoStreamingCtrlSetNotifyWiFiState(pUserData);
+ MpVideoStreamingCtrlSetNotifyCellularState(pUserData);
+
+ bIsInitCallbackFunc = EINA_TRUE;
+ }
+
+ if (pNetworkTimeoutTimer) {
+ ecore_timer_del(pNetworkTimeoutTimer);
+ pNetworkTimeoutTimer = NULL;
+ }
+
+ switch(MpVideoStreamingCtrlGetNetworkStatus())
+ {
+ case MP_NETWORK_TYPE_OFF:
+ VideoLogInfo("MP_NETWORK_TYPE_OFF");
+ pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT,
+ MpVideoStreamingCtrlPopupCb,
+ pAppData);
+ bNetworkState = FALSE;
+ break;
+
+ case MP_NETWORK_TYPE_CELLULAR:
+ VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+ if(MpVideoStreamingCtrlGetCellularState() == MP_NETWORK_CELLULAR_ON)
+ bNetworkState = TRUE;
+ break;
+
+ case MP_NETWORK_TYPE_WIFI:
+ VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+ if(MpVideoStreamingCtrlGetWifiState() == MP_NETWORK_WIFI_CONNECTED)
+ bNetworkState = TRUE;
+ break;
+ }
+
+ if(bNetworkState) {
+ MpVideoStreamingCtrlGetIpAddress(szTmp);
+ VideoLogInfo("Current IP Address : %s", szTmp);
+
+ memset(szTmp, 0, STR_LEN_MAX);
+ MpVideoStreamingCtrlGetProxy(szTmp);
+ VideoLogInfo("Current Proxy Address : %s", szTmp);
+
+ memset(pAppData->szProxyAddress, 0, STR_LEN_MAX);
+ strncpy(pAppData->szProxyAddress, szTmp, STR_LEN_MAX - 1);
+ }
+
+ return bNetworkState;
+}
diff --git a/src/mp-video-streaming-view.c b/src/mp-video-streaming-view.c
new file mode 100644
index 0000000..3857621
--- /dev/null
+++ b/src/mp-video-streaming-view.c
@@ -0,0 +1,679 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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-sound-path-ctrl.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 *pStreamingViewProgressbarEdj = NULL;
+static Evas_Object *pStreamingSoundpathButton = 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 bIsStreamingViewOnlyAudio = FALSE;
+static VideoStreamingViewState nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+static int nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+
+
+/*
+ * Callback function.
+ */
+static void MpVideoStreamingViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpUtilDeletePopupHandle();
+}
+
+static void MpVideoStreamingViewSoundPathCb(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.", MpVideoStreamingViewWarningPopupCb);
+ }
+}
+
+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("");
+}
+
+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 MpVideoStreamingViewChangedEarjackCb(void *pNode, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoSoundpathHide();
+ MpUtilDeletePopupHandle();
+
+ if (MpUtilIsConnectEarjack()) {
+ VideoLogInfo("Connect earjack.");
+ if (pStreamingSoundpathButton) {
+ elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_right_btn", pStreamingSoundpathButton);
+ } else {
+ pStreamingSoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoStreamingViewSoundPathCb);
+ elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_right_btn", pStreamingSoundpathButton);
+ }
+ } else {
+ VideoLogInfo("Disconnect earjack.");
+
+ if (pStreamingSoundpathButton) {
+ evas_object_del(pStreamingSoundpathButton);
+ pStreamingSoundpathButton = NULL;
+ }
+
+ elm_object_item_part_content_unset(pNaviFrameItemStreamingView, "title_right_btn");
+ }
+}
+
+
+/*
+ * 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);
+
+ 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);
+
+ MpUtilRegisteEarjackCbFunc((void *)MpVideoStreamingViewChangedEarjackCb, 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");
+
+ if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+ pStreamingSoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoStreamingViewSoundPathCb);
+ elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_right_btn", pStreamingSoundpathButton);
+ }
+
+ MpVideoStreamingViewShowControlPanel(pUserData);
+}
+
+void MpVideoStreamingViewPop(void *pNaviFrame, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ 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 (pStreamingSoundpathButton) {
+ evas_object_del(pStreamingSoundpathButton);
+ pStreamingSoundpathButton = NULL;
+ }
+
+ bIsStreamingViewScreenLock = FALSE;
+ bIsStreamingViewOnlyAudio = FALSE;
+
+ bSwitchStreamingViewUI = TRUE;
+ nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+ nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+}
+
+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.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);
+
+ 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();
+ MpVideoStreamingViewUnlockScreen(pUserData);
+}
+
+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();
+
+ evas_object_hide(_EDJ(pStreamingViewLayout));
+
+ 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(int nRotateMode)
+{
+ VideoLogInfo("");
+
+ if (MpVideoStreamingViewGetBufferingState())
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
+ else
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
+}
+
+void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate)
+{
+ VideoLogInfo("nSetBufferingRate : %d", 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 MpVideoStreamingViewLockScreen(void* pUserData)
+{
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+
+ bIsStreamingViewScreenLock = TRUE;
+}
+
+void MpVideoStreamingViewUnlockScreen(void* pUserData)
+{
+ VideoLogInfo("");
+
+ bIsStreamingViewScreenLock = FALSE;
+}
+
+bool MpVideoStreamingViewGetScreenLockState(void)
+{
+ VideoLogInfo("");
+
+ return bIsStreamingViewScreenLock;
+}
+
+void MpVideoStreamingViewPortrate(void)
+{
+ VideoLogInfo("");
+
+ elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
+ edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
+ edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_PORTRATE_MODE, "*");
+}
+
+void MpVideoStreamingViewLandscape(void)
+{
+ VideoLogInfo("");
+
+ elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
+ edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
+ edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE, "*");
+}
+
+void MpVideoStreamingViewUpdateProgressBar(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ MpVideoProgressbarCreateTimer(pUserData);
+
+}
+
diff --git a/src/mp-video-subtitle-ctrl.c b/src/mp-video-subtitle-ctrl.c
new file mode 100755
index 0000000..dbffafc
--- /dev/null
+++ b/src/mp-video-subtitle-ctrl.c
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 <mm_sound.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-subtitle-ctrl.h"
+
+#define MP_VIDEO_SUBTITLE_MENU_NUM 2
+#define VCONFKEY_GALLERY_SUBTITLE_STATE "db/setting/gallery/subtitle_state" //boolean
+
+static int bSubtitleSettingState = FALSE;
+static bool bExistSubtitleFile = FALSE;
+static char szSubtitleFileUri[STR_LEN_MAX] = { 0 };
+
+static char szSubTitleExtWildkey[MP_SUBTITLE_TYPE_MAX][STR_LEN_MAX] = { ".srt", ".sub", ".smi" };
+
+
+/*
+ * Internal function
+ */
+bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath)
+{
+ if (!bSubtitleSettingState) {
+ VideoLogInfo("Subtitle .");
+ return FALSE;
+ }
+
+ 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;
+ memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+
+ for (nCount = 0; nCount < MP_SUBTITLE_TYPE_MAX; nCount++) {
+ nStrLength = strcspn(szMediaUriPath, ".");
+ strncpy(szSubtitleFileUri, szMediaUriPath, nStrLength);
+ strcat(szSubtitleFileUri, szSubTitleExtWildkey[nCount]);
+
+ 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 MpVideoSubtitleCtrlClear(void)
+{
+ VideoLogInfo("");
+
+ bExistSubtitleFile = FALSE;
+ bSubtitleSettingState = FALSE;
+
+ memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+}
+
+static void MpVideoSubtitleCtrlStateChangeCb(keynode_t *pKeyNode, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!vconf_get_bool(VCONFKEY_GALLERY_SUBTITLE_STATE, &bSubtitleSettingState)) {
+ if (!bSubtitleSettingState) {
+ VideoLogInfo("Subtitle OFF.");
+ } else {
+ VideoLogInfo("Subtitle ON.");
+ }
+ } else {
+ VideoLogInfo("Fail to get vconf - subtitle.");
+ }
+}
+
+/*
+ * External function
+ */
+bool MpVideoSubtitleCtrlInit(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogInfo("[ERR]No have pUserData");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoSubtitleCtrlClear();
+
+ if (pAppData->nCurPlayerType != MP_VIDEO_PLAYER) {
+ VideoLogInfo("Current player type is not video player.");
+ return FALSE;
+ }
+
+ if (!vconf_get_bool(VCONFKEY_GALLERY_SUBTITLE_STATE, &bSubtitleSettingState)) {
+ if (!bSubtitleSettingState) {
+ VideoLogInfo("Subtitle OFF.");
+ } else {
+ VideoLogInfo("Subtitle ON.");
+ }
+ } else {
+ VideoLogInfo("Fail to get vconf - subtitle.");
+ }
+
+ if (vconf_notify_key_changed(VCONFKEY_GALLERY_SUBTITLE_STATE, MpVideoSubtitleCtrlStateChangeCb, pAppData)) {
+ VideoLogInfo("[ERR] Fail to resiste subtitle notification callback.");
+ }
+
+ return MpVideoSubtitleCtrlCheckSubtitleFile(pAppData->szMediaUri);
+}
+
+void MpVideoSubtitleCtrlDestroy(void)
+{
+ VideoLogInfo("");
+
+ MpVideoSubtitleCtrlClear();
+}
+
+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;
+}
diff --git a/src/mp-video-view-mgr.c b/src/mp-video-view-mgr.c
new file mode 100755
index 0000000..990c10d
--- /dev/null
+++ b/src/mp-video-view-mgr.c
@@ -0,0 +1,1167 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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-info-view.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"
+
+#define MULTIMEDIA_KEY_LONG_PRESS_INTERVAL 4.0
+#define DETAIL_POPUP_STR_LEN_MAX 20
+
+static Evas_Object *pMainLayout = NULL;
+static Evas_Object *pBackGround = NULL;
+static Evas_Object *pNaviFrame = NULL;
+
+static Evas_Object *pGesture = NULL;
+static Evas_Object *pEventRect = 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 Ecore_Timer *pLongPressSpeedPlayingTimer = NULL;
+
+static bool bShowLayout = FALSE;
+
+static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData);
+static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData);
+static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData);
+
+/*
+ * Callback function.
+ */
+
+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, POWER_KEY))
+ {
+ VideoLogInfo("Power key");
+ if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME)
+ {
+ 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(MpVideoDisplayViewGetScreenLockState() == FALSE)
+ {
+ MpVideoDisplayViewLockScreen(pUserData);
+ }
+ else
+ {
+ MpVideoDisplayViewUnlockScreen(pUserData);
+ }
+ }
+ else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+ {
+ if(MpVideoStreamingViewGetScreenLockState() == FALSE)
+ {
+ MpVideoStreamingViewLockScreen(pUserData);
+ }
+ else
+ {
+ MpVideoStreamingViewUnlockScreen(pUserData);
+ }
+ }
+ else
+ {
+ MpUtilLcdOffForPowerButton();
+ }
+ }
+ else
+ {
+ 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.");
+ bIsKeyCancle = FALSE;
+ return EINA_FALSE;
+ }
+
+ if(!strcmp(pKeyEvent->keyname, END_KEY))
+ {
+ VideoLogInfo("End key up");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ }
+ else if(!strcmp(pKeyEvent->keyname, HOME_KEY))
+ {
+ VideoLogInfo("Home key up");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ }
+ 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");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia(pAppData);
+ }
+ else if(!strcmp(pKeyEvent->keyname, PREV_KEY))
+ {
+ VideoLogInfo("Prev key up");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia(pAppData);
+ }
+ 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, pUserData);
+}
+
+static Evas_Object *MpVideoViewCtrlCreateBg(Evas_Object *pWindow)
+{
+ Evas_Object *pBg = elm_bg_add(pWindow);
+ evas_object_size_hint_weight_set(pBg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_bg_color_set(pBg, 0, 0, 0);
+ elm_win_resize_object_add(pWindow, pBg);
+
+ return pBg;
+}
+
+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");
+
+ evas_object_size_hint_weight_set(pMainLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_win_resize_object_add(pParent, pMainLayout);
+
+ pBackGround = MpVideoViewCtrlCreateBg(pParent);
+
+ evas_object_show(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 *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");
+ MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+ break;
+
+ case MP_VIDEO_PLAYER_SIMPLE:
+ VideoLogInfo("MP_VIDEO_PLAYER_SIMPLE");
+ MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+ break;
+
+ case MP_VIDEO_PLAYER_EMAIL:
+ VideoLogInfo("MP_VIDEO_PLAYER_EMAIL");
+ MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+ break;
+
+ case MP_VIDEO_PLAYER_MMS:
+ VideoLogInfo("MP_VIDEO_PLAYER_MMS");
+ MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+ break;
+
+ case MP_VIDEO_PLAYER_GALLERY:
+ VideoLogInfo("MP_VIDEO_PLAYER_GALLERY");
+ MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+ break;
+
+ case MP_STREAMING_PLAYER:
+ VideoLogInfo("MP_STREAMING_PLAYER");
+ MpVideoStreamingViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
+ break;
+
+ default:
+ VideoLogInfo("[ERR] No exist player tpye.");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ }
+}
+
+static void MpVideoViewCtrlShowNaviFrame(void)
+{
+ VideoLogInfo("");
+
+ if(pNaviFrame)
+ {
+ elm_object_part_content_set(pMainLayout, "elm.swallow.content", pNaviFrame);
+ evas_object_show(pNaviFrame);
+ }
+}
+
+static void MpVideoViewCtrlHideNaviFrame(void)
+{
+ VideoLogInfo("");
+
+ if(pNaviFrame)
+ {
+ elm_object_part_content_unset(pMainLayout, "elm.swallow.content");
+ evas_object_hide(pNaviFrame);
+ }
+}
+
+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;
+
+ 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);
+
+ MpVideoViewCtrlCreateMainLayout(pAppData->pMainWindow);
+ MpVideoViewCtrlCreateEventRect((void *)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();
+
+ MpVideoInfoViewDestroy();
+
+ 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(pNaviFrame)
+ {
+ evas_object_del(pNaviFrame);
+ pNaviFrame = NULL;
+ }
+
+ if(pLongPressSpeedPlayingTimer)
+ {
+ ecore_timer_del(pLongPressSpeedPlayingTimer);
+ pLongPressSpeedPlayingTimer = NULL;
+ }
+
+ if(pBackGround)
+ {
+ evas_object_del(pBackGround);
+ pBackGround = NULL;
+ }
+
+ bIsLongPressForward = FALSE;
+ bIsKeyCancle = FALSE;
+
+ nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL;
+}
+
+void MpVideoViewCtrlSetRotation(int nRotateMode, 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);
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen(pAppData, nVideoRotateType);
+
+ MpUtilRotateWindow(nVideoRotateType, pAppData->pMainWindow);
+
+ 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();
+ }
+ else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE)
+ {
+ MpVideoDisplayViewLandscape();
+ }
+ }
+ else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+ {
+ MpVideoStreamingViewRotation(nVideoRotateType);
+ }
+ else
+ {
+ }
+}
+
+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);
+ }
+ else
+ {
+ }
+}
+
+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();
+ }
+ else
+ {
+ }
+}
+
+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();
+ }
+ else
+ {
+ }
+}
+
+void MpVideoViewShowLayout(void *pUserData)
+{
+ if(!pUserData)
+ {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ 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(!MpVideoDisplayViewGetScreenLockState())
+ {
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+ MpVideoViewCtrlShowNaviFrame();
+ bShowLayout = TRUE;
+
+ MpVideoDisplayViewActivate();
+ MpVideoDisplayViewShowControlPanel(pUserData);
+ }
+ }
+ else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+ {
+ if(!MpVideoStreamingViewGetScreenLockState())
+ {
+ 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();
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+ bShowLayout = FALSE;
+
+ MpVideoViewCtrlHideNaviFrame();
+
+ 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 MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void *pUserData)
+{
+ if(!pUserData)
+ {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
+
+ if(nTmpPlayerType == MP_STREAMING_PLAYER)
+ {
+ if(MpUtilCheckRTSPType(pAppData->szMediaUri))
+ {
+ if(nSetBufferingRate == 0)
+ {
+ MpVideoStreamingViewSetBufferingRate(-1);
+ }
+ else
+ {
+ MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
+ }
+ }
+ else
+ {
+ if(nSetBufferingRate >= 0)
+ {
+ MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
+ }
+ }
+ }
+}
+
+void MpVideoViewHideSoundpath(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)
+ {
+ MpVideoDisplayViewHideSoundpath();
+ }
+}
+
+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)
+ {
+ MpVideoDisplayViewChangeNaviFrameTitle(pUserData);
+ }
+ else
+ {
+ }
+}
+
+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)
+{
+ VideoLogInfo("");
+
+ return MpVideoDisplayViewIsPauseByUser();
+}
diff --git a/src/mp-xml-parser.c b/src/mp-xml-parser.c
new file mode 100755
index 0000000..354df18
--- /dev/null
+++ b/src/mp-xml-parser.c
@@ -0,0 +1,374 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 <glib.h>
+#include <string.h>
+#include <libxml/parser.h>
+
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-xml-parser.h"
+
+#define MAX_YT_FORMAT 10
+
+/*
+ * format of Youtube content
+ *
+ * 1 : rtsp | video/3gpp | H.263 / AMR audio |
+ * 176 * 144
+ * 2 : http | video/3gpp | MPEG4 / MPEG4 AAC / 22050 |
+ * 176 * 144
+ * 3 : http | video/mp4| H.264 / AVC / MPEG4 AAC / 44100 |
+ * 480 * 270 / 480 * 360
+ * 5 : http | application/x-shockwave-flash
+ * 6 : rtsp | video/3gpp | MPEG4 / AAC audio |
+ * 176 * 144
+ * 9 : http | video/3gpp | MPEG4 / MPEG4 AAC |
+ * 320 * 240
+ * 10 : rtsp | video/3gpp
+*/
+
+static bool bInitXML = false;
+static bool _parse_url_with_format(const char *content, int length, int format,
+ char **streamer_url);
+
+void mp_xml_init()
+{
+ if (!bInitXML) {
+ xmlInitParser();
+ bInitXML = true;
+ }
+
+}
+
+void mp_xml_destroy()
+{
+ if (bInitXML)
+ xmlCleanupParser();
+}
+
+unsigned int mp_read_xml_file(const char *file_name, char **data)
+{
+ unsigned int file_size = 0;
+ FILE *fp = fopen(file_name, "r");
+ if (!fp) {
+ VideoLogInfo("file open failed!");
+ return 0;
+ }
+
+ fseek(fp, 0, SEEK_END); /* move to end */
+ file_size = ftell(fp);
+ VideoLogInfo("file_size of xml = %d", file_size);
+ fseek(fp, 0, SEEK_SET); /* move to start */
+
+ *data = (char *)malloc(file_size);
+ if (*data == NULL) {
+ VideoLogInfo("memory allocation failed!");
+ fclose(fp);
+ return 0;
+ }
+
+ unsigned int nReadCounter = fread(*data, file_size, 1, fp);
+ VideoLogInfo("nReadCounter : %d", nReadCounter);
+ fclose(fp);
+
+ return file_size;
+}
+
+/* 3: http | video/mp4 | H.264 / AVC / MPEG4 AAC / 44100 |
+480 * 270 / 480 * 360 */
+
+/* 9: http | video/3gpp | MPEG4 / MPEG4 AAC |
+320 * 240 */
+
+/* 2: http | video/3gpp | MPEG4 / MPEG4 AAC / 22050 |
+176 * 144 */
+
+/* 10: rtsp | video/3gpp */
+
+/* 6: rtsp | video/3gpp | MPEG4 / AAC audio |
+176 * 144 */
+
+/* 1: rtsp | video/3gpp | H.263 / AMR audio |
+176 * 144 */
+
+int mp_get_xmlitem(const char *content, int length, MpXMLItemInfo * item,
+ int *nHttpCount, int *nRtspCount)
+{
+ int xml_order_of_format[MAX_YT_FORMAT] = { 3,
+ 9,
+ 2,
+ 10,
+ 6,
+ 1,
+ 0,
+ };
+
+ int index = 0;
+ char *url = NULL;
+ bool result = false;
+ int insert_item = 0;
+ int http_cnt = 0;
+ int rtsp_cnt = 0;
+ int item_cnt = 0;
+ while (xml_order_of_format[index] != 0) {
+ result =
+ _parse_url_with_format(content, length,
+ xml_order_of_format[index], &url);
+ if (result == false)
+ return -1;
+
+ if (url != NULL) {
+ memcpy(item[item_cnt].szURL, url, strlen(url) + 1);
+ item[item_cnt].id = xml_order_of_format[index];
+ if (xml_order_of_format[index] != 10 &&
+ xml_order_of_format[index] != 6 &&
+ xml_order_of_format[index] != 1) {
+ item[item_cnt].streaming_type =
+ MP_HTTP_STREAMING;
+ http_cnt++;
+ } else {
+ item[item_cnt].streaming_type =
+ MP_RTSP_STREAMING;
+ rtsp_cnt++;
+ }
+
+ printf("[%d] : %s\n", item[item_cnt].id,
+ item[item_cnt].szURL);
+ if (url) {
+ free(url);
+ url = NULL;
+ }
+ insert_item++;
+ item_cnt++;
+ }
+ index++;
+ }
+ *nHttpCount = http_cnt;
+ *nRtspCount = rtsp_cnt;
+ return insert_item;
+}
+
+bool mp_get_url_from_xml(const char *content, int length, char **streamer_url,
+ int mode)
+{
+ bool result = false;
+ int index = 1;
+
+ /* disable http for field test. must remove comment later.
+ (request from yoserb.yi) */
+ int wifi_order_of_format[MAX_YT_FORMAT] = {
+ 3,
+ 9,
+ 2,
+ 10,
+ 6,
+ 1,
+ 0,
+ };
+
+ int order_of_format[MAX_YT_FORMAT] = {
+ 9,
+ 10,
+ 2,
+ 6,
+ 1,
+ 0,
+ };
+
+ if (mode == _WIFI_MODE_) {
+ index = 0;
+ while (wifi_order_of_format[index] != 0) {
+ result = _parse_url_with_format(content, length,
+ wifi_order_of_format
+ [index], streamer_url);
+ if (result == false)
+ return false;
+
+ if (*streamer_url != NULL) {
+ VideoLogInfo
+ ("success to parse url (yt_format = %d)",
+ wifi_order_of_format[index]);
+ return true;
+ } else {
+ VideoLogInfo("no url for yt_format %d",
+ wifi_order_of_format[index]);
+ index++;
+ }
+ }
+
+ } else {
+ if (mode == _3G_MODE_)
+ index = 0;
+
+ VideoLogInfo("mode: 0x%x, index: %d", mode, index);
+ while (order_of_format[index] != 0) {
+ result = _parse_url_with_format(content, length,
+ order_of_format[index],
+ streamer_url);
+ if (result == false)
+ return false;
+
+ if (*streamer_url != NULL) {
+ VideoLogInfo
+ ("success to parse url (yt_format = %d)",
+ order_of_format[index]);
+ return true;
+ } else {
+ VideoLogInfo("no url for yt_format %d",
+ order_of_format[index]);
+ index++;
+ }
+ }
+ }
+ VideoLogInfo("can't find url to play!");
+ return false;
+}
+
+bool _parse_url_with_format(const char *content, int length, int format,
+ char **streamer_url)
+{
+ char video_url[1024] = "\0";
+ xmlDocPtr doc = NULL;
+ xmlNode *current = NULL;
+
+ doc = xmlReadMemory(content, length, NULL, NULL, 0);
+ if (doc == NULL) {
+ VideoLogInfo("Failed to parse document\n");
+ xmlFreeDoc(doc);
+ xmlMemoryDump();
+
+ return false;
+ }
+
+ xmlChar *url, *yt_format;
+ current = xmlDocGetRootElement(doc);
+ current = current->xmlChildrenNode;
+ while (current != NULL) {
+ if ((!xmlStrcmp(current->name, (const xmlChar *)"group"))) {
+ xmlNodePtr current_group = current->xmlChildrenNode;
+ while (current_group != NULL) {
+ if (!xmlStrcmp(current_group->name,
+ (const xmlChar *)"content")) {
+ yt_format = xmlGetProp(current_group,
+ (const xmlChar *)
+ "format");
+ if (yt_format != NULL && format ==
+ atoi((char *)yt_format)) {
+ url =
+ xmlGetProp(current_group,
+ (const xmlChar *)
+ "url");
+ strncpy(video_url,
+ (const char *)url,
+ sizeof(video_url) - 1);
+ xmlFree(url);
+ xmlFree(yt_format);
+ break;
+ }
+ xmlFree(yt_format);
+ }
+ current_group = current_group->next;
+ }
+ break;
+ }
+ current = current->next;
+ }
+
+ xmlFreeDoc(doc);
+ xmlMemoryDump();
+
+ if (strlen(video_url)) {
+ *streamer_url = (char *)calloc(1, strlen(video_url) + 1);
+ memcpy(*streamer_url, video_url, strlen(video_url) + 1);
+ }
+
+ return true;
+}
+
+char *mp_get_title_from_xml(const char *path)
+{
+ char *content = NULL;
+ unsigned int length = 0;
+
+ if (!path)
+ return NULL;
+
+ if (!g_str_has_suffix(path, ".xml"))
+ return NULL;
+
+ length = mp_read_xml_file(path, &content);
+ if (length == 0 || content == NULL) {
+ free(content);
+ return NULL;
+ }
+
+ char title[1024] = "\0";
+ xmlDocPtr doc = NULL;
+ xmlNode *current = NULL;
+
+ doc = xmlReadMemory(content, length, NULL, NULL, 0);
+ if (doc == NULL) {
+ VideoLogInfo("Failed to parse document\n");
+ xmlFreeDoc(doc);
+ xmlMemoryDump();
+
+ return NULL;
+ }
+
+ xmlChar *xml_title = NULL;
+ current = xmlDocGetRootElement(doc);
+ current = current->xmlChildrenNode;
+ while (current != NULL) {
+ if ((!xmlStrcmp(current->name, (const xmlChar *)"group"))) {
+ xmlNodePtr current_group = current->xmlChildrenNode;
+ while (current_group != NULL) {
+ if (!xmlStrcmp
+ (current_group->name,
+ (const xmlChar *)"title")) {
+ xml_title =
+ xmlNodeGetContent(current_group);
+ if (xml_title) {
+ strncpy(title,
+ (const char *)xml_title,
+ sizeof(title) - 1);
+ VideoLogInfo("xml_title=%x ",
+ xml_title);
+ xmlFree(xml_title);
+ }
+ break;
+ }
+ current_group = current_group->next;
+ }
+ break;
+ }
+ current = current->next;
+ }
+
+ xmlFreeDoc(doc);
+ xmlMemoryDump();
+
+ free(content);
+
+ if (strlen(title))
+ return strdup(title);
+ else
+ return NULL;
+
+}
diff --git a/src/video-player.c b/src/video-player.c
new file mode 100644
index 0000000..8ed34c8
--- /dev/null
+++ b/src/video-player.c
@@ -0,0 +1,306 @@
+/*
+ * 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 [2012] [JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>]
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.tizenopensource.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 bool bIsForeground = FALSE;
+
+
+static bool appCreate(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+#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();
+ MpUtilLanguageInit(pAppData);
+
+ 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;
+
+ if(!pAppSvcHandle)
+ {
+ VideoLogInfo("[ERR] No exist pBundle.");
+ bIsForeground = FALSE;
+ MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+ return;
+ }
+
+ if(strlen(pAppData->szMediaUri) > 0)
+ {
+ MpVideoAppCtrlResetForRelaunching(pAppData);
+ }
+
+ if(pAppData->pMainWindow == NULL)
+ {
+ VideoLogInfo("Create main window.");
+ pAppData->pMainWindow = (Evas_Object *)MpUtilCreateMainWindow(PACKAGE);
+ evas_object_show(pAppData->pMainWindow);
+ }
+
+ MpUtilSetKeyGrab(HOME_KEY, KEY_GRAB_SHARED);
+ MpUtilMediaSvcInitSession();
+
+ if(MpVideoServiceCtrlInitServiceParser((void*)pAppSvcHandle, pAppData->szMediaUri) == MP_ERROR_PLAYER_TYPE)
+ {
+ VideoLogInfo("[ERR] Fail to init service parser.");
+ bIsForeground = FALSE;
+ MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+ return;
+ }
+
+ if(!MpUtilMMCstatusNoti(pAppData))
+ {
+ VideoLogInfo("[ERR] Fail to set MMC notification.");
+ bIsForeground = FALSE;
+ MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+ return;
+ }
+
+
+ if(!MpUtilBatteryStatusNoti(pAppData))
+ {
+ VideoLogInfo("[ERR] Fail to set Battery notification.");
+ bIsForeground = FALSE;
+ MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+ return;
+ }
+
+ MpUtilVolumeTypeSet();
+
+ MpVideoAppCtrlInit(pAppData);
+}
+
+static void appExit(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ MpUtilLcdOffForPowerButton();
+
+ MpUtilSetKeyUngrab(HOME_KEY);
+ MpUtilMultimediaKeyUngrab();
+ MpUtilMMCstatusNotiIgnore();
+ MpUtilBatteryStatusNotiIgnore();
+ MpUtilVolumeTypeUnset();
+ MpUtilFinishSession();
+ MpUtilDeletePopupHandle();
+ MpUtilMediaSvcDestoryVideoList();
+ MpUtilMediaSvcFinishSession();
+ MpUtilDestroyXML();
+
+ bIsForeground = FALSE;
+ MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+}
+
+static void appPause(void *pUserData)
+{
+ if(!pUserData)
+ {
+ VideoLogInfo("No exist pUserdata handle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ 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.VideoAppCtrlStopByAppPause(pAppData);
+ }
+ else if(nTmpPlayerType == MP_STREAMING_PLAYER)
+ {
+ VideoLogInfo("Pause application at streaming player.");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ }
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+
+ MpUtilDeletePopupHandle();
+ MpUtilVolumeTypeUnset();
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+ bIsForeground = FALSE;
+ MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+}
+
+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;
+ }
+
+ if(!MpVideoAppCtrlIsTopView(pUserData))
+ {
+ VideoLogInfo("Overlay is not staied in top.");
+ return;
+ }
+
+ VideoLogInfo("Resume application.");
+
+ if(MpVideoAppCtrlIsExistPlayerHandle())
+ {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+ }
+ else
+ {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData);
+ }
+
+ MpUtilVolumeTypeSet();
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+ bIsForeground = TRUE;
+ MpVideoAppCtrlSetForCheckingForegroundwindow(TRUE);
+}
+
+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[])
+{
+ struct timeval TimeVal;
+ gettimeofday(&TimeVal, NULL);
+
+ VideoLogInfo("======================================================");
+ VideoLogInfo(" Measuring exec() launching time - %ld:%ldus", TimeVal.tv_sec, TimeVal.tv_usec);
+ VideoLogInfo("======================================================");
+
+ 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;
+}