From c9ff00e63ae998df18471ab15a735ab989296d51 Mon Sep 17 00:00:00 2001 From: HyungKyu Song Date: Sat, 16 Feb 2013 00:01:22 +0900 Subject: [PATCH] Tizen 2.0 Release --- CMakeLists.txt | 218 + LICENSE.Flora | 205 + NOTICE | 3 + include/mp-drm-ctrl.h | 72 + include/mp-external-ug.h | 47 + include/mp-util-media-service.h | 123 + include/mp-util.h | 94 + include/mp-video-animation-ctrl.h | 33 + include/mp-video-app-ctrl.h | 35 + include/mp-video-ctrl-mgr.h | 54 + include/mp-video-display-view.h | 54 + include/mp-video-info-ctrl.h | 23 + include/mp-video-info-view.h | 27 + include/mp-video-log.h | 57 + include/mp-video-player-mgr.h | 125 + include/mp-video-progressbar.h | 32 + include/mp-video-service-ctrl.h | 48 + include/mp-video-sound-path-ctrl.h | 27 + include/mp-video-streaming-ctrl.h | 39 + include/mp-video-streaming-view.h | 52 + include/mp-video-string-define.h | 166 + include/mp-video-subtitle-ctrl.h | 39 + include/mp-video-type-define.h | 169 + include/mp-video-value-define.h | 505 ++ include/mp-video-view-mgr.h | 47 + include/mp-video-volume-ctrl.h | 31 + include/video-player.h | 121 + org.tizen.video-player.manifest | 11 + org.tizen.video-player.xml | 63 + packaging/org.tizen.video-player.spec | 93 + res/edc/add_tag.edc | 346 ++ res/edc/animation.edc | 299 ++ res/edc/control.edc | 1167 +++++ res/edc/custom/vp-naviframe-custom.edc | 901 ++++ res/edc/detail.edc | 34 + res/edc/hidden_button_panel.edc | 187 + res/edc/image_res.edc | 137 + res/edc/main.edc | 557 +++ res/edc/multi_win.edc | 69 + res/edc/option_button.edc | 326 ++ res/edc/panel.edc | 155 + res/edc/popup_progressbar.edc | 263 ++ res/edc/progress.edc | 459 ++ res/edc/progress_trim.edc | 291 ++ res/edc/setting.edc | 33 + res/edc/subtitle.edc | 419 ++ res/edc/subtitle_sync.edc | 415 ++ res/edc/vp-button-white.edc | 504 ++ res/edc/vp-button.edc | 1069 +++++ res/edc/vp-chapter-view.edc | 757 +++ res/edc/vp-check.edc | 1318 ++++++ res/edc/vp-controlbar.edc | 760 +++ res/edc/vp-ctxpopup.edc | 1764 +++++++ res/edc/vp-custom-winset-style.edc | 12 + res/edc/vp-layout.edc | 377 ++ res/edc/vp-naviframe.edc | 4830 ++++++++++++++++++++ res/edc/vp-naviframe_white.edc | 853 ++++ res/edc/vp-nocontents.edc | 72 + res/edc/vp-progressbar-list.edc | 584 +++ res/edc/vp-speedbox-popup.edc | 314 ++ res/edc/vp-toolbar.edc | 1733 +++++++ res/edc/vp-volume-popup.edc | 318 ++ res/edc/vp_font.edc | 28 + res/images/00_Option_header_bt.png | Bin 0 -> 3040 bytes res/images/00_Option_header_bt_dim.png | Bin 0 -> 3014 bytes res/images/00_Option_header_bt_press.png | Bin 0 -> 2993 bytes res/images/00_button_01_normal.png | Bin 0 -> 3068 bytes res/images/00_button_01_normal_dim.png | Bin 0 -> 3060 bytes res/images/00_button_01_normal_press.png | Bin 0 -> 3089 bytes res/images/00_check_bg_dim.png | Bin 0 -> 2890 bytes res/images/00_grid_select_check.png | Bin 0 -> 4247 bytes res/images/00_sweep_list_bg.png | Bin 0 -> 2799 bytes res/images/00_winset_btn_prev.png | Bin 0 -> 3258 bytes res/images/00_winset_btn_prev_press.png | Bin 0 -> 349 bytes res/images/00_winset_control_top_arrow.png | Bin 0 -> 3163 bytes res/images/00_winset_list_progress_bg.png | Bin 0 -> 2803 bytes res/images/00_winset_thumbs_bg.png | Bin 0 -> 3233 bytes res/images/00_winset_thumbs_focus_bg.png | Bin 0 -> 3114 bytes res/images/00_winset_thumbs_loading_bg.png | Bin 0 -> 3208 bytes res/images/01_controlbar_icon_delete.png | Bin 0 -> 3072 bytes res/images/01_controlbar_icon_set_as.png | Bin 0 -> 3215 bytes res/images/01_controlbar_icon_share.png | Bin 0 -> 3220 bytes res/images/01_header_icon_add.png | Bin 0 -> 2999 bytes res/images/01_header_icon_cancel.png | Bin 0 -> 2980 bytes res/images/01_header_icon_others.png | Bin 0 -> 2934 bytes res/images/12_music_player_sound_path.png | Bin 0 -> 313 bytes res/images/DM_Gallery_Increase.png | Bin 0 -> 2839 bytes res/images/T01-2_hold_icon_lock.png | Bin 0 -> 1395 bytes res/images/T01-2_icon_toolbar_cancel.png | Bin 0 -> 3231 bytes res/images/T01_Image_Look.png | Bin 0 -> 4334 bytes res/images/T01_Nocontents_multimedia.png | Bin 0 -> 9146 bytes res/images/T01_Option_header_bt.png | Bin 0 -> 2984 bytes res/images/T01_Option_header_bt_press.png | Bin 0 -> 2939 bytes res/images/T01_Trim_handle_beginning.png | Bin 0 -> 3525 bytes res/images/T01_Trim_handle_ending.png | Bin 0 -> 3279 bytes res/images/T01_back.png | Bin 0 -> 3928 bytes res/images/T01_btn_prev.png | Bin 0 -> 3228 bytes res/images/T01_check.png | Bin 0 -> 3035 bytes res/images/T01_checkbox.png | Bin 0 -> 2944 bytes res/images/T01_control_icon_detail.png | Bin 0 -> 4684 bytes res/images/T01_control_icon_fullscreen.png | Bin 0 -> 4813 bytes res/images/T01_control_icon_reduce.png | Bin 0 -> 4817 bytes res/images/T01_control_top_arrow.png | Bin 0 -> 3055 bytes res/images/T01_control_top_bg.png | Bin 0 -> 2812 bytes res/images/T01_controlbar_icon_cancel.png | Bin 0 -> 3231 bytes res/images/T01_controlbar_icon_done.png | Bin 0 -> 3322 bytes res/images/T01_controller_btn.png | Bin 0 -> 2994 bytes res/images/T01_controller_btn_press.png | Bin 0 -> 3008 bytes res/images/T01_grid_select_check.png | Bin 0 -> 4247 bytes res/images/T01_icon_expand.png | Bin 0 -> 3156 bytes res/images/T01_icon_reduce.png | Bin 0 -> 3141 bytes res/images/T01_icon_soundPath.png | Bin 0 -> 4527 bytes res/images/T01_icon_soundPath_h.png | Bin 0 -> 4241 bytes res/images/T01_icon_soundPath_press.png | Bin 0 -> 3681 bytes res/images/T01_player_progress_bar.png | Bin 0 -> 2802 bytes res/images/T01_player_progress_bg.png | Bin 0 -> 2839 bytes res/images/T01_player_progress_point.png | Bin 0 -> 2825 bytes res/images/T01_sound_path.png | Bin 0 -> 3081 bytes res/images/T01_title_bg.png | Bin 0 -> 40405 bytes res/images/T01_title_bg_h.png | Bin 0 -> 36828 bytes res/images/T01_title_btn.png | Bin 0 -> 3129 bytes res/images/T01_title_btn_press.png | Bin 0 -> 3126 bytes res/images/T01_toolbar_bg.png | Bin 0 -> 2797 bytes res/images/T01_toolbar_press.png | Bin 0 -> 2842 bytes res/images/T01_video_list_progress_bar.png | Bin 0 -> 2797 bytes .../T01-2_controller_progress_handle.png | Bin 0 -> 2938 bytes .../T01-2_controller_progress_handle_press.png | Bin 0 -> 2962 bytes res/images/adjustment/T01-2_fine_adjustment_bg.png | Bin 0 -> 22261 bytes .../adjustment/T01-2_fine_adjustment_bg_ef.png | Bin 0 -> 3674 bytes .../T01-2_fine_adjustment_progress_bar.png | Bin 0 -> 2797 bytes .../T01-2_fine_adjustment_progress_bg.png | Bin 0 -> 2797 bytes .../T01-2_fine_adjustment_progress_handle.png | Bin 0 -> 3037 bytes res/images/bookmark/T01-2_bookmark_thumbnail.png | Bin 0 -> 3761 bytes res/images/bookmark/T01-2_btn_bookmark.png | Bin 0 -> 4161 bytes res/images/bookmark/T01-2_btn_bookmark_press.png | Bin 0 -> 3992 bytes res/images/bookmark/T01-2_btn_remove_bookmark.png | Bin 0 -> 5028 bytes .../bookmark/T01-2_btn_remove_bookmark_press.png | Bin 0 -> 5070 bytes res/images/bookmark/T01-2_function_tray.png | Bin 0 -> 1409 bytes res/images/bookmark/T01-2_icon_thumbnail_bg.png | Bin 0 -> 2835 bytes res/images/com.samsung.video-player.png | Bin 0 -> 14891 bytes res/images/com.samsung.video-player.png_old | Bin 0 -> 22981 bytes .../desktop/controlbar/DM_Key screen_icon_01.png | Bin 0 -> 3364 bytes .../desktop/controlbar/DM_Key screen_icon_02.png | Bin 0 -> 3437 bytes .../desktop/controlbar/DM_Key screen_icon_03.png | Bin 0 -> 4056 bytes .../desktop/controlbar/DM_Key screen_icon_ff.png | Bin 0 -> 3783 bytes .../controlbar/DM_Key screen_icon_ff_press.png | Bin 0 -> 4070 bytes .../controlbar/DM_Key screen_icon_pause.png | Bin 0 -> 3016 bytes .../controlbar/DM_Key screen_icon_pause_press.png | Bin 0 -> 3205 bytes .../desktop/controlbar/DM_Key screen_icon_play.png | Bin 0 -> 3476 bytes .../controlbar/DM_Key screen_icon_play_press.png | Bin 0 -> 3792 bytes .../desktop/controlbar/DM_Key screen_icon_rew.png | Bin 0 -> 3761 bytes .../controlbar/DM_Key screen_icon_rew_press.png | Bin 0 -> 3988 bytes .../controlbar/DM_Key screen_icon_volume.png | Bin 0 -> 3709 bytes .../winset/T01-2_controller_progress_bar.png | Bin 0 -> 2797 bytes .../winset/T01-2_controller_progress_bg.png | Bin 0 -> 2797 bytes .../winset/T01-2_controller_progress_handle.png | Bin 0 -> 2938 bytes .../T01-2_controller_progress_handle_press.png | Bin 0 -> 2962 bytes .../desktop/winset/T01-2_fine_adjustment_bg.png | Bin 0 -> 22261 bytes .../desktop/winset/T01-2_fine_adjustment_bg_ef.png | Bin 0 -> 3674 bytes .../winset/T01-2_fine_adjustment_progress_bar.png | Bin 0 -> 2797 bytes .../winset/T01-2_fine_adjustment_progress_bg.png | Bin 0 -> 2797 bytes .../T01-2_fine_adjustment_progress_handle.png | Bin 0 -> 3037 bytes res/images/gallery_loading_ani_01.png | Bin 0 -> 5221 bytes res/images/gallery_loading_ani_02.png | Bin 0 -> 5234 bytes res/images/gallery_loading_ani_03.png | Bin 0 -> 5203 bytes res/images/gallery_loading_ani_04.png | Bin 0 -> 5350 bytes res/images/gallery_loading_ani_05.png | Bin 0 -> 5285 bytes res/images/gallery_loading_ani_06.png | Bin 0 -> 5333 bytes res/images/gallery_loading_ani_07.png | Bin 0 -> 5297 bytes res/images/gallery_loading_ani_08.png | Bin 0 -> 5426 bytes res/images/gallery_loading_ani_09.png | Bin 0 -> 5452 bytes res/images/gallery_loading_ani_10.png | Bin 0 -> 5389 bytes res/images/gallery_loading_ani_11.png | Bin 0 -> 5265 bytes res/images/gallery_loading_ani_12.png | Bin 0 -> 5348 bytes res/images/gallery_loading_ani_13.png | Bin 0 -> 5435 bytes res/images/gallery_loading_ani_14.png | Bin 0 -> 5482 bytes res/images/gallery_loading_ani_15.png | Bin 0 -> 5536 bytes res/images/gallery_loading_ani_16.png | Bin 0 -> 5330 bytes res/images/gallery_loading_ani_17.png | Bin 0 -> 5335 bytes res/images/gallery_loading_ani_18.png | Bin 0 -> 5247 bytes res/images/gallery_loading_ani_19.png | Bin 0 -> 5422 bytes res/images/gallery_loading_ani_20.png | Bin 0 -> 5375 bytes res/images/gallery_loading_ani_21.png | Bin 0 -> 5343 bytes res/images/gallery_loading_ani_22.png | Bin 0 -> 5374 bytes res/images/gallery_loading_ani_23.png | Bin 0 -> 5527 bytes res/images/gallery_loading_ani_24.png | Bin 0 -> 5481 bytes res/images/gallery_loading_ani_25.png | Bin 0 -> 5409 bytes res/images/gallery_loading_ani_26.png | Bin 0 -> 5311 bytes res/images/gallery_loading_ani_27.png | Bin 0 -> 5359 bytes res/images/gallery_loading_ani_28.png | Bin 0 -> 5442 bytes res/images/gallery_loading_ani_29.png | Bin 0 -> 5489 bytes res/images/gallery_loading_ani_30.png | Bin 0 -> 5600 bytes res/images/gallery_video_add_btn.png | Bin 0 -> 3444 bytes res/images/gallery_video_add_btn_press.png | Bin 0 -> 3493 bytes res/images/gallery_video_control_ff.png | Bin 0 -> 3168 bytes res/images/gallery_video_control_ff_2.png | Bin 0 -> 3056 bytes res/images/gallery_video_control_ff_3.png | Bin 0 -> 3157 bytes res/images/gallery_video_control_ff_4.png | Bin 0 -> 3157 bytes res/images/gallery_video_control_ff_5.png | Bin 0 -> 3185 bytes res/images/gallery_video_control_frame_back.png | Bin 0 -> 3143 bytes res/images/gallery_video_control_frame_forword.png | Bin 0 -> 3154 bytes res/images/gallery_video_control_next.png | Bin 0 -> 3168 bytes res/images/gallery_video_control_pause.png | Bin 0 -> 2932 bytes res/images/gallery_video_control_play.png | Bin 0 -> 3084 bytes res/images/gallery_video_control_prev.png | Bin 0 -> 3175 bytes res/images/gallery_video_control_rew.png | Bin 0 -> 3175 bytes res/images/gallery_video_control_rew_2.png | Bin 0 -> 477 bytes res/images/gallery_video_control_rew_3.png | Bin 0 -> 585 bytes res/images/gallery_video_control_rew_4.png | Bin 0 -> 619 bytes res/images/gallery_video_control_rew_5.png | Bin 0 -> 647 bytes res/images/gallery_video_delete_btn.png | Bin 0 -> 3458 bytes res/images/gallery_video_delete_btn_press.png | Bin 0 -> 3411 bytes res/images/gallery_video_fastforward_1x.png | Bin 0 -> 3228 bytes res/images/gallery_video_fastforward_2x.png | Bin 0 -> 3314 bytes res/images/gallery_video_fastforward_3x.png | Bin 0 -> 3414 bytes res/images/gallery_video_fastforward_4x.png | Bin 0 -> 3469 bytes res/images/gallery_video_icon_btn.png | Bin 0 -> 3306 bytes res/images/gallery_video_icon_btn_press.png | Bin 0 -> 3239 bytes res/images/gallery_video_icon_mute.png | Bin 0 -> 3154 bytes res/images/gallery_video_icon_volume.png | Bin 0 -> 3222 bytes res/images/gallery_video_player_bg.png | Bin 0 -> 3468 bytes res/images/gallery_video_popup_mute.png | Bin 0 -> 4136 bytes res/images/gallery_video_rewind_1x.png | Bin 0 -> 3269 bytes res/images/gallery_video_rewind_2x.png | Bin 0 -> 3288 bytes res/images/gallery_video_rewind_3x.png | Bin 0 -> 3396 bytes res/images/gallery_video_rewind_4x.png | Bin 0 -> 3464 bytes res/images/icon/06_myfiles_list_folder.png | Bin 0 -> 3799 bytes res/images/icon/T01-2_icon_function_bg.png | Bin 0 -> 2840 bytes res/images/icon/T01-2_icon_popup_sound_allive.png | Bin 0 -> 5592 bytes .../icon/T01-2_icon_popup_sound_audio_track.png | Bin 0 -> 4786 bytes .../icon/T01-2_icon_popup_sound_repeat_mode.png | Bin 0 -> 4590 bytes .../icon/T01-2_icon_popup_sound_settings.png | Bin 0 -> 5195 bytes res/images/icon/T01-2_icon_popup_subtitle.png | Bin 0 -> 3798 bytes res/images/icon/T01-2_icon_popup_trim.png | Bin 0 -> 5335 bytes res/images/icon/T01-2_icon_title_allshare.png | Bin 0 -> 3202 bytes res/images/icon/T01-2_icon_title_soundpath.png | Bin 0 -> 3355 bytes .../icon/T01_controlbar_icon_add_to_home.png | Bin 0 -> 3485 bytes res/images/icon/_06_myfiles_list_folder.png | Bin 0 -> 1729 bytes res/images/mw/T01-2_icon_close.png | Bin 0 -> 2139 bytes res/images/mw/T01-2_icon_full_size.png | Bin 0 -> 2116 bytes res/images/mw/T01-2_icon_hide_panel.png | Bin 0 -> 1724 bytes res/images/mw/T01-2_icon_open_panel.png | Bin 0 -> 1738 bytes res/images/mw/T01-2_multiscreen_bg.png | Bin 0 -> 1617 bytes res/images/mw/T01-2_multiscreen_bg_press.png | Bin 0 -> 2997 bytes res/images/mw/T01-2_multiscreen_player_bg.png | Bin 0 -> 1020 bytes res/images/mw/T01-2_player_icon_FF.png | Bin 0 -> 1330 bytes res/images/mw/T01-2_player_icon_FF_press.png | Bin 0 -> 1362 bytes res/images/mw/T01-2_player_icon_Pause.png | Bin 0 -> 1092 bytes res/images/mw/T01-2_player_icon_Pause_press.png | Bin 0 -> 1087 bytes res/images/mw/T01-2_player_icon_Play.png | Bin 0 -> 1324 bytes res/images/mw/T01-2_player_icon_Play_press.png | Bin 0 -> 1323 bytes res/images/mw/T01-2_player_icon_REW.png | Bin 0 -> 1310 bytes res/images/mw/T01-2_player_icon_REW_press.png | Bin 0 -> 1346 bytes res/images/mw/T01-2_resize_controller.png | Bin 0 -> 1558 bytes res/images/mw/T01-2_resize_controller_press.png | Bin 0 -> 1831 bytes res/images/navibar_item_separator_shadow.png | Bin 0 -> 160 bytes res/images/naviframe_optionheader.png | Bin 0 -> 2788 bytes res/images/naviframe_optionheader_arrow.png | Bin 0 -> 3152 bytes .../T01-2_icon_controller_connection_info.png | Bin 0 -> 3308 bytes res/images/option/T01-2_icon_controller_more.png | Bin 0 -> 3071 bytes .../option/T01-2_icon_controller_multiwin.png | Bin 0 -> 3137 bytes .../option/T01-2_icon_controller_repeat_off.png | Bin 0 -> 3498 bytes .../option/T01-2_icon_controller_repeat_on.png | Bin 0 -> 3480 bytes res/images/option/T01-2_icon_controller_sa.png | Bin 0 -> 3685 bytes res/images/option/T01-2_icon_controller_trim.png | Bin 0 -> 3403 bytes res/images/option/T01-2_icon_function_bg.png | Bin 0 -> 2840 bytes res/images/option/T01-2_icon_function_bookmark.png | Bin 0 -> 3223 bytes .../option/T01-2_icon_function_screenmode.png | Bin 0 -> 3039 bytes .../option/T01-2_icon_function_screenmode02.png | Bin 0 -> 3052 bytes .../option/T01-2_icon_function_screenmode03.png | Bin 0 -> 3449 bytes .../option/T01-2_icon_function_select_bg.png | Bin 0 -> 2990 bytes res/images/option/T01-2_icon_function_share.png | Bin 0 -> 3270 bytes res/images/option/T01-2_icon_function_subtitle.png | Bin 0 -> 3104 bytes res/images/option/T01-2_icon_function_trim.png | Bin 0 -> 3429 bytes res/images/org.tizen.video-player.png | Bin 0 -> 16946 bytes res/images/panel/T01-2_btn_toolbar_back.png | Bin 0 -> 3493 bytes res/images/panel/T01-2_btn_toolbar_back_press.png | Bin 0 -> 3972 bytes res/images/panel/T01-2_btn_toolbar_volum.png | Bin 0 -> 4129 bytes res/images/panel/T01-2_btn_toolbar_volum_press.png | Bin 0 -> 4101 bytes res/images/panel/T01-2_btn_toolbar_volume.png | Bin 0 -> 3601 bytes res/images/panel/T01-2_controller_progress_bar.png | Bin 0 -> 2797 bytes res/images/panel/T01-2_controller_progress_bg.png | Bin 0 -> 2797 bytes res/images/panel/T01-2_icon_controller_repeat.png | Bin 0 -> 3328 bytes .../panel/T01-2_icon_controller_repeat_1.png | Bin 0 -> 3335 bytes .../panel/T01-2_icon_controller_repeat_all.png | Bin 0 -> 3510 bytes res/images/panel/T01-2_icon_controller_sa.png | Bin 0 -> 3869 bytes res/images/panel/T01-2_icon_toolbar_cancel.png | Bin 0 -> 3231 bytes res/images/panel/T01-2_icon_toolbar_done.png | Bin 0 -> 3322 bytes res/images/panel/T02_volume_icon_Mute.png | Bin 0 -> 3367 bytes res/images/subtitle/T01-2_sync_btn_bg.png | Bin 0 -> 3650 bytes res/images/subtitle/T01-2_sync_faster.png | Bin 0 -> 4114 bytes res/images/subtitle/T01-2_sync_list_press.png | Bin 0 -> 2805 bytes res/images/subtitle/T01-2_sync_slowly.png | Bin 0 -> 3313 bytes res/images/toolbar/T01-2_btn_toolbar_back.png | Bin 0 -> 3493 bytes res/images/toolbar/T01-2_btn_toolbar_volum.png | Bin 0 -> 4129 bytes res/images/toolbar/T01-2_btn_toolbar_volume.png | Bin 0 -> 3601 bytes .../toolbar/T01-2_controlbar_icon_folder.png | Bin 0 -> 3040 bytes .../toolbar/T01-2_controlbar_icon_near_device.png | Bin 0 -> 3252 bytes .../toolbar/T01-2_controlbar_icon_recorded.png | Bin 0 -> 3722 bytes res/images/toolbar/T01-2_controlbar_icon_video.png | Bin 0 -> 3961 bytes res/images/toolbar/T01-2_icon_toolbar_cancel.png | Bin 0 -> 3231 bytes res/images/toolbar/T01-2_icon_toolbar_delete.png | Bin 0 -> 3201 bytes res/images/toolbar/T01-2_icon_toolbar_done.png | Bin 0 -> 3322 bytes res/images/toolbar/T01-2_icon_toolbar_setting.png | Bin 0 -> 3419 bytes res/images/toolbar/T01-2_icon_toolbar_sort_by.png | Bin 0 -> 3700 bytes res/images/toolbar/T02_controlbar_icon_search.png | Bin 0 -> 3515 bytes res/images/toolbar/T02_volume_icon_Mute.png | Bin 0 -> 3367 bytes res/images/trim/T01-2_controller_track_ball.png | Bin 0 -> 3162 bytes .../T01-2_controller_trimming_handle_beginning.png | Bin 0 -> 3962 bytes ..._controller_trimming_handle_beginning_press.png | Bin 0 -> 4063 bytes .../T01-2_controller_trimming_handle_ending.png | Bin 0 -> 3344 bytes ...1-2_controller_trimming_handle_ending_press.png | Bin 0 -> 3587 bytes res/images/trim/T01-2_icon_toolbar_forward.png | Bin 0 -> 3343 bytes res/images/trim/T01-2_icon_toolbar_reverse.png | Bin 0 -> 3326 bytes res/images/trim/gallery_video_fastforward_1x.png | Bin 0 -> 3228 bytes res/images/trim/gallery_video_fastforward_2x.png | Bin 0 -> 3314 bytes res/images/trim/gallery_video_fastforward_3x.png | Bin 0 -> 3414 bytes res/images/trim/gallery_video_fastforward_4x.png | Bin 0 -> 3469 bytes res/images/trim/gallery_video_rewind_1x.png | Bin 0 -> 3269 bytes res/images/trim/gallery_video_rewind_2x.png | Bin 0 -> 3288 bytes res/images/trim/gallery_video_rewind_3x.png | Bin 0 -> 3396 bytes res/images/trim/gallery_video_rewind_4x.png | Bin 0 -> 3464 bytes res/images/video_sound_path_dim.png | Bin 0 -> 527 bytes res/images/volume/T01-2_player_progress_bar.png | Bin 0 -> 2799 bytes res/images/volume/T01-2_player_progress_bg.png | Bin 0 -> 2799 bytes res/images/volume/T01-2_player_volume_handle.png | Bin 0 -> 3127 bytes .../volume/T01-2_player_volume_handle_press.png | Bin 0 -> 3168 bytes res/images/volume/T01-2_volume_icon_01.png | Bin 0 -> 3714 bytes res/images/volume/T01-2_volume_icon_02.png | Bin 0 -> 5351 bytes res/images/white/common/00_popup_bubble_bg.png | Bin 0 -> 539 bytes res/images/white/common/00_popup_tail_bottom.png | Bin 0 -> 1111 bytes res/images/white/common/00_popup_tail_left.png | Bin 0 -> 1035 bytes res/images/white/common/00_popup_tail_right.png | Bin 0 -> 1083 bytes res/images/white/common/00_popup_tail_top.png | Bin 0 -> 1107 bytes .../white/common/00_winset_control_toolbar_bg.png | Bin 0 -> 2798 bytes .../white/common/00_winset_control_top_arrow.png | Bin 0 -> 3200 bytes .../white/common/00_winset_control_top_bg.png | Bin 0 -> 2817 bytes res/images/white/common/00_winset_title_line.png | Bin 0 -> 2813 bytes res/images/white/common/01_scroller.png | Bin 0 -> 497 bytes res/images/white/common/T01-2_popup_arrow.png | Bin 0 -> 3388 bytes res/images/white/common/T01-2_popup_bg.png | Bin 0 -> 2858 bytes res/images/white/common/T01-2_popup_btn_bg.png | Bin 0 -> 3623 bytes res/images/white/common/T01-2_popup_btn_bg2.9.png | Bin 0 -> 3164 bytes res/images/white/common/T01-2_popup_btn_normal.png | Bin 0 -> 3110 bytes .../white/common/T01-2_popup_btn_press_bottom.png | Bin 0 -> 3144 bytes .../white/common/T01-2_popup_btn_press_middle.png | Bin 0 -> 3006 bytes .../white/common/T01-2_popup_btn_press_top.png | Bin 0 -> 3159 bytes res/images/white/common/T01-2_popup_divider.png | Bin 0 -> 2814 bytes res/images/white/common/T01-2_title_btn_bg.png | Bin 0 -> 2987 bytes .../white/common/T01-2_title_btn_bg_press_01.png | Bin 0 -> 3145 bytes .../white/common/T01-2_title_btn_bg_press_02.png | Bin 0 -> 3034 bytes .../white/control/T01-2_icon_toolbar_next.png | Bin 0 -> 3403 bytes .../white/control/T01-2_icon_toolbar_pause.png | Bin 0 -> 3022 bytes .../white/control/T01-2_icon_toolbar_play.png | Bin 0 -> 3181 bytes .../white/control/T01-2_icon_toolbar_previous.png | Bin 0 -> 3386 bytes .../white/control/T01-2_icon_toolbar_stop.png | Bin 0 -> 3027 bytes res/images/white/panel/T01-2_btn_toolbar_back.png | Bin 0 -> 3493 bytes .../white/panel/T01-2_btn_toolbar_volume.png | Bin 0 -> 3601 bytes res/images/white/panel/T02_volume_icon_Mute.png | Bin 0 -> 3367 bytes res/po/CMakeLists.txt | 23 + res/po/POTFILES.in | 2 + res/po/de_DE.po | 198 + res/po/el_GR.po | 198 + res/po/en.po | 198 + res/po/es_ES.po | 198 + res/po/fr_FR.po | 198 + res/po/it_IT.po | 198 + res/po/ja_JP.po | 198 + res/po/ko_KR.po | 198 + res/po/nl_NL.po | 198 + res/po/pt_PT.po | 198 + res/po/ru_RU.po | 198 + res/po/tr_TR.po | 198 + res/po/zh_CN.po | 198 + res/po/zh_HK.po | 198 + res/po/zh_TW.po | 198 + src/mp-drm-ctrl.c | 411 ++ src/mp-external-ug.c | 628 +++ src/mp-util-media-service.c | 2497 ++++++++++ src/mp-util.c | 1588 +++++++ src/mp-video-animation-ctrl.c | 149 + src/mp-video-app-ctrl.c | 1368 ++++++ src/mp-video-ctrl-mgr.c | 572 +++ src/mp-video-display-view.c | 1314 ++++++ src/mp-video-player-mgr.c | 856 ++++ src/mp-video-progressbar.c | 752 +++ src/mp-video-service-ctrl.c | 629 +++ src/mp-video-sound-path-ctrl.c | 605 +++ src/mp-video-streaming-ctrl.c | 818 ++++ src/mp-video-streaming-view.c | 718 +++ src/mp-video-subtitle-ctrl.c | 352 ++ src/mp-video-view-mgr.c | 1370 ++++++ src/mp-video-volume-ctrl.c | 450 ++ src/video-player.c | 530 +++ 394 files changed, 42566 insertions(+) create mode 100755 CMakeLists.txt create mode 100755 LICENSE.Flora create mode 100755 NOTICE create mode 100644 include/mp-drm-ctrl.h create mode 100755 include/mp-external-ug.h create mode 100644 include/mp-util-media-service.h create mode 100755 include/mp-util.h create mode 100755 include/mp-video-animation-ctrl.h create mode 100644 include/mp-video-app-ctrl.h create mode 100644 include/mp-video-ctrl-mgr.h create mode 100644 include/mp-video-display-view.h create mode 100755 include/mp-video-info-ctrl.h create mode 100755 include/mp-video-info-view.h create mode 100644 include/mp-video-log.h create mode 100644 include/mp-video-player-mgr.h create mode 100755 include/mp-video-progressbar.h create mode 100644 include/mp-video-service-ctrl.h create mode 100755 include/mp-video-sound-path-ctrl.h create mode 100755 include/mp-video-streaming-ctrl.h create mode 100644 include/mp-video-streaming-view.h create mode 100644 include/mp-video-string-define.h create mode 100755 include/mp-video-subtitle-ctrl.h create mode 100644 include/mp-video-type-define.h create mode 100755 include/mp-video-value-define.h create mode 100644 include/mp-video-view-mgr.h create mode 100644 include/mp-video-volume-ctrl.h create mode 100644 include/video-player.h create mode 100755 org.tizen.video-player.manifest create mode 100755 org.tizen.video-player.xml create mode 100755 packaging/org.tizen.video-player.spec create mode 100755 res/edc/add_tag.edc create mode 100755 res/edc/animation.edc create mode 100755 res/edc/control.edc create mode 100755 res/edc/custom/vp-naviframe-custom.edc create mode 100755 res/edc/detail.edc create mode 100755 res/edc/hidden_button_panel.edc create mode 100755 res/edc/image_res.edc create mode 100755 res/edc/main.edc create mode 100755 res/edc/multi_win.edc create mode 100644 res/edc/option_button.edc create mode 100755 res/edc/panel.edc create mode 100755 res/edc/popup_progressbar.edc create mode 100755 res/edc/progress.edc create mode 100755 res/edc/progress_trim.edc create mode 100755 res/edc/setting.edc create mode 100755 res/edc/subtitle.edc create mode 100755 res/edc/subtitle_sync.edc create mode 100755 res/edc/vp-button-white.edc create mode 100755 res/edc/vp-button.edc create mode 100755 res/edc/vp-chapter-view.edc create mode 100755 res/edc/vp-check.edc create mode 100755 res/edc/vp-controlbar.edc create mode 100755 res/edc/vp-ctxpopup.edc create mode 100755 res/edc/vp-custom-winset-style.edc create mode 100755 res/edc/vp-layout.edc create mode 100755 res/edc/vp-naviframe.edc create mode 100755 res/edc/vp-naviframe_white.edc create mode 100755 res/edc/vp-nocontents.edc create mode 100755 res/edc/vp-progressbar-list.edc create mode 100644 res/edc/vp-speedbox-popup.edc create mode 100755 res/edc/vp-toolbar.edc create mode 100644 res/edc/vp-volume-popup.edc create mode 100755 res/edc/vp_font.edc create mode 100755 res/images/00_Option_header_bt.png create mode 100755 res/images/00_Option_header_bt_dim.png create mode 100755 res/images/00_Option_header_bt_press.png create mode 100755 res/images/00_button_01_normal.png create mode 100755 res/images/00_button_01_normal_dim.png create mode 100755 res/images/00_button_01_normal_press.png create mode 100755 res/images/00_check_bg_dim.png create mode 100755 res/images/00_grid_select_check.png create mode 100755 res/images/00_sweep_list_bg.png create mode 100755 res/images/00_winset_btn_prev.png create mode 100755 res/images/00_winset_btn_prev_press.png create mode 100755 res/images/00_winset_control_top_arrow.png create mode 100755 res/images/00_winset_list_progress_bg.png create mode 100755 res/images/00_winset_thumbs_bg.png create mode 100755 res/images/00_winset_thumbs_focus_bg.png create mode 100755 res/images/00_winset_thumbs_loading_bg.png create mode 100755 res/images/01_controlbar_icon_delete.png create mode 100755 res/images/01_controlbar_icon_set_as.png create mode 100755 res/images/01_controlbar_icon_share.png create mode 100755 res/images/01_header_icon_add.png create mode 100755 res/images/01_header_icon_cancel.png create mode 100755 res/images/01_header_icon_others.png create mode 100755 res/images/12_music_player_sound_path.png create mode 100755 res/images/DM_Gallery_Increase.png create mode 100755 res/images/T01-2_hold_icon_lock.png create mode 100755 res/images/T01-2_icon_toolbar_cancel.png create mode 100755 res/images/T01_Image_Look.png create mode 100755 res/images/T01_Nocontents_multimedia.png create mode 100755 res/images/T01_Option_header_bt.png create mode 100755 res/images/T01_Option_header_bt_press.png create mode 100755 res/images/T01_Trim_handle_beginning.png create mode 100755 res/images/T01_Trim_handle_ending.png create mode 100755 res/images/T01_back.png create mode 100755 res/images/T01_btn_prev.png create mode 100755 res/images/T01_check.png create mode 100755 res/images/T01_checkbox.png create mode 100755 res/images/T01_control_icon_detail.png create mode 100755 res/images/T01_control_icon_fullscreen.png create mode 100755 res/images/T01_control_icon_reduce.png create mode 100755 res/images/T01_control_top_arrow.png create mode 100755 res/images/T01_control_top_bg.png create mode 100755 res/images/T01_controlbar_icon_cancel.png create mode 100755 res/images/T01_controlbar_icon_done.png create mode 100755 res/images/T01_controller_btn.png create mode 100755 res/images/T01_controller_btn_press.png create mode 100755 res/images/T01_grid_select_check.png create mode 100755 res/images/T01_icon_expand.png create mode 100755 res/images/T01_icon_reduce.png create mode 100755 res/images/T01_icon_soundPath.png create mode 100755 res/images/T01_icon_soundPath_h.png create mode 100755 res/images/T01_icon_soundPath_press.png create mode 100755 res/images/T01_player_progress_bar.png create mode 100755 res/images/T01_player_progress_bg.png create mode 100755 res/images/T01_player_progress_point.png create mode 100755 res/images/T01_sound_path.png create mode 100755 res/images/T01_title_bg.png create mode 100755 res/images/T01_title_bg_h.png create mode 100755 res/images/T01_title_btn.png create mode 100755 res/images/T01_title_btn_press.png create mode 100755 res/images/T01_toolbar_bg.png create mode 100755 res/images/T01_toolbar_press.png create mode 100755 res/images/T01_video_list_progress_bar.png create mode 100755 res/images/adjustment/T01-2_controller_progress_handle.png create mode 100755 res/images/adjustment/T01-2_controller_progress_handle_press.png create mode 100755 res/images/adjustment/T01-2_fine_adjustment_bg.png create mode 100755 res/images/adjustment/T01-2_fine_adjustment_bg_ef.png create mode 100755 res/images/adjustment/T01-2_fine_adjustment_progress_bar.png create mode 100755 res/images/adjustment/T01-2_fine_adjustment_progress_bg.png create mode 100755 res/images/adjustment/T01-2_fine_adjustment_progress_handle.png create mode 100755 res/images/bookmark/T01-2_bookmark_thumbnail.png create mode 100755 res/images/bookmark/T01-2_btn_bookmark.png create mode 100755 res/images/bookmark/T01-2_btn_bookmark_press.png create mode 100755 res/images/bookmark/T01-2_btn_remove_bookmark.png create mode 100755 res/images/bookmark/T01-2_btn_remove_bookmark_press.png create mode 100755 res/images/bookmark/T01-2_function_tray.png create mode 100755 res/images/bookmark/T01-2_icon_thumbnail_bg.png create mode 100644 res/images/com.samsung.video-player.png create mode 100755 res/images/com.samsung.video-player.png_old create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_01.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_02.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_03.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_ff.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png create mode 100644 res/images/desktop/controlbar/DM_Key screen_icon_pause.png create mode 100644 res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_play.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_play_press.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_rew.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png create mode 100755 res/images/desktop/controlbar/DM_Key screen_icon_volume.png create mode 100755 res/images/desktop/winset/T01-2_controller_progress_bar.png create mode 100755 res/images/desktop/winset/T01-2_controller_progress_bg.png create mode 100755 res/images/desktop/winset/T01-2_controller_progress_handle.png create mode 100755 res/images/desktop/winset/T01-2_controller_progress_handle_press.png create mode 100755 res/images/desktop/winset/T01-2_fine_adjustment_bg.png create mode 100755 res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png create mode 100755 res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png create mode 100755 res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png create mode 100755 res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png create mode 100755 res/images/gallery_loading_ani_01.png create mode 100755 res/images/gallery_loading_ani_02.png create mode 100755 res/images/gallery_loading_ani_03.png create mode 100755 res/images/gallery_loading_ani_04.png create mode 100755 res/images/gallery_loading_ani_05.png create mode 100755 res/images/gallery_loading_ani_06.png create mode 100755 res/images/gallery_loading_ani_07.png create mode 100755 res/images/gallery_loading_ani_08.png create mode 100755 res/images/gallery_loading_ani_09.png create mode 100755 res/images/gallery_loading_ani_10.png create mode 100755 res/images/gallery_loading_ani_11.png create mode 100755 res/images/gallery_loading_ani_12.png create mode 100755 res/images/gallery_loading_ani_13.png create mode 100755 res/images/gallery_loading_ani_14.png create mode 100755 res/images/gallery_loading_ani_15.png create mode 100755 res/images/gallery_loading_ani_16.png create mode 100755 res/images/gallery_loading_ani_17.png create mode 100755 res/images/gallery_loading_ani_18.png create mode 100755 res/images/gallery_loading_ani_19.png create mode 100755 res/images/gallery_loading_ani_20.png create mode 100755 res/images/gallery_loading_ani_21.png create mode 100755 res/images/gallery_loading_ani_22.png create mode 100755 res/images/gallery_loading_ani_23.png create mode 100755 res/images/gallery_loading_ani_24.png create mode 100755 res/images/gallery_loading_ani_25.png create mode 100755 res/images/gallery_loading_ani_26.png create mode 100755 res/images/gallery_loading_ani_27.png create mode 100755 res/images/gallery_loading_ani_28.png create mode 100755 res/images/gallery_loading_ani_29.png create mode 100755 res/images/gallery_loading_ani_30.png create mode 100755 res/images/gallery_video_add_btn.png create mode 100755 res/images/gallery_video_add_btn_press.png create mode 100755 res/images/gallery_video_control_ff.png create mode 100755 res/images/gallery_video_control_ff_2.png create mode 100755 res/images/gallery_video_control_ff_3.png create mode 100755 res/images/gallery_video_control_ff_4.png create mode 100755 res/images/gallery_video_control_ff_5.png create mode 100755 res/images/gallery_video_control_frame_back.png create mode 100755 res/images/gallery_video_control_frame_forword.png create mode 100755 res/images/gallery_video_control_next.png create mode 100755 res/images/gallery_video_control_pause.png create mode 100755 res/images/gallery_video_control_play.png create mode 100755 res/images/gallery_video_control_prev.png create mode 100755 res/images/gallery_video_control_rew.png create mode 100755 res/images/gallery_video_control_rew_2.png create mode 100755 res/images/gallery_video_control_rew_3.png create mode 100755 res/images/gallery_video_control_rew_4.png create mode 100755 res/images/gallery_video_control_rew_5.png create mode 100755 res/images/gallery_video_delete_btn.png create mode 100755 res/images/gallery_video_delete_btn_press.png create mode 100755 res/images/gallery_video_fastforward_1x.png create mode 100755 res/images/gallery_video_fastforward_2x.png create mode 100755 res/images/gallery_video_fastforward_3x.png create mode 100755 res/images/gallery_video_fastforward_4x.png create mode 100755 res/images/gallery_video_icon_btn.png create mode 100755 res/images/gallery_video_icon_btn_press.png create mode 100755 res/images/gallery_video_icon_mute.png create mode 100755 res/images/gallery_video_icon_volume.png create mode 100755 res/images/gallery_video_player_bg.png create mode 100755 res/images/gallery_video_popup_mute.png create mode 100755 res/images/gallery_video_rewind_1x.png create mode 100755 res/images/gallery_video_rewind_2x.png create mode 100755 res/images/gallery_video_rewind_3x.png create mode 100755 res/images/gallery_video_rewind_4x.png create mode 100644 res/images/icon/06_myfiles_list_folder.png create mode 100755 res/images/icon/T01-2_icon_function_bg.png create mode 100755 res/images/icon/T01-2_icon_popup_sound_allive.png create mode 100755 res/images/icon/T01-2_icon_popup_sound_audio_track.png create mode 100755 res/images/icon/T01-2_icon_popup_sound_repeat_mode.png create mode 100755 res/images/icon/T01-2_icon_popup_sound_settings.png create mode 100755 res/images/icon/T01-2_icon_popup_subtitle.png create mode 100755 res/images/icon/T01-2_icon_popup_trim.png create mode 100755 res/images/icon/T01-2_icon_title_allshare.png create mode 100755 res/images/icon/T01-2_icon_title_soundpath.png create mode 100755 res/images/icon/T01_controlbar_icon_add_to_home.png create mode 100644 res/images/icon/_06_myfiles_list_folder.png create mode 100755 res/images/mw/T01-2_icon_close.png create mode 100755 res/images/mw/T01-2_icon_full_size.png create mode 100755 res/images/mw/T01-2_icon_hide_panel.png create mode 100755 res/images/mw/T01-2_icon_open_panel.png create mode 100755 res/images/mw/T01-2_multiscreen_bg.png create mode 100755 res/images/mw/T01-2_multiscreen_bg_press.png create mode 100755 res/images/mw/T01-2_multiscreen_player_bg.png create mode 100755 res/images/mw/T01-2_player_icon_FF.png create mode 100755 res/images/mw/T01-2_player_icon_FF_press.png create mode 100755 res/images/mw/T01-2_player_icon_Pause.png create mode 100755 res/images/mw/T01-2_player_icon_Pause_press.png create mode 100755 res/images/mw/T01-2_player_icon_Play.png create mode 100755 res/images/mw/T01-2_player_icon_Play_press.png create mode 100755 res/images/mw/T01-2_player_icon_REW.png create mode 100755 res/images/mw/T01-2_player_icon_REW_press.png create mode 100755 res/images/mw/T01-2_resize_controller.png create mode 100755 res/images/mw/T01-2_resize_controller_press.png create mode 100755 res/images/navibar_item_separator_shadow.png create mode 100755 res/images/naviframe_optionheader.png create mode 100755 res/images/naviframe_optionheader_arrow.png create mode 100755 res/images/option/T01-2_icon_controller_connection_info.png create mode 100755 res/images/option/T01-2_icon_controller_more.png create mode 100755 res/images/option/T01-2_icon_controller_multiwin.png create mode 100755 res/images/option/T01-2_icon_controller_repeat_off.png create mode 100755 res/images/option/T01-2_icon_controller_repeat_on.png create mode 100755 res/images/option/T01-2_icon_controller_sa.png create mode 100755 res/images/option/T01-2_icon_controller_trim.png create mode 100755 res/images/option/T01-2_icon_function_bg.png create mode 100755 res/images/option/T01-2_icon_function_bookmark.png create mode 100755 res/images/option/T01-2_icon_function_screenmode.png create mode 100755 res/images/option/T01-2_icon_function_screenmode02.png create mode 100755 res/images/option/T01-2_icon_function_screenmode03.png create mode 100755 res/images/option/T01-2_icon_function_select_bg.png create mode 100755 res/images/option/T01-2_icon_function_share.png create mode 100755 res/images/option/T01-2_icon_function_subtitle.png create mode 100755 res/images/option/T01-2_icon_function_trim.png create mode 100755 res/images/org.tizen.video-player.png create mode 100755 res/images/panel/T01-2_btn_toolbar_back.png create mode 100755 res/images/panel/T01-2_btn_toolbar_back_press.png create mode 100755 res/images/panel/T01-2_btn_toolbar_volum.png create mode 100755 res/images/panel/T01-2_btn_toolbar_volum_press.png create mode 100755 res/images/panel/T01-2_btn_toolbar_volume.png create mode 100755 res/images/panel/T01-2_controller_progress_bar.png create mode 100755 res/images/panel/T01-2_controller_progress_bg.png create mode 100755 res/images/panel/T01-2_icon_controller_repeat.png create mode 100755 res/images/panel/T01-2_icon_controller_repeat_1.png create mode 100755 res/images/panel/T01-2_icon_controller_repeat_all.png create mode 100755 res/images/panel/T01-2_icon_controller_sa.png create mode 100755 res/images/panel/T01-2_icon_toolbar_cancel.png create mode 100755 res/images/panel/T01-2_icon_toolbar_done.png create mode 100755 res/images/panel/T02_volume_icon_Mute.png create mode 100755 res/images/subtitle/T01-2_sync_btn_bg.png create mode 100755 res/images/subtitle/T01-2_sync_faster.png create mode 100755 res/images/subtitle/T01-2_sync_list_press.png create mode 100755 res/images/subtitle/T01-2_sync_slowly.png create mode 100755 res/images/toolbar/T01-2_btn_toolbar_back.png create mode 100755 res/images/toolbar/T01-2_btn_toolbar_volum.png create mode 100755 res/images/toolbar/T01-2_btn_toolbar_volume.png create mode 100644 res/images/toolbar/T01-2_controlbar_icon_folder.png create mode 100644 res/images/toolbar/T01-2_controlbar_icon_near_device.png create mode 100644 res/images/toolbar/T01-2_controlbar_icon_recorded.png create mode 100644 res/images/toolbar/T01-2_controlbar_icon_video.png create mode 100755 res/images/toolbar/T01-2_icon_toolbar_cancel.png create mode 100755 res/images/toolbar/T01-2_icon_toolbar_delete.png create mode 100755 res/images/toolbar/T01-2_icon_toolbar_done.png create mode 100644 res/images/toolbar/T01-2_icon_toolbar_setting.png create mode 100644 res/images/toolbar/T01-2_icon_toolbar_sort_by.png create mode 100755 res/images/toolbar/T02_controlbar_icon_search.png create mode 100755 res/images/toolbar/T02_volume_icon_Mute.png create mode 100755 res/images/trim/T01-2_controller_track_ball.png create mode 100755 res/images/trim/T01-2_controller_trimming_handle_beginning.png create mode 100755 res/images/trim/T01-2_controller_trimming_handle_beginning_press.png create mode 100755 res/images/trim/T01-2_controller_trimming_handle_ending.png create mode 100755 res/images/trim/T01-2_controller_trimming_handle_ending_press.png create mode 100755 res/images/trim/T01-2_icon_toolbar_forward.png create mode 100755 res/images/trim/T01-2_icon_toolbar_reverse.png create mode 100755 res/images/trim/gallery_video_fastforward_1x.png create mode 100755 res/images/trim/gallery_video_fastforward_2x.png create mode 100755 res/images/trim/gallery_video_fastforward_3x.png create mode 100755 res/images/trim/gallery_video_fastforward_4x.png create mode 100755 res/images/trim/gallery_video_rewind_1x.png create mode 100755 res/images/trim/gallery_video_rewind_2x.png create mode 100755 res/images/trim/gallery_video_rewind_3x.png create mode 100755 res/images/trim/gallery_video_rewind_4x.png create mode 100755 res/images/video_sound_path_dim.png create mode 100755 res/images/volume/T01-2_player_progress_bar.png create mode 100755 res/images/volume/T01-2_player_progress_bg.png create mode 100755 res/images/volume/T01-2_player_volume_handle.png create mode 100755 res/images/volume/T01-2_player_volume_handle_press.png create mode 100755 res/images/volume/T01-2_volume_icon_01.png create mode 100755 res/images/volume/T01-2_volume_icon_02.png create mode 100755 res/images/white/common/00_popup_bubble_bg.png create mode 100755 res/images/white/common/00_popup_tail_bottom.png create mode 100755 res/images/white/common/00_popup_tail_left.png create mode 100755 res/images/white/common/00_popup_tail_right.png create mode 100755 res/images/white/common/00_popup_tail_top.png create mode 100755 res/images/white/common/00_winset_control_toolbar_bg.png create mode 100755 res/images/white/common/00_winset_control_top_arrow.png create mode 100755 res/images/white/common/00_winset_control_top_bg.png create mode 100755 res/images/white/common/00_winset_title_line.png create mode 100755 res/images/white/common/01_scroller.png create mode 100755 res/images/white/common/T01-2_popup_arrow.png create mode 100755 res/images/white/common/T01-2_popup_bg.png create mode 100755 res/images/white/common/T01-2_popup_btn_bg.png create mode 100755 res/images/white/common/T01-2_popup_btn_bg2.9.png create mode 100755 res/images/white/common/T01-2_popup_btn_normal.png create mode 100755 res/images/white/common/T01-2_popup_btn_press_bottom.png create mode 100755 res/images/white/common/T01-2_popup_btn_press_middle.png create mode 100755 res/images/white/common/T01-2_popup_btn_press_top.png create mode 100755 res/images/white/common/T01-2_popup_divider.png create mode 100755 res/images/white/common/T01-2_title_btn_bg.png create mode 100755 res/images/white/common/T01-2_title_btn_bg_press_01.png create mode 100755 res/images/white/common/T01-2_title_btn_bg_press_02.png create mode 100755 res/images/white/control/T01-2_icon_toolbar_next.png create mode 100755 res/images/white/control/T01-2_icon_toolbar_pause.png create mode 100755 res/images/white/control/T01-2_icon_toolbar_play.png create mode 100755 res/images/white/control/T01-2_icon_toolbar_previous.png create mode 100755 res/images/white/control/T01-2_icon_toolbar_stop.png create mode 100755 res/images/white/panel/T01-2_btn_toolbar_back.png create mode 100755 res/images/white/panel/T01-2_btn_toolbar_volume.png create mode 100755 res/images/white/panel/T02_volume_icon_Mute.png create mode 100755 res/po/CMakeLists.txt create mode 100755 res/po/POTFILES.in create mode 100755 res/po/de_DE.po create mode 100755 res/po/el_GR.po create mode 100755 res/po/en.po create mode 100755 res/po/es_ES.po create mode 100755 res/po/fr_FR.po create mode 100755 res/po/it_IT.po create mode 100755 res/po/ja_JP.po create mode 100755 res/po/ko_KR.po create mode 100755 res/po/nl_NL.po create mode 100755 res/po/pt_PT.po create mode 100755 res/po/ru_RU.po create mode 100755 res/po/tr_TR.po create mode 100755 res/po/zh_CN.po create mode 100755 res/po/zh_HK.po create mode 100755 res/po/zh_TW.po create mode 100644 src/mp-drm-ctrl.c create mode 100755 src/mp-external-ug.c create mode 100755 src/mp-util-media-service.c create mode 100755 src/mp-util.c create mode 100755 src/mp-video-animation-ctrl.c create mode 100755 src/mp-video-app-ctrl.c create mode 100644 src/mp-video-ctrl-mgr.c create mode 100755 src/mp-video-display-view.c create mode 100644 src/mp-video-player-mgr.c create mode 100644 src/mp-video-progressbar.c create mode 100755 src/mp-video-service-ctrl.c create mode 100755 src/mp-video-sound-path-ctrl.c create mode 100644 src/mp-video-streaming-ctrl.c create mode 100644 src/mp-video-streaming-view.c create mode 100755 src/mp-video-subtitle-ctrl.c create mode 100644 src/mp-video-view-mgr.c create mode 100644 src/mp-video-volume-ctrl.c create mode 100755 src/video-player.c diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..3e43a9d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,218 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(video-player C CXX) + +SET(PKG_NAME org.tizen.video-player) + +EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION) + +SET(SRCS +src/video-player.c +src/mp-util.c +src/mp-video-app-ctrl.c +src/mp-video-view-mgr.c +src/mp-video-display-view.c +src/mp-external-ug.c +src/mp-video-progressbar.c +src/mp-util-media-service.c +src/mp-video-streaming-view.c +src/mp-video-ctrl-mgr.c +src/mp-video-player-mgr.c +src/mp-video-animation-ctrl.c +src/mp-video-streaming-ctrl.c +src/mp-video-service-ctrl.c +src/mp-video-volume-ctrl.c +src/mp-video-sound-path-ctrl.c +) + +INCLUDE_DIRECTORIES( + ${CMAKE_SOURCE_DIR}/include +) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs REQUIRED + elementary + drm-client + utilX + dlog + vconf + syspopup-caller + ecore-imf + ecore-x + ecore-input + ecore-evas + eina + evas + ecore + ecore-file + edje + icu-i18n + icu-io + icu-le + icu-lx + icu-uc + efreet-mime + capi-appfw-application + capi-media-player + capi-media-sound-manager + capi-media-image-util + pmapi + capi-media-metadata-extractor + capi-content-media-content + capi-content-mime-type + ui-gadget-1 +) + + +FOREACH(flag ${pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMACHINE_$ENV{MACHINE} -fPIC") + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fpie") +SET(CMAKE_C_FLAGS_RELEASE "-O2 -fpie") + + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"") +ADD_DEFINITIONS("-D_LARGEFILE64_SOURCE") +ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=\"\"64") + + +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(BINDIR "${PREFIX}/bin") +SET(RESDIR "${PREFIX}/res") +SET(THUMBDIR "/opt/usr/media/.video_thumb") +SET(LOCALEDIR "${RESDIR}/locale") +SET(ICONDIR "${RESDIR}/icons/default/small") +SET(EDJDIR "${RESDIR}/edje") +SET(SLP_LD_PATH_FLAGS -L${CMAKE_CURRENT_SOURCE_DIR}/src/ext) + +ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"") +ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"") +ADD_DEFINITIONS("-DTHUMBDIR=\"${THUMBDIR}\"") +ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") +ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"") +ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"") +ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64") +ADD_DEFINITIONS("-DUSE_SWITCH") + + +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") +SET(CMAKE_LDFLAGS "-Wl,-zdefs" ) + +ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${gles_pkg_LDFLAGS} -ldl) + +ADD_CUSTOM_TARGET(main.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/main.edc +${CMAKE_BINARY_DIR}/res/edc/main.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/main.edc) + +ADD_CUSTOM_TARGET(vp_font.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/vp_font.edc +${CMAKE_BINARY_DIR}/res/edc/vp_font.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/vp_font.edc) + +ADD_CUSTOM_TARGET(image_res.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/image_res.edc +${CMAKE_BINARY_DIR}/res/edc/image_res.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/image_res.edc) + +ADD_CUSTOM_TARGET(panel.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/panel.edc +${CMAKE_BINARY_DIR}/res/edc/panel.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/panel.edc) + +ADD_CUSTOM_TARGET(progress.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/progress.edc +${CMAKE_BINARY_DIR}/res/edc/progress.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/progress.edc) + +ADD_CUSTOM_TARGET(control.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/control.edc +${CMAKE_BINARY_DIR}/res/edc/control.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/control.edc) + +ADD_CUSTOM_TARGET(animation.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/animation.edc +${CMAKE_BINARY_DIR}/res/edc/animation.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/animation.edc) + +ADD_CUSTOM_TARGET(subtitle.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/subtitle.edc +${CMAKE_BINARY_DIR}/res/edc/subtitle.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/subtitle.edc) + +ADD_CUSTOM_TARGET(vp-custom-winset-style.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/vp-custom-winset-style.edc +${CMAKE_BINARY_DIR}/res/edc/vp-custom-winset-style.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/vp-custom-winset-style.edc) + +ADD_CUSTOM_TARGET(option_button.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/option_button.edc +${CMAKE_BINARY_DIR}/res/edc/option_button.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/option_button.edc) + +ADD_CUSTOM_TARGET(popup_progressbar.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/popup_progressbar.edc +${CMAKE_BINARY_DIR}/res/edc/popup_progressbar.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/popup_progressbar.edc) + +ADD_CUSTOM_TARGET(vp-speedbox-popup.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/vp-speedbox-popup.edc +${CMAKE_BINARY_DIR}/res/edc/vp-speedbox-popup.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/vp-speedbox-popup.edc) + +ADD_CUSTOM_TARGET(vp-volume-popup.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/vp-volume-popup.edc +${CMAKE_BINARY_DIR}/res/edc/vp-volume-popup.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/vp-volume-popup.edc) + +ADD_DEPENDENCIES(${PROJECT_NAME} main.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} vp_font.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} image_res.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} panel.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} progress.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} control.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} animation.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} subtitle.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} vp-custom-winset-style.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} option_button.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} popup_progressbar.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} vp-speedbox-popup.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} vp-volume-popup.edj) + +###################################### +# install desktop file & icon, edje # +###################################### + +INSTALL(DIRECTORY DESTINATION ${THUMBDIR}) +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/main.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp_font.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/image_res.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/panel.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/progress.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/control.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/animation.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/subtitle.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-custom-winset-style.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/option_button.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/popup_progressbar.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-speedbox-popup.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-volume-popup.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.video-player.xml DESTINATION /usr/share/packages) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/org.tizen.video-player.png DESTINATION /usr/share/icons/default/small/) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/icon/ DESTINATION ${RESDIR}/images/icon) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/toolbar/ DESTINATION ${RESDIR}/images/toolbar) + +INSTALL(FILES LICENSE.Flora DESTINATION /usr/share/license RENAME ${PKG_NAME}) + +ADD_SUBDIRECTORY(res/po) diff --git a/LICENSE.Flora b/LICENSE.Flora new file mode 100755 index 0000000..4425b3b --- /dev/null +++ b/LICENSE.Flora @@ -0,0 +1,205 @@ +Flora License + +Version 1.0, May, 2012 + +http://floralicense.org/license/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and +all other entities that control, are controlled by, or are +under common control with that entity. For the purposes of +this definition, "control" means (i) the power, direct or indirect, +to cause the direction or management of such entity, +whether by contract or otherwise, or (ii) ownership of fifty percent (50%) +or more of the outstanding shares, or (iii) beneficial ownership of +such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation source, +and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, +made available under the License, as indicated by a copyright notice +that is included in or attached to the work (an example is provided +in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial +revisions, annotations, elaborations, or other modifications represent, +as a whole, an original work of authorship. For the purposes of this License, +Derivative Works shall not include works that remain separable from, +or merely link (or bind by name) to the interfaces of, the Work and +Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original +version of the Work and any modifications or additions to that Work or +Derivative Works thereof, that is intentionally submitted to Licensor +for inclusion in the Work by the copyright owner or by an individual or +Legal Entity authorized to submit on behalf of the copyright owner. +For the purposes of this definition, "submitted" means any form of +electronic, verbal, or written communication sent to the Licensor or +its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor +for the purpose of discussing and improving the Work, but excluding +communication that is conspicuously marked or otherwise designated +in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +"Tizen Certified Platform" shall mean a software platform that complies +with the standards set forth in the Compatibility Definition Document +and passes the Compatibility Test Suite as defined from time to time +by the Tizen Technical Steering Group and certified by the Tizen +Association or its designated agent. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work +solely as incorporated into a Tizen Certified Platform, where such +license applies only to those patent claims licensable by such +Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work solely +as incorporated into a Tizen Certified Platform to which such +Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim +in a lawsuit) alleging that the Work or a Contribution incorporated +within the Work constitutes direct or contributory patent infringement, +then any patent licenses granted to You under this License for that +Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof pursuant to the copyright license +above, in any medium, with or without modifications, and in Source or +Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works + a copy of this License; and + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + 3. You must retain, in the Source form of any Derivative Works that + You distribute, all copyright, patent, trademark, and attribution + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable + copy of the attribution notices contained within such NOTICE file, + excluding those notices that do not pertain to any part of + the Derivative Works, in at least one of the following places: + within a NOTICE text file distributed as part of the Derivative Works; + within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, + if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only + and do not modify the License. + +You may add Your own attribution notices within Derivative Works +that You distribute, alongside or as an addendum to the NOTICE text +from the Work, provided that such additional attribution notices +cannot be construed as modifying the License. You may add Your own +copyright statement to Your modifications and may provide additional or +different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works +as a whole, provided Your use, reproduction, and distribution of +the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Flora License to your work + +To apply the Flora License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Flora License, Version 1.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://floralicense.org/license/ + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100755 index 0000000..fca93f4 --- /dev/null +++ b/NOTICE @@ -0,0 +1,3 @@ +Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Flora License, Version 1. +Please, see the LICENSE.Flora file for Flora License, Version 1 terms and conditions. \ No newline at end of file diff --git a/include/mp-drm-ctrl.h b/include/mp-drm-ctrl.h new file mode 100644 index 0000000..ea22cf6 --- /dev/null +++ b/include/mp-drm-ctrl.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_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..de71541 --- /dev/null +++ b/include/mp-external-ug.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_EXTERNAL_UG_ +#define _MP_EXTERNAL_UG_ + + +#include + + +typedef enum +{ + MP_EXTERNAL_UG_NONE = -1, + MP_EXTERNAL_UG_MESSAGE = 0, + MP_EXTERNAL_UG_EMAIL, + MP_EXTERNAL_UG_MYFILE_DETAIL, + MP_EXTERNAL_UG_YOUTUBE, + MP_EXTERNAL_UG_BLUETOOTH, + MP_EXTERNAL_UG_FTM, + MP_EXTERNAL_UG_FACEBOOK, + MP_EXTERNAL_UG_MAX, +}MpExternalUGType; + + +bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void* pUserData); +void MpExternalUgUnload(void); +void MpExternalUgDestroyAll(void); +int MpExternalUgGetCurUgState(void); +void MpExternalUgSetUgState(MpExternalUGType nExternalUGType); +bool MpExternalUgShow(void *pUserData, void *pParent); +void MpExternalUgHide(); + +#endif // _MP_EXTERNAL_UG_ diff --git a/include/mp-util-media-service.h b/include/mp-util-media-service.h new file mode 100644 index 0000000..7aaff60 --- /dev/null +++ b/include/mp-util-media-service.h @@ -0,0 +1,123 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +#ifndef _MP_UTIL_DATABASE_ +#define _MP_UTIL_DATABASE_ + +#include "video-player.h" +#include + +typedef enum +{ + MP_MEDIA_VIDEO_FILE_TYPE = 0, + MP_MEDIA_CAMERA_FILE_TYPE, + MP_MEDIA_ALL_FILE_TYPE, + MP_MEDIA_FILE_TYPE_MAX, +}MpMediaSvcVideoFileType; + +typedef enum +{ + MP_MEDIA_SORT_BY_NONE = 0, + MP_MEDIA_SORT_BY_NAME_ASC, + MP_MEDIA_SORT_BY_NAME_DESC, + MP_MEDIA_SORT_BY_DATE_MOST_RECENT, + MP_MEDIA_SORT_BY_OLDEST, + MP_MEDIA_SORT_BY_MAX, +}MpMediaSvcSortType; + +typedef enum +{ + MP_MEDIA_LIST_TYPE_FOLDER = 0, + MP_MEDIA_LIST_TYPE_ALL_FOLDER_GALLERY, + MP_MEDIA_LIST_TYPE_TAG_GALLERY, + MP_MEDIA_LIST_TYPE_FAVORITE, + MP_MEDIA_LIST_TYPE_ALLSHARE, + MP_MEDIA_LIST_TYPE_MAX, +}MpMediaSvcListType; + + +void MpUtilMediaSvcInitSession(void); +void MpUtilMediaSvcFinishSession(void); + +//////////////////////////////////////////////////////// +// Manage video item list + +// For gallery list +bool MpUtilMediaSvcExtractVideoListFromFolder(char* szFolderPath, int nSortType); // For myfiles. +bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType); // For 'All' folder of gallery. +bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType); // For only video type files of video list view. +bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType); // For only recorded type files of video list view. +bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName); // For tag folder of gallery. +bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType); // For favorite naming of gallery. +bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword); // For only video type files of video search view*/ + + +void MpUtilMediaSvcDestoryVideoList(void); +bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath); +bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex); +bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex); + + +bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID); +char* MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri); +unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath); +unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath); +int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath); +void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime); + +bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char* szCurrMediaUri, char* szPreMediaUri, char* szNextMediaUri,bool bLoop); + +// For video list +char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex); +char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex); +char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex); +time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex); +char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex); +double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex); +double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex); + +int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void); +int MpUtilMediaSvcGetNumberOfVideoItemByType(void); +int MpUtilMediaSvcGetTotalVideoTypeFiles(void); +void MpUtilMediaSvcPrintListInfo(void); +int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath); + +// For folder list +bool MpUtilMediaSvcExtractVideoFolderList(int nSortType); +bool MpUtilMediaSvcDestoryVideoFolderList(void); +int MpUtilMediaSvcGetVideoFolderListSize(void); +char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex); +char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex); + +//////////////////////////////////////////////////////// +// Manage bookmark + +bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list); +void MpUtilMediaSvcBookmarkListClear(GList *list); +int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path); +int MpUtilMediaSvcBookmarkDelete(char *vid, int position); +int MpUtilMediaSvcBookmarkDeleteAll(char *vid); +char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle); +int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle); + +#endif // _MP_UTIL_DATABASE_ \ No newline at end of file diff --git a/include/mp-util.h b/include/mp-util.h new file mode 100755 index 0000000..81f0cd6 --- /dev/null +++ b/include/mp-util.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_UTIL_ +#define _MP_UTIL_ + + +#include "video-player.h" + + +typedef enum +{ + NORMAL_POPUP_RETURN_TYPE_UNKNOW = 0, + NORMAL_POPUP_RETURN_TYPE_YES, + NORMAL_POPUP_RETURN_TYPE_NO, + NORMAL_POPUP_RETURN_TYPE_ERR, +}NormalPopUpRetType; + + +void MpUtilResetForRelaunching(void); +void MpUtilSetAlphaOfMainWindow(bool bSetAlpha); +void* MpUtilCreateMainWindow(const char *pStrName); + +int MpUtilSetKeyGrab(const char* szKeyName, int nGrabMode); +int MpUtilSetKeyUngrab(const char* szKeyName); +bool MpUtilCheckRTSPType(char *szUriPath); +int MpUtilCheckUriType(char *szUriPath); +bool MpUtilCheckLocalFileExist(char *uri); +bool MpUtilCheckBatteryStatus(void); +int MpUtilBatteryStatusNoti(VideoAppData* pAppData); +int MpUtilBatteryStatusNotiIgnore(void); +int MpUtilMMCstatusNoti(VideoAppData* pAppData); +int MpUtilMMCstatusNotiIgnore(void); +int MpUtilCheckDlnaSortType(void* pSvcHandle, char* szBundleKey); +int MpUtilCheckDlnaMediaID(void* pSvcHandle, char* szBundleKey); +int MpUtilGetRotationStateFromAppcore(void); +int MpUtilGetRotationState(void); +void MpUtilSetRotationState(int nCurRotation); +bool MpUtilGetTitleFromFilepath(char* szFilepath, char* szTitle, int nLengthTitle); +void MpUtilInitSession(void); +void MpUtilFinishSession(void); +void MpUtilDeletePopupHandle(void); +bool MpUtilNotifyPopUp(VideoAppData* pAppData, char* szContents, void* PopupButtonCallbackFunc); +bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,void *PopupButtonCallbackFunc); +bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc); +bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData); +bool MpUtilProgressPopUp(VideoAppData* pAppData, char* szLabel); +void MpUtilStatusBarNotiPopupShow(const char *szStr); +void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func); +void* MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func); +void* MpUtilLoadEdjFile(Evas* pEvas, char* szEdjName, char* szGroupName); +bool MpUtilIsCallOff(void); +bool MpUtilIsCameraOff(void); +bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData); +bool MpUtilIsConnectEarjack(void); +bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData); +bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl); +bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize); +bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl); +bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize); +unsigned int MpUtilGetMainWindowXID(void); +void MpUtilRotateWindow(int nRotateMode, void* pWindowHandle); +void MpUtilGetUserAgent(VideoAppData* pAppData); +double MpUtilGetSysTime(void); +void MpUtilLcdNormalPowerLockForResume(void); +void MpUtilLcdNormalPowerUnlockForPause(void); +void MpUtilLcdOffForPowerButton(void); +bool MpUtilTurnOverSensorInit(void *pUserData); +bool MpUtilTurnOverSensorDestroy(void); +void MpUtilMultimediaKeyGrab(void); +void MpUtilMultimediaKeyUngrab(void); +void MpUtilMultimediaVolumeKeyGrab(void); +void MpUtilMultimediaVolumeKeyUngrab(void); + +char* MpUtilGetFileSize(unsigned int size); +void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour); +bool MpUtilAddToHome(const char *file_path); +void MpUtilLayoutVisibleOff(void *pWindowHandle); + +#endif // _MP_UTIL_ diff --git a/include/mp-video-animation-ctrl.h b/include/mp-video-animation-ctrl.h new file mode 100755 index 0000000..3fc3c88 --- /dev/null +++ b/include/mp-video-animation-ctrl.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_LOADING_ANIMATION_CTRL_ +#define _VIDEO_LOADING_ANIMATION_CTRL_ + + +void* MpVideoAnimationCtrlInit(void* pUserData); +void MpVideoAnimationCtrlDestroy(void); +void MpVideoAnimationCtrlSetPercent(int nPercent); +void MpVideoAnimationCtrlPlay(void); +void MpVideoAnimationCtrlStop(void); +void MpVideoAnimationCtrlShow(void); +void MpVideoAnimationCtrlHide(void); +bool MpVideoAnimationCtrlGetActiveState(void); + + +#endif /* _VIDEO_LOADING_ANIMATION_CTRL_ */ + diff --git a/include/mp-video-app-ctrl.h b/include/mp-video-app-ctrl.h new file mode 100644 index 0000000..19155ec --- /dev/null +++ b/include/mp-video-app-ctrl.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_APP_CTRL_ +#define _VIDEO_APP_CTRL_ + + +#include "video-player.h" + + +bool MpVideoAppCtrlInit(VideoAppData* pAppData); +bool MpVideoAppCtrlResetForRelaunching(VideoAppData* pAppData); +bool MpVideoAppCtrlIsTopView(void* pUserData); +bool MpVideoAppCtrlIsExistPlayerHandle(void); +void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState); +void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData); +bool MpVideoAppCtrlGetFloatingStatus(void); +bool MpVideoAppCtrlIsCheckCallStatus(void); +void MpVideoAppCtrlInitCheckCallStatus(void); + +#endif /* _VIDEO_APP_CTRL_ */ diff --git a/include/mp-video-ctrl-mgr.h b/include/mp-video-ctrl-mgr.h new file mode 100644 index 0000000..bc9cc29 --- /dev/null +++ b/include/mp-video-ctrl-mgr.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_VIDEO_CTRL_MGR_H_ +#define _MP_VIDEO_CTRL_MGR_H_ + + +bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pOverlayXid, void *pEvasSinkID, char* szSubtitleUri, void *pUserData); +bool MpVideoCtrlMgrMediaRealize(void); +bool MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData); +void MpVideoCtrlMgrMediaDestroy(void* pUserData); +bool MpVideoCtrlMgrMediaPlay(void* pUserData); +void MpVideoCtrlMgrMediaStop(void* pUserData); +void MpVideoCtrlMgrMediaPause(void* pUserData); +void MpVideoCtrlMgrMediaResume(void* pUserData); +void MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *PlayerSubtitleCb, void *pUserData); +void MpVideoCtrlMgrSetOverlayXid(void* pXid); +void MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData); +void MpVideoCtrlMgrSetSubtitlePosition(int nSetPosition); +int MpVideoCtrlMgrGetPosition(void); +int MpVideoCtrlMgrGetDuration(void); +void MpVideoCtrlMgrResetPlaySpeed(void* pUserData); +void MpVideoCtrlMgrSetPlaySpeedUp(void* pUserData); +void MpVideoCtrlMgrSetPlaySpeedDown(void* pUserData); +int MpVideoCtrlMgrGetVideoWidthResolution(void); +int MpVideoCtrlMgrGetVideoHeightResolution(void); +void MpVideoCtrlMgrSetRatioVideoScreen(void* pUserData, int nRatioScreenSize); +void MpVideoCtrlMgrRotateVideoScreen(int nVideoRotateValue); +void MpVideoCtrlMgrSetMute(bool bMuteEnable); +bool MpVideoCtrlMgrGetMuteState(void); +int MpVideoCtrlMgrGetBufferingPosition(void); +bool MpVideoCtrlMgrIsExistPlayerHandle(void); +bool MpVideoCtrlMgrIsOnlyAudio(void); +bool MpVideoCtrlMgrSetScaling(bool bScale); +int MpVideoCtrlMgrGetErrorType(int nErrorVal); +void MpVideoCtrlMgrSetMute(bool bState); +int MpVideoCtrlMgrGetClosedCaptionCount(void); + + +#endif diff --git a/include/mp-video-display-view.h b/include/mp-video-display-view.h new file mode 100644 index 0000000..52f075e --- /dev/null +++ b/include/mp-video-display-view.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +#ifndef _VIDEO_DISPLAY_VIEW_ +#define _VIDEO_DISPLAY_VIEW_ + + +typedef enum +{ + MP_DISPLAY_VIEW_STATE_ACTIVATE = 0, + MP_DISPLAY_VIEW_STATE_UNACTIVATE, + MP_DISPLAY_VIEW_STATE_MAX, +}VideoDisplayViewState; + +typedef void (*ChangeDisplayViewCbFunc)(int nChangePlayerView, void* pUserData); + +void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb); +void MpVideoDisplayViewPop(void *pNaviFrame, void* pUserData); +void MpVideoDisplayViewDestroy(void *pUserData); + +void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData); +void MpVideoDisplayViewUpdatePauseKey(void); +void MpVideoDisplayViewUpdateResumeKey(void); +void MpVideoDisplayViewShowControlPanel(void *pUserData); +void MpVideoDisplayViewHideControlPanel(void *pUserData); +void MpVideoDisplayViewActivate(void); +void MpVideoDisplayViewUnactivate(void); +void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData); +bool MpVideoDisplayViewIsTopView(void); +void MpVideoDisplayViewShowNocontentImage(void *pUserData); +void MpVideoDisplayViewHideNocontentImage(void); +void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData); +void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData); +void MpVideoDisplayViewResetProgressBar(void *pUserData); +bool MpVideoDisplayViewIsPauseByUser(void); +void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser); +void MpVideoDisplayViewUpdateProgressBar(void *pUserData); + +#endif diff --git a/include/mp-video-info-ctrl.h b/include/mp-video-info-ctrl.h new file mode 100755 index 0000000..2cb63d5 --- /dev/null +++ b/include/mp-video-info-ctrl.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _VIDEO_INFO_CTRL_ +#define _VIDEO_INFO_CTRL_ + +bool MpVideoInfoCtrlGetGPS(char *szUriPath, double *nLongtitude, double *nLatitude); +bool MpVideoInfoCtrlGetResolution(char *szWidthResolution, char *szHeightResolution, void *pUserData); +bool MpVideoInfoCtrlGetFileInfo(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize); +#endif diff --git a/include/mp-video-info-view.h b/include/mp-video-info-view.h new file mode 100755 index 0000000..7a433e8 --- /dev/null +++ b/include/mp-video-info-view.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_INFO_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..b253481 --- /dev/null +++ b/include/mp-video-log.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_LOG_H_ +#define _VIDEO_LOG_H_ + +#include +#include +#include + + +#ifdef LOG_TAG +#undef LOG_TAG +#endif + + +#define LOG_TAG "video-player" + +//#define video_info(fmt,arg...) LOGD( "[%s : %d] " fmt "\n", __FUNCTION__,__LINE__, ##arg) +//#define video_info(fmt,arg...) LOGI( "[%s : %d] " fmt , __FUNCTION__,__LINE__, ##arg) +//#define video_info(fmt,arg...) LOGI(fmt , ##arg) +//#define video_info(fmt,arg...) printf(fmt , ##arg) +//#define video_info(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) + +//#define video_info(fmt,arg...) LOGI( "[VP][%s][%d]" fmt "\n", __FUNCTION__,__LINE__, ##arg) +//#define video_debug(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_warning(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_error(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##arg) + +#define VideoLogInfoWithTid(fmt,arg...) LOGI( "[VP][TID:%d][%s][%d]" fmt "\n", syscall(__NR_gettid), __FUNCTION__, __LINE__, ##arg) +#define VideoLogInfo(fmt,arg...) LOGI( "[VP][%s][%d]" fmt "\n", __FUNCTION__,__LINE__, ##arg) +#define VideoLogDebug(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +#define VideoLogWarning(fmt,arg...) LOGD( "[%s %s: %d]\033[0;33m [WARN] " fmt "\033[0m\n", __FILE__, __FUNCTION__, __LINE__, ##arg) +#define VideoLogError( fmt,arg...) LOGD( "[%s %s: %d]\033[0;31m [ERR] " fmt "\033[0m\n", __FILE__, __FUNCTION__, __LINE__, ##arg) + + +//#define video_info(fmt,arg...) printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_debug(fmt,arg...) printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_warning(fmt,arg...) printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_error( fmt,arg...) printf( "[%s %s : %d] " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##arg) + + +#endif /*_MPVIDEO_LOG_H_*/ diff --git a/include/mp-video-player-mgr.h b/include/mp-video-player-mgr.h new file mode 100644 index 0000000..427a000 --- /dev/null +++ b/include/mp-video-player-mgr.h @@ -0,0 +1,125 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_VIDEO_PLAYER_MGR_H_ +#define _MP_VIDEO_PLAYER_MGR_H_ + + +#include +#include +#include +#include + + +typedef enum +{ + DISPLAY_METHOD_LETTER_BOX = 0, + DISPLAY_METHOD_ORIGIN_SIZE, + DISPLAY_METHOD_FULL_SCREEN, + DISPLAY_METHOD_CROPPED_FULL, + DISPLAY_METHOD_CUSTOM_ROI, +}MpPlayerMgrDisplayMethod; + + +typedef enum +{ + VIDEO_SCREEN_UNKNOWN = 0, + VIDEO_SCREEN_PORTRAIT, + VIDEO_SCREEN_LANDSCAPE, + VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN, + VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN, +}MpVideoRotation; + + +typedef enum +{ + SOUND_EFFECT_NORMAL = 0, + SOUND_EFFECT_VOICE, + SOUND_EFFECT_MOVIE, + SOUND_EFFECT_51CH, + SOUND_EFFECT_MAX, +}MpSoundEffectType; + + +typedef enum +{ + FILE_STREAM_TYPE_NOTHING = 0, + FILE_STREAM_TYPE_VIDEO_AUDIO, + FILE_STREAM_TYPE_AUDIO, + FILE_STREAM_TYPE_VIDEO, + FILE_STREAM_TYPE_MAX, +}MpFileStreamType; + +bool MpPlayerMgrIsActive(void); +bool MpPlayerMgrRegistePlayerCallback(void *PlayerCompletedCbFunc, void *PlayerInterruptedCbFunc, void *PlayerErrorCbFunc, void *PlayerBufferingCbFunc, void *PlayerSubtitleCbFunc, void *pUserData); + +bool MpPlayerMgrCreate (const char* szPath); +bool MpPlayerMgrDestroy (void); + +bool MpPlayerMgrRealize (void); +bool MpPlayerMgrRealizeAsync(void *pPrepareCb, void *pUserData); + +bool MpPlayerMgrUnrealize(void); + +bool MpPlayerMgrPlay (void); +bool MpPlayerMgrStop (void); +bool MpPlayerMgrResume (void); +bool MpPlayerMgrPause (void); + +int MpPlayerMgrGetPosition(void); +void MpPlayerMgrSetPosition(unsigned int nPos, void *pSeekCb, void *pUserData); +void MpPlayerMgrSetSubtitlePosition(unsigned int nPos); + +void MpPlayerMgrSetMute(bool bMuteEnable); +bool MpPlayerMgrGetMute(void); + +bool MpPlayerMgrSetSurroundFilters(int nSurround); + + +int MpPlayerMgrGetDuration(void); +bool MpPlayerMgrSetOverlayXid(void* pOverlayXid); +bool MpPlayerMgrSetEvasSinkID(void *pEvasSinkID); + +bool MpPlayerMgrSetSoundPriority(void); +int MpPlayerMgrSetPlaySpeed(float nSpeedValue); +int MpPlayerMgrGetVideoWidthResolution(void); +int MpPlayerMgrGetVideoHeightResolution(void); +bool MpPlayerMgrSetSubtitle(char* szSubtitlePath); + +int MpPlayerMgrSetDisplayArea(int nX, int nY, int nWidth, int nHeight); +bool MpPlayerMgrSetRotate(MpVideoRotation nRotation); +bool MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode); + +bool MpPlayerMgrSetUseragentForStreaming(const char* szUserAgent); +bool MpPlayerMgrSetProxyAddressForStreaming(const char* szProxyAddress); +bool MpPlayerMgrSetCookieForStreaming(const char* szCookie); + +bool MpPlayerMgrStartCapture(); +bool MpPlayerMgrCaptureVideo(void *pCallbackFunc, void *pUserData); + +int MpPlayerMgrGetBufferingPosition(void); +bool MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData); +int MpPlayerMgrGetFileStreamType(void); +bool MpPlayerMgrSetScaling(bool bScale); +void MpPlayerMgrSetVolume(float volume); +float MpPlayerMgrGetVolume(void); + +player_state_e MpPlayerMgrGetPlayerState(void); + +int MpPlayerMgrGetClosedCaptionCount(void); + +#endif diff --git a/include/mp-video-progressbar.h b/include/mp-video-progressbar.h new file mode 100755 index 0000000..d861dba --- /dev/null +++ b/include/mp-video-progressbar.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_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..470111e --- /dev/null +++ b/include/mp-video-service-ctrl.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_SERVICE_CTRL_ +#define _VIDEO_SERVICE_CTRL_ + + +typedef enum +{ + MP_ERROR_PLAYER_TYPE = 0, + MP_NONE_VIEW_TYPE, + MP_VIDEO_PLAYER, + MP_VIDEO_PLAYER_SIMPLE, + MP_VIDEO_PLAYER_EMAIL, + MP_VIDEO_PLAYER_MMS, + MP_VIDEO_PLAYER_GALLERY, + MP_STREAMING_PLAYER, + MP_MAX_PLAYER_TYPE, +}MpPlayerViewType; + + +void MpVideoServiceCtrlReset(void); +int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char** szMediaUri); + + +int MpVideoServiceCtrlGetLatestTime(void); +int MpVideoServiceCtrlGetPlayerTypeWithoutLog(void); +int MpVideoServiceCtrlGetPlayerType(void); +void MpVideoServiceCtrlSetPlayerType(int nSetPlayerType); +int MpVideoServiceCtrlGetPrevPlayerType(void); +void MpVideoServiceCtrlSetPrevPlayerType(int nSetPlayerType); +char* MpVideoServiceCtrlGetCookieForStreaming(void); + +#endif //_VIDEO_SERVICE_CTRL_ diff --git a/include/mp-video-sound-path-ctrl.h b/include/mp-video-sound-path-ctrl.h new file mode 100755 index 0000000..4ae216e --- /dev/null +++ b/include/mp-video-sound-path-ctrl.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_VIDEO_SOUND_PATH_ +#define _MP_VIDEO_SOUND_PATH_ + + +bool MpVideoSoundpathShow(void* pUserData); +void MpVideoSoundpathHide(void); + +bool MpVideoSoundpathIsConnectOtherSoundpath(void); + +#endif // _MP_VIDEO_SOUND_PATH_ \ No newline at end of file diff --git a/include/mp-video-streaming-ctrl.h b/include/mp-video-streaming-ctrl.h new file mode 100755 index 0000000..be59475 --- /dev/null +++ b/include/mp-video-streaming-ctrl.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _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..3f93ece --- /dev/null +++ b/include/mp-video-streaming-view.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_STREAMING_VIEW_ +#define _VIDEO_STREAMING_VIEW_ + + +typedef enum +{ + MP_STREAMING_VIEW_STATE_ACTIVATE = 0, + MP_STREAMING_VIEW_STATE_UNACTIVATE, + MP_STREAMING_VIEW_STATE_MAX, +}VideoStreamingViewState; + +typedef void (*ChangeStreamingViewCbFunc)(int nChangePlayerView, void* pUserData); + +void MpVideoStreamingViewPush(void* pNaviFrame, int nPlayerType, void* pUserData, ChangeStreamingViewCbFunc pChangeViewCb); +void MpVideoStreamingViewPop(void* pNaviFrame, void* pUserData); +void MpVideoStreamingViewDestroy(void* pUserData); + +void MpVideoStreamingViewInitAfterBeginOfStream(void* pUserData); +void MpVideoStreamingViewUpdatePauseKey(void); +void MpVideoStreamingViewUpdateResumeKey(void); +void MpVideoStreamingViewShowControlPanel(void* pUserData); +void MpVideoStreamingViewHideControlPanel(void* pUserData); +void MpVideoStreamingViewActivate(void); +void MpVideoStreamingViewUnactivate(void); +void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide); +void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate); +bool MpVideoStreamingViewGetBufferingState(void); +bool MpVideoStreamingViewIsTopView(void); +void MpVideoStreamingViewShowNocontentImage(void *pUserData); +void MpVideoStreamingViewHideNocontentImage(void); +void MpVideoStreamingViewPortrate(void); +void MpVideoStreamingViewLandscape(void); +void MpVideoStreamingViewUpdateProgressBar(void *pUserData); + +#endif diff --git a/include/mp-video-string-define.h b/include/mp-video-string-define.h new file mode 100644 index 0000000..1c5febf --- /dev/null +++ b/include/mp-video-string-define.h @@ -0,0 +1,166 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_STRING_DEFINE_ +#define _VIDEO_STRING_DEFINE_ + +#include + +#define MP_SYS_STRING "sys_string" +#define MP_STREAMING_PLAYER_STR "Streaming player" +#define MP_VPL_SOUND_ALIVE "Sound Alive" +#define MP_VPL_ADD_TO_HOME _("IDS_AT_BUTTON_ADD_TO_HOME") +#define MP_VIDEO_SOUND_PATH "Sound Path" + + + + +/* SMTP Repeat mode string */ +#define MP_VPL_REPEAT_OFF "Stop after current " +#define MP_VPL_REPEAT_ALL_OFF "Stop after playing all " +#define MP_VPL_REPEAT_ONE "Repeat the current " +#define MP_VPL_REPEAT_ALL "Repeat all " + + +#define MP_SHARE_MESSAGE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_MESSAGE")) +#define MP_SHARE_EMAIL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_EMAIL")) +#define MP_SHARE_BLUETOOTH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_BLUETOOTH")) +#define MP_SHARE_FTM (dgettext(MP_SYS_STRING, "IDS_COM_BODY_WI_FI")) +#define MP_SHARE_FACEBOOK (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FACEBOOK")) +#define MP_SHARE_YOUTUBE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_YOU_TUBE")) +#define MP_SHARE_ALLSHARE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_ALLSHARE")) + + +// SMTP video player string +#define MP_VPL_UNABLE_TO_PLAY_VIDEO "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +#define MP_VPL_HEADER_SHARE_VIDEO_ABB "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +#define MP_VPL_OPT_SET_AS "IDS_VPL_OPT_SET_AS" +#define MP_VPL_POP_INVALID_STREAMING_DATA "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +#define MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +#define MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +#define MP_VPL_POP_UNSUPPORTED_FILE_TYPE "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +#define MP_VPL_SOUND_ALIVE_NORMAL "IDS_VPL_OPT_NORMAL" +#define MP_VPL_SOUND_ALIVE_VOICE "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +#define MP_VPL_SOUND_ALIVE_MOVIE "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +#define MP_VPL_SOUND_ALIVE_51CH "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +#define MP_VPL_51CH_ONLY_EARPHONE "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +#define MP_VPL_GPS_LATITUDE "IDS_VPL_BODY_LATITUDE" +#define MP_VPL_GPS_LONGITUTD "IDS_VPL_BODY_LONGITUDE" +#define MP_VPL_TRIM "IDS_VPL_SK3_TRIM" +#define MP_VPL_SUBTITLES "IDS_VPL_OPT_SUBTITLES" +#define MP_VPL_AUDIO_TRACK _("IDS_VPL_OPT_AUDIO_TRACK") +#define MP_VPL_VIDEO_AUTO_OFF _("IDS_VPL_HEADER_VIDEO_AUTO_OFF_ABB") +#define MP_VPL_BODY_NORMAL _("IDS_VPL_BODY_NORMAL") +#define MP_VPL_BODY_WARM _("IDS_VPL_BODY_WARM") +#define MP_VPL_BODY_COLD _("IDS_VPL_BODY_COLD_M_COLOURTONE") +#define MP_VPL_BODY_COLOR_TONE _("IDS_VPL_BODY_COLOUR_TONE") +#define MP_VPL_OUTDOOR_VISIBILITY _("IDS_VPL_OPT_OUTDOOR_VISIBILITY") +#define MP_VPL_BODY_AFTER_PD_HOURS _("IDS_VPL_BODY_AFTER_PD_HOURS") +#define MP_VPL_BODY_AFTER_PD_MINUTES _("IDS_VPL_BODY_AFTER_PD_MINUTES") +#define MP_VPL_OPT_AFTER_1_HOUR_30_MIN _("IDS_VPL_OPT_AFTER_1_HOUR_30_MIN") +#define MP_VPL_BODY_AFTER_1_HOUR _("IDS_VPL_BODY_AFTER_1_HOUR") + + +/* SMTP Subtitle option string */ +#define MP_VPL_SUBTITLE_SIZE_LARGE _("IDS_VPL_BODY_LARGE") +#define MP_VPL_SUBTITLE_SIZE_MEDIUM _("IDS_VPL_BODY_MEDIUM") +#define MP_VPL_SUBTITLE_SIZE_SMALL _("IDS_VPL_BODY_SMALL") +#define MP_VPL_SUBTITLE_SHOW _("IDS_VPL_BODY_SUBTITLES_ON") +#define MP_VPL_SUBTITLE_HIDE _("IDS_VPL_BODY_SUBTITLES_OFF") +#define MP_VPL_SUBTITLE_SIZE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE")) +#define MP_VPL_SUBTITLE_LANGUAGE (dgettext(MP_SYS_STRING, "IDS_COM_SK_LANGUAGE")) +#define MP_VPL_SUBTITLE_SYNC (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SYNCHRONIZE")) + + +// SMTP others module string +#define MP_BT_POP_FILEBROWSINGFAIL "IDS_BT_POP_FILEBROWSINGFAIL" +#define MP_BLUETOOTH_HEADSET_DISCONNECTED "IDS_DVBH_POP_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +#define MP_WGT_POP_ALLOW_TO_DELETE_FILE_Q "IDS_WGT_POP_ALLOW_TO_DELETE_FILE_Q" +#define MP_EBOOK_BODY_LOADING_ING "IDS_EBOOK_BODY_LOADING_ING" +#define MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" + +// SORT +#define MP_VPL_SORT_BY_TITLE _("IDS_VPL_OPT_SORT_BY") +#define MP_VPL_OPT_NAME_HA_TO_Z _("IDS_VPL_OPT_NAME_HA_TO_Z") +#define MP_VPL_OPT_NAME_HZ_TO_A _("IDS_VPL_OPT_NAME_HZ_TO_A") +#define MP_VPL_OPT_DATE_HMOST_RECENT _("IDS_VPL_OPT_DATE_HMOST_RECENT") +#define MP_VPL_OPT_DATE_HOLDEST _("IDS_VPL_OPT_DATE_HOLDEST") + + +// Default system string +#define MP_COM_POP_ERROR (dgettext(MP_SYS_STRING, "IDS_COM_POP_ERROR")) +#define MP_COM_BODY_LOW_BATTERY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_LOW_BATTERY")) +#define MP_COM_BODY_DELETE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DELETE")) +#define MP_COM_BODY_DELETE_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETE_Q")) +#define MP_COM_BODY_SELECT_ALL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SELECT_ALL")) +#define MP_COM_POP_SELECTED (dgettext(MP_SYS_STRING, "IDS_COM_POP_SELECTED")) +#define MP_COM_POP_DELETED (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETED")) +#define MP_COM_SK_BACK (dgettext(MP_SYS_STRING, "IDS_COM_SK_BACK")) + +#define MP_COM_SK_YES (dgettext(MP_SYS_STRING, "IDS_COM_SK_YES")) +#define MP_COM_SK_NO (dgettext(MP_SYS_STRING, "IDS_COM_SK_NO")) +#define MP_COM_BUTTON_CANCEL (dgettext(MP_SYS_STRING, "IDS_IDLE_BUTTON_CANCEL")) +#define MP_COM_BUTTON_SHARE (dgettext(MP_SYS_STRING, "IDS_COM_BUTTON_SHARE")) +#define MP_COM_BODY_SIZE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE")) +#define MP_COM_BODY_DETAILS_TITLE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS_TITLE")) +#define MP_COM_BODY_FORMAT (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FORMAT")) +#define MP_COM_POP_DATE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DATE" )) +#define MP_COM_BODY_SOUNDS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS")) +#define MP_IDLE_BODY_RESOLUTION (dgettext(MP_SYS_STRING, "IDS_IDLE_BODY_RESOLUTION")) +#define MP_COM_BODY_DETAILS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS")) +#define MP_VIDEO_POPUP_SHARE (dgettext(MP_SYS_STRING, "IDS_COM_SK4_SHARE")) +#define MP_COM_SEARCH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SEARCH")) +#define MP_COM_CLOSE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_CLOSE")) + +#define MP_COM_SOUND_ALIVE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS")) +#define MP_COM_SETTINGS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SETTINGS")) +#define MP_COM_POP_FILE_NOT_FOUND (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_FOUND")) +#define MP_COM_POP_INVALID_URL (dgettext(MP_SYS_STRING, "IDS_COM_POP_INVALID_URL")) +#define MP_COM_POP_CONNECTION_FAILED (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_FAILED")) +#define MP_COM_POP_FILE_NOT_EXIST (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_EXIST")) +#define MP_COM_POP_NO_VIDEOS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_NO_VIDEOS")) +#define MP_COM_VIDEOS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_VIDEOS")) +#define MP_COM_FOLDER (dgettext(MP_SYS_STRING, "IDS_COM_POP_FOLDER")) +#define MP_COM_CANCEL (dgettext(MP_SYS_STRING, "IDS_COM_SK_CANCEL")) +#define MP_COM_DELETE (dgettext(MP_SYS_STRING, "IDS_COM_OPT_DELETE")) +#define MP_COM_CONNECTION_FAIL (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_ERROR")) +#define MP_COM_REPEAT_MODE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_REPEAT")) +#define MP_COM_OPT_ADDED (dgettext(MP_SYS_STRING, "IDS_COM_OPT_ADDED")) +#define MP_COM_BODY_GENERAL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_GENERAL")) +#define MP_COM_BODY_DISPLAY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DISPLAY")) +#define MP_COM_BODY_OFF (dgettext(MP_SYS_STRING, "IDS_COM_BODY_OFF")) +#define MP_COM_RECORDED _("IDS_VPL_BODY_RECORDED") + +#define MP_VIDEO_CHAPTER_VIEW _("IDS_VPL_HEADER_CHAPTER_PREVIEW_ABB") + +#define MP_VPL_SORT_BY "Sort by" +#define MP_VPL_BOOKMARK_LIST_FULL _("IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS") + +/* DRM POPUP */ +#define MP_VPL_DRM_INTERVAL_BASED_DAYS _("You can use %s for %d days. Would you like to open it now?") +#define MP_VPL_DRM_TIME_BASED_GET _("%s is about to be locked. Do you want to get more licenses?") +#define MP_VPL_DRM_COUNT_BASED_OPEN_ONE _("You have one more use of %s. Do you want to open it now?") +#define MP_VPL_DRM_COUNT_BASED_OPEN_MANY _("You have %d more uses of %s. Do you want to open it now?") +#define MP_VPL_DRM_COUNT_BASED_ONE_MORE_GET _("You have one more use of %s. Do you want to get more licenses?") +#define MP_VPL_DRM_COUNT_BASED_NO_MORE_GET _("You have no more use of %s. Do you want to get more licenses?") +#define MP_VPL_DRM_UNLOCK _("%s is currently locked. Do you want to unlock it now?") + +/*DV*/ +#define DV_BTN_LABEL_SEARCH (dgettext("sys_string", "IDS_COM_SK_SEARCH")) +#define DV_BTN_LABEL_CANCEL (dgettext("sys_string", "IDS_COM_SK_CANCEL")) + +#endif //_VIDEO_STRING_DEFINE_ diff --git a/include/mp-video-subtitle-ctrl.h b/include/mp-video-subtitle-ctrl.h new file mode 100755 index 0000000..ac749a4 --- /dev/null +++ b/include/mp-video-subtitle-ctrl.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +#ifndef _MP_VIDEO_SUBTITLE_CTRL_ +#define _MP_VIDEO_SUBTITLE_CTRL_ + +bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath); +void *MpVideoSubtitleCtrlInit(void *pUserData, void *pParent); +void MpVideoSubtitleCtrlDestroy(void); +void MpVideoSubtitleCtrlUpdate(char *szTxt); + +bool MpVideoSubtitleCtrlIsExistSubtitle(void); +bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUriPath); +void MpVideoSubtitleCtrlSetLayoutShow(bool bShow); +void MpVideoSubtitleCtrlSetSizeMode(int nSizeMode); +int MpVideoSubtitleCtrlGetSizeMode(); +void MpVideoSubtitleCtrlSetShowStatus(bool bShow); +bool MpVideoSubtitleCtrlGetShowStatus(); + +void MpVideoSubtitleCtrlSetRotate(int nRotateStatus); +void MpVideoSubtitleCtrlSetLockScreen(bool bShow); + +#endif // _MP_VIDEO_SUBTITLE_CTRL_ + diff --git a/include/mp-video-type-define.h b/include/mp-video-type-define.h new file mode 100644 index 0000000..fe0ba94 --- /dev/null +++ b/include/mp-video-type-define.h @@ -0,0 +1,169 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_TYPE_DEFINE_ +#define _VIDEO_TYPE_DEFINE_ + + +typedef enum +{ + VIDEO_ROTATE_UNKNOWN = 0, + VIDEO_ROTATE_PORTRAIT_NORMAL, + VIDEO_ROTATE_PORTRAIT_REVERSE, + VIDEO_ROTATE_LANDSCAPE_NORMAL, + VIDEO_ROTATE_LANDSCAPE_REVERSE, +}MpVideoRotateType; + +typedef enum +{ + MP_HTTP_STREAMING = 0, + MP_RTSP_STREAMING, +}MpProtocolType; + +typedef enum +{ + MP_DISPLAY_METHOD_LETTER_BOX = 0, +}MpDisplayMethod; + +typedef enum +{ + MP_SOUND_PATH_SPEAKER = 0, + MP_SOUND_PATH_EARJACK, + MP_SOUND_PATH_BLUETOOTH, + MP_SOUND_PATH_MAX, +}MpSoundPathType; + +typedef enum +{ + MP_PLAYER_ERROR_NONE = 0, // Successful + MP_PLAYER_ERROR_OUT_OF_MEMORY, // Out of memory + MP_PLAYER_ERROR_INVALID_PARAMETER, // Invalid parameter + MP_PLAYER_ERROR_NO_SUCH_FILE, // No such file or directory + MP_PLAYER_ERROR_INVALID_OPERATION, // Invalid operation + MP_PLAYER_ERROR_SEEK_FAILED, // Seek operation failure + MP_PLAYER_ERROR_INVALID_STATE, // Invalid state + MP_PLAYER_ERROR_NOT_SUPPORTED_FILE, // Not supported file format + MP_PLAYER_ERROR_INVALID_URI, // Invalid URI + MP_PLAYER_ERROR_SOUND_POLICY, // Sound policy error + MP_PLAYER_ERROR_CONNECTION_FAILED, // Streaming connection failed + MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED, // Video capture failure + MP_PLAYER_ERROR_UNKNOWN_ERROR, // unknown error. +}MpPlayerErrorType; + +typedef enum +{ + MP_PLAYER_INTERRUPTED_COMPLETED = 0, // Interrupt completed + MP_PLAYER_INTERRUPTED_BY_OTHER_APP, // Interrupted by another application + MP_PLAYER_INTERRUPTED_BY_CALL, // Interrupted by incoming call + MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG, // Interrupted by unplugging headphone + MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT, // Interrupted by resource conflict + MP_PLAYER_INTERRUPTED_BY_ALARM, // Interrupted by alarm +}MpPlayerInterrupteType; + + +typedef enum +{ + MP_PLAYER_STATE_WAIT_FOR_RESUME = -3, + MP_PLAYER_STATE_WAIT_FOR_PLAY = -2, + MP_PLAYER_STATE_WAIT_FOR_RESPONSE = -1, + MP_PLAYER_STATE_CLEAR = 0, + MP_PLAYER_STATE_PLAY, + MP_PLAYER_STATE_PAUSE, + MP_PLAYER_STATE_RESUME, + MP_PLAYER_STATE_STOP, + MP_PLAYER_STATE_PAUSE_BEFORE_PLAY, + MP_PLAYER_STATE_MAX +}MpPlayerState; + + +typedef enum +{ + MP_PLAYING_SPEED_NORMAL = 1, + MP_PLAYING_SPEED_2X = 2, + MP_PLAYING_SPEED_3X = 3, + MP_PLAYING_SPEED_4X = 4, + MP_PLAYING_SPEED_5X = 5, + MP_PLAYING_SPEED_MAX = MP_PLAYING_SPEED_5X, +}MpVideoPlayingSpeedType; + + +typedef enum +{ + MP_SUBTITLE_TYPE_SUB = 0, + MP_SUBTITLE_TYPE_SRT, + MP_SUBTITLE_TYPE_SMI, + MP_SUBTITLE_TYPE_MAX, +}MpSubTitleType; + + +typedef enum +{ + MP_NETWORK_CLOSE = 0, + MP_NETWORK_ON, + MP_NETWORK_MAX, +}MpNetworkConfig; + + +typedef enum +{ + MP_NETWORK_TYPE_OFF = 0, + MP_NETWORK_TYPE_CELLULAR, + MP_NETWORK_TYPE_WIFI, + MP_NETWORK_TYPE_MAX, +}MpNetworkType; + + +typedef enum +{ + MP_NETWORK_WIFI_OFF = 0, + MP_NETWORK_WIFI_NOT_CONNECTED, + MP_NETWORK_WIFI_CONNECTED, + MP_NETWORK_WIFI_MAX, +}MpNetworkWifiState; + + +typedef enum +{ + MP_NETWORK_CELLULAR_ON = 0, + MP_NETWORK_CELLULAR_3G_OPTION_OFF, + MP_NETWORK_CELLULAR_ROAMING_OFF, + MP_NETWORK_CELLULAR_FLIGHT_MODE, + MP_NETWORK_CELLULAR_NO_SERVICE, + MP_NETWORK_CELLULAR_MAX, +}MpNetworkCellularState; + +typedef enum +{ + MP_FILE_STREAM_TYPE_NOTHING = 0, + MP_FILE_STREAM_TYPE_VIDEO_AUDIO, + MP_FILE_STREAM_TYPE_AUDIO, + MP_FILE_STREAM_TYPE_VIDEO, + MP_FILE_STREAM_TYPE_MAX, +}MpVideoFileStreamType; + +typedef enum +{ + MP_OPTION_TYPE_LOCAL = 0, + MP_OPTION_TYPE_MYFILE, + MP_OPTION_TYPE_EMAIL, + MP_OPTION_TYPE_WEB, + MP_OPTION_TYPE_MESSAGE, + MP_OPTION_TYPE_ALLSHARE, + MP_OPTION_TYPE_MAX, +}MpOptionMenuType; + +#endif //_VIDEO_TYPE_DEFINE_ diff --git a/include/mp-video-value-define.h b/include/mp-video-value-define.h new file mode 100755 index 0000000..f25b10b --- /dev/null +++ b/include/mp-video-value-define.h @@ -0,0 +1,505 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_VALUE_DEFINE_ +#define _VIDEO_VALUE_DEFINE_ + +#include + + +//PLAY_TIME_FORMAT +#define PLAY_TIME_FORMAT "02u:%02u:%02u" + + +//PLAY_TIME_ARGS +#define PLAY_TIME_ARGS(t) \ + (t) / (60 * 60), \ + ((t) / 60) % 60, \ + (t) % 60 + +#define PLAY_TIME_LENGTH 9 + + +#define _EDJ(x) elm_layout_edje_get(x) + + +#ifdef PREFIX +#undef PREFIX +#endif + +#ifdef LOCALEDIR +#undef LOCALEDIR +#endif + +#define PREFIX "/usr/apps/org.tizen.video-player" +#define EDJ_PATH "/usr/apps/org.tizen.video-player/res/edje" +#define LOCALEDIR "/usr/apps/org.tizen.video-player/res/locale" + + +#define VIDEO_CHAPTER_VIEW_DATA_DIR "/opt/usr/media/.video_thumb" + + +#define VIDEO_HEAD_ICON_ALLSHARE PREFIX"/res/images/icon/T01-2_icon_title_allshare.png" +#define VIDEO_HEAD_ICON_SOUNDPATH PREFIX"/res/images/icon/T01-2_icon_title_soundpath.png" +#define VIDEO_LIST_VIEW_ICON_FOLDER PREFIX"/res/images/icon/06_myfiles_list_folder.png" + +#define VIDEO_PLAYER_MORE_ICON_TRIM PREFIX"/res/images/icon/T01-2_icon_popup_trim.png" +#define VIDEO_PLAYER_MORE_ICON_SOUND_ALIVE PREFIX"/res/images/icon/T01-2_icon_popup_sound_allive.png" +#define VIDEO_PLAYER_MORE_ICON_SUBTITLE PREFIX"/res/images/icon/T01-2_icon_popup_subtitle.png" +#define VIDEO_PLAYER_MORE_ICON_REPEAT PREFIX"/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png" +#define VIDEO_PLAYER_MORE_ICON_AUDIO_TRACK PREFIX"/res/images/icon/T01-2_icon_popup_sound_audio_track.png" +#define VIDEO_PLAYER_MORE_ICON_SETTING PREFIX"/res/images/icon/T01-2_icon_popup_sound_settings.png" +#define VIDEO_PLAYER_MORE_ICON_ADD_TO_HOME PREFIX"/res/images/icon/T01_controlbar_icon_add_to_home.png" + + +#define VIDEO_PLAYER_TOOLBAR_ICON_VIDEOS PREFIX"/res/images/toolbar/T01-2_controlbar_icon_video.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_RECORDED PREFIX"/res/images/toolbar/T01-2_controlbar_icon_recorded.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_FOLDER PREFIX"/res/images/toolbar/T01-2_controlbar_icon_folder.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_ASF PREFIX"/res/images/toolbar/T01-2_controlbar_icon_near_device.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_BACK PREFIX"/res/images/toolbar/T01-2_btn_toolbar_back.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_VOLUME PREFIX"/res/images/toolbar/T01-2_btn_toolbar_volum.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_CANCEL PREFIX"/res/images/toolbar/T01-2_icon_toolbar_cancel.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_DELETE PREFIX"/res/images/toolbar/T01-2_icon_toolbar_delete.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_DONE PREFIX"/res/images/toolbar/T01-2_icon_toolbar_done.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_SETTING PREFIX"/res/images/toolbar/T01-2_icon_toolbar_setting.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_SORT PREFIX"/res/images/toolbar/T01-2_icon_toolbar_sort_by.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_SEARCH PREFIX"/res/images/toolbar/T02_controlbar_icon_search.png" + + +#define VIDEO_PLAYER_MAIN_EDJ EDJ_PATH"/main.edj" +#define VIDEO_PLAYER_BOOKMARK_EDJ EDJ_PATH"/bookmark.edj" +#define VIDEO_PLAYER_BOOKMARK_ITEM_EDJ EDJ_PATH"/bookmark_item.edj" +#define VIDEO_PLAYER_CONTROL_EDJ EDJ_PATH"/control.edj" +#define VIDEO_PLAYER_PANEL_EDJ EDJ_PATH"/panel.edj" +#define VIDEO_PLAYER_PROGRESS_EDJ EDJ_PATH"/progress.edj" +#define VIDEO_PLAYER_TRIM_EDJ EDJ_PATH"/trim.edj" +#define VIDEO_PLAYER_TRIM_ITEM_EDJ EDJ_PATH"/trim_item.edj" +#define VIDEO_PLAYER_PROGRESS_TRIM_EDJ EDJ_PATH"/progress_trim.edj" +#define VIDEO_PLAYER_ADD_TAG EDJ_PATH"/add_tag.edj" +#define VIDEO_PLAYER_ANIMATION_EDJ EDJ_PATH"/animation.edj" +#define VIDEO_PLAYER_DETAIL_EDJ EDJ_PATH"/detail.edj" +#define VIDEO_PLAYER_SUBTITLE_EDJ EDJ_PATH"/subtitle.edj" +#define VIDEO_PLAYER_SUBTITLE_SYNC_EDJ EDJ_PATH"/subtitle_sync.edj" +#define VIDEO_PLAYER_LISTVIEW_EDJ EDJ_PATH"/listview.edj" +#define VIDEO_PLAYER_MULTI_WIN_EDJ EDJ_PATH"/multi_win.edj" +#define VIDEO_PLAYER_SETTING_EDJ EDJ_PATH"/setting.edj" +#define VIDEO_PLAYER_LANDSCAPE_THUMB_EDJ EDJ_PATH"/landscape_thumbnail.edj" +#define VIDEO_PLAYER_CHAPTER_VIEW_EDJ EDJ_PATH"/vp-chapter-view.edj" +#define VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ EDJ_PATH"/vp-speedbox-popup.edj" +#define VIDEO_PLAYER_VOLUME_POPUP_EDJ EDJ_PATH"/vp-volume-popup.edj" + + + +#define VIDEO_CUSTOM_THEME EDJ_PATH"/vp-custom-winset-style.edj" +#define VIDEO_PLAYER_OPTION_BUTTON_EDJ EDJ_PATH"/option_button.edj" +#define VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ EDJ_PATH"/popup_progressbar.edj" + +#define VIDEO_PLAYER_SEARCH_VIEW_LAYOUT_EDJ EDJ_PATH"/search-view-layout.edj" + + +#define MAIN_EDJ_GROUP "main" +#define CONTROL_EDJ_GROUP "control" +#define PROGRESS_EDJ_GROUP "progress" +#define BOOKMARK_EDJ_GROUP "bookmark" +#define BOOKMARK_ITEM_EDJ_GROUP "bookmark.item" +#define BOOKMARK_REMOVE_EDJ_GROUP "bookmark.end" +#define TRIM_EDJ_GROUP "trim.control" +#define TRIM_ITEM_EDJ_GROUP "trim.item" +#define CHAPTER_VIEW_EDJ_GROUP "chapter" +#define SPEEDBOX_EDJ_GROUP "speedbox" +#define VOLUME_EDJ_GROUP "volume" + +#define PANEL_EDJ_GROUP "panel" +#define FAVORITE_EDJ_GROUP "favorite" +#define ANIMATION_EDJ_GROUP "animation" +#define DETAIL_EDJ_GROUP "detail" +#define SUBTITLE_EDJ_GROUP "subtitle" +#define SUBTITLE_SYNC_EDJ_GROUP "subtitle.sync" +#define PANEL_BUTTON_EDJ_GROUP "panel.button" +#define OPTION_EDJ_GROUP "option" +#define LISTVIEW_EDJ_GROUP "listview" +#define MULTIWIN_EDJ_GROUP "mw" +#define SETTING_EDJ_GROUP "setting" +#define LANDSCAPE_THUMB_EDJ_GROUP "landscape.thumb" + +#define SEARCH_VIEW_LAYOUT_GROUP "video-player.search-view.layout" + +#define SWALLOW_MAIN_CONTROL "main.panel" +#define SWALLOW_MAIN_BOOKMARK "main.bookmark" +#define SWALLOW_MAIN_ANIMATION "main.animation" +#define SWALLOW_MAIN_PANEL_BUTTON "main.panel.button" +#define SWALLOW_MAIN_OPTION_BUTTON "main.option.button" +#define SWALLOW_SETTING_LISTVIEW "setting.list" + + +#define SWALLOW_BOOKMARK_GRID "bookmark.swallow" + +#define SWALLOW_PANEL_CONTROL "panel.control" +#define SWALLOW_PANEL_PROGRESS_BAR "panel.progress" + +#define SWALLOW_DETAIL_LIST "detail.list" + +#define SWALLOW_TRIM_THUMBNAIL "trim.control.thumb" + +#define PART_BUTTON_ICON "icon" + + +#define MAIN_SPEED_TEXT "main.speedbox.txt" +#define SUBTITLE_TEXT "subtitle.txt" + + +#define SIGNAL_CONTROL_PART_PLAY_BUTTON "control.play.button" +#define SIGNAL_CONTROL_PART_BACK_BUTTON "control.back.button" +#define SIGNAL_CONTROL_PART_VOL_BUTTON "control.volume.button" +#define SIGNAL_CONTROL_PART_MUTE_BUTTON "control.volume.mute.button" + +#define SIGNAL_CONTROL_PART_SOUNDPATH_BUTTON "control.soundpath.button" +#define SIGNAL_CONTROL_PART_SCREENSIZE_BUTTON "control.screensize.button" +#define SIGNAL_CONTROL_PART_FF_BUTTON "control.normal.ff.button" +#define SIGNAL_CONTROL_PART_REW_BUTTON "control.normal.rew.button" +#define SIGNAL_CONTROL_PART_TRIM_FF_BUTTON "control.trim.ff.button" +#define SIGNAL_CONTROL_PART_TRIM_REW_BUTTON "control.trim.rew.button" + +#define PART_CONTROL_TRIM_DONE_BUTTON "control.trim.done.button" +#define PART_CONTROL_TRIM_CANCEL_BUTTON "control.trim.cancel.button" +#define PART_CONTROL_SPEED_BOX_REW "control.normal.rew.speed.swallow" +#define PART_CONTROL_SPEED_BOX_FF "control.normal.ff.speed.swallow" + +#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH "hidden.button.panel.soundpath" +#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE "hidden.button.panel.allshare" + +#define PART_PANEL_BUTTON_SA "panel.button.sa" +#define PART_PANEL_BUTTON_REPEAT "panel.button.repeat" + +#define PART_BOOKMARK_ADD "bookmark.add" +#define PART_BOOKMARK_DEL "bookmark.end.btn" + +#define SIGNAL_VOLUME_PORTRAIT_MODE "signal.volume.potrait.mode" +#define SIGNAL_VOLUME_LANDSCAPE_MODE "signal.volume.landscape.mode" + +#define SIGNAL_SPEEDBOX_SET_MODE_1 "signal.speedbox.set.mode.1" +#define SIGNAL_SPEEDBOX_SET_MODE_2 "signal.speedbox.set.mode.2" +#define SIGNAL_SPEEDBOX_SET_MODE_3 "signal.speedbox.set.mode.3" + +#define SIGNAL_SPEEDBOX_SHOW "signal.speedbox.visible.on" +#define SIGNAL_SPEEDBOX_HIDE "signal.speedbox.visible.off" + +#define SIGNAL_CONTROL_MODE_NORMAL "signal.control.mode.normal" +#define SIGNAL_CONTROL_MODE_BOOKMARK "signal.control.mode.bookmark" +#define SIGNAL_CONTROL_MODE_TRIM "signal.control.mode.trim" +#define SIGNAL_CONTROL_MODE_STREAMING "signal.control.mode.streaming" +#define SIGNAL_CONTROL_MODE_DLNA "signal.control.mode.dlna" +#define SIGNAL_CONTROL_MODE_VISIBLE_OFF "signal.control.mode.visible.off" +#define SIGNAL_CONTROL_BACK_BUTTON_DOWN "signal.control.back.button.up" + +#define SIGNAL_CONTROL_VOL_BUTTON_DOWN "signal.control.volume.button.down" +#define SIGNAL_CONTROL_VOL_BUTTON_UP "signal.control.volume.button.up" + +#define SIGNAL_CONTROL_MUTE_BUTTON_DOWN "signal.control.volume.mute.button.down" +#define SIGNAL_CONTROL_MUTE_BUTTON_UP "signal.control.volume.mute.button.up" + +#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_DOWN "signal.control.soundpath.button.down" +#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UP "signal.control.soundpath.button.up" +#define SIGNAL_CONTROL_SCREENSIZE_NORMAL "signal.control.screensize.normal" +#define SIGNAL_CONTROL_SCREENSIZE_EXPAND "signal.control.screensize.expand" +#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN "signal.control.normal.ff.button.down" +#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP "signal.control.normal.ff.button.up" +#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED "signal.control.normal.ff.button.clicked" +#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN "signal.control.normal.rew.button.down" +#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP "signal.control.normal.rew.button.up" +#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED "signal.control.normal.rew.button.clicked" +#define SIGNAL_CONTROL_NORMAL_FF_STEP "signal.control.normal.ff.button.step" +#define SIGNAL_CONTROL_NORMAL_REW_STEP "signal.control.normal.rew.button.step" +#define SIGNAL_CONTROL_NORMAL_FF_LANDSCAPE_STEP "signal.control.normal.ff.button.landscape.step" +#define SIGNAL_CONTROL_NORMAL_REW_LANDSCAPE_STEP "signal.control.normal.rew.button.landscape.step" +#define SIGNAL_CONTROL_TRIM_FF_STEP "signal.control.trim.ff.button.step" +#define SIGNAL_CONTROL_TRIM_REW_STEP "signal.control.trim.rew.button.step" + +#define SIGNAL_PANEL_BUTTON_SA_DOWN "signal.panel.button.sa.down" +#define SIGNAL_PANEL_BUTTON_SA_UP "signal.panel.button.sa.up" +#define SIGNAL_PANEL_BUTTON_REPEAT_DOWN "signal.panel.button.repeat.down" +#define SIGNAL_PANEL_BUTTON_REPEAT_UP "signal.panel.button.repeat.up" + +#define SIGNAL_BOOKMARK_ADD_DOWN "signal.bookmark.add.down" +#define SIGNAL_BOOKMARK_ADD_UP "signal.bookmark.add.up" + +#define SIGNAL_BOOKMARK_EXPAND "signal.bookmark.expand" +#define SIGNAL_BOOKMARK_NORMAL "signal.bookmark.normal" +#define SIGNAL_BOOKMARK_DEL_DOWN "signal.bookmark.end.btn.down" + +#define SIGNAL_CONTROL_TRIM_DONE_BUTTON_DOWN "signal.control.trim.done.button.down" +#define SIGNAL_CONTROL_TRIM_CANCEL_BUTTON_DOWN "signal.control.trim.cancel.button.down" + +#define SIGNAL_CONTROL_TRIM_FF_BUTTON_DOWN "signal.control.trim.ff.button.down" +#define SIGNAL_CONTROL_TRIM_FF_BUTTON_UP "signal.control.trim.ff.button.up" +#define SIGNAL_CONTROL_TRIM_REW_BUTTON_DOWN "signal.control.trim.rew.button.down" +#define SIGNAL_CONTROL_TRIM_REW_BUTTON_UP "signal.control.trim.rew.button.up" + +#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_ACTIVE "signal.control.soundpath.button.active" +#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UNACTIVE "signal.control.soundpath.button.unactive" + +#define PART_OPTION_SCREEN_SIZE "option.screensize" +#define PART_OPTION_SHARE "option.share" +#define PART_OPTION_BOOKMARK "option.bookmark" +#define PART_OPTION_MULTIWIN "option.multiwin" +#define PART_OPTION_MORE "option.more" +#define PART_OPTION_SOUND_ALIVE "option.sa" +#define PART_OPTION_TRIM "option.trim" +#define PART_OPTION_REPEAT "option.repeat" +#define PART_OPTION_CONNECT_INFO "option.connectinfo" + +#define SIGNAL_OPTION_SCREEN_SIZE_DOWN "signal.option.screensize.down" +#define SIGNAL_OPTION_SHARE_DOWN "signal.option.share.down" +#define SIGNAL_OPTION_BOOKMARK_DOWN "signal.option.bookmark.down" +#define SIGNAL_OPTION_MULTIWIN_UP "signal.option.multiwin.up" +#define SIGNAL_OPTION_MORE_DOWN "signal.option.more.down" +#define SIGNAL_OPTION_SOUND_ALIVE_DOWN "signal.option.sa.down" +#define SIGNAL_OPTION_TRIM_DOWN "signal.option.trim.down" +#define SIGNAL_OPTION_REPEAT_DOWN "signal.option.repeat.down" +#define SIGNAL_OPTION_CONNECT_INFO_DOWN "signal.option.connectinfo.down" + +#define SIGNAL_LAYOUT_PIXMAP_BG_SHOW "signal.layout.pixmap.bg.show" +#define SIGNAL_LAYOUT_PIXMAP_BG_HIDE "signal.layout.pixmap.bg.hide" + +#define SIGNAL_LAYOUT_INDICATOR_SHOW "signal.layout.indicator.show" +#define SIGNAL_LAYOUT_INDICATOR_HIDE "signal.layout.indicator.hide" + +#define PART_MW_CLOSE "mw.close" +#define PART_MW_PANEL_HIDE "mw.panel.hide" +#define PART_MW_PANEL_SHOW "mw.panel.show" +#define PART_MW_FULL_SIZE "mw.full.size" +#define PART_MW_REW "mw.control.rew" +#define PART_MW_PLAY "mw.control.play" +#define PART_MW_PAUSE "mw.control.pause" +#define PART_MW_FF "mw.control.ff" +#define PART_MW_RESIZE "mw.resize" + +#define SIGNAL_CONTORL_SHOW_FINISH "signal.control.show.finish" +#define SIGNAL_CONTORL_HIDE_FINISH "signal.control.hide.finish" + +#define SIGNAL_NAVIFRAME_TITLE_SHOW "elm,state,title,show" +#define SIGNAL_NAVIFRAME_TITLE_HIDE "elm,state,title,hide" + +#define SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW "signal.main.control.portrait.show" +#define SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW "signal.main.control.landscape.show" + +#define SIGNAL_MAIN_CONTROL_NORMAL_HIDE "signal.main.control.hide" +#define SIGNAL_MAIN_CONTROL_LANDSCAPE_BOOKMAKR_HIDE "signal.main.control.hide.with.bookmark" + +#define SIGNAL_MW_CLOSE_CLICKED "signal.mw.close.clicked" +#define SIGNAL_MW_PANEL_HIDE_CLICKED "signal.mw.panel.hide.clicked" +#define SIGNAL_MW_PANEL_SHOW_CLICKED "signal.mw.panel.show.clicked" +#define SIGNAL_MW_FULL_SIZE_CLICKED "signal.mw.full.size.clicked" +#define SIGNAL_MW_REW_CLICKED "signal.mw.control.rew.clicked" +#define SIGNAL_MW_PLAY_CLICKED "signal.mw.control.play.clicked" +#define SIGNAL_MW_PAUSE_CLICKED "signal.mw.control.pause.clicked" +#define SIGNAL_MW_FF_CLICKED "signal.mw.control.ff.clicked" +#define SIGNAL_MW_RESIZE_DOWN "signal.mw.resize.down" + +#define SIGNAL_MW_HIDE_CONTROL "signal.mw.hide.control" +#define SIGNAL_MW_SHOW_CONTROL "signal.mw.show.control" + +#define SIGNAL_MW_SET_PAUSE_STATUS "signal.mw.set.pause.status" +#define SIGNAL_MW_SET_PLAY_STATUS "signal.mw.set.play.status" + +#define SIGNAL_MW_PIXMAP_SHOW "signal.mw.image.show" +#define SIGNAL_MW_PIXMAP_HIDE "signal.mw.image.hide" + +#define SIGNAL_MW_PIXMAP_ALPHA_SET "signal.mw.image.alpha.set" +#define SIGNAL_MW_PIXMAP_ALPHA_UNSET "signal.mw.image.alpha.unset" + +#define SIGNAL_OPTION_SELECT_BG_CLEAR "signal.option.select.bg.clear" + +#define SIGNAL_OPTION_SCREEN_SIZE_NORMAL "signal.option.screensize.normal" +#define SIGNAL_OPTION_SCREEN_SIZE_FULL "signal.option.screensize.full" +#define SIGNAL_OPTION_SCREEN_SIZE_ORIGIN "signal.option.screensize.origin" + +#define SIGNAL_OPTION_REPEAT_ON "signal.option.repeat.on" +#define SIGNAL_OPTION_REPEAT_OFF "signal.option.repeat.off" + +#define SIGNAL_OPTION_MODE_LOCAL "signal.option.mode.local" +#define SIGNAL_OPTION_MODE_MYFILE "signal.option.mode.myfile" +#define SIGNAL_OPTION_MODE_EMAIL "signal.option.mode.email" +#define SIGNAL_OPTION_MODE_WEB "signal.option.mode.web" +#define SIGNAL_OPTION_MODE_MESSAGE "signal.option.mode.message" +#define SIGNAL_OPTION_MODE_ALLSHARE "signal.option.mode.allshare" + +#define SIGNAL_PANEL_BUTTON_REPEAT_OFF "signal.panel.button.repeat.off" +#define SIGNAL_PANEL_BUTTON_REPEAT_ONE "signal.panel.button.repeat.one" +#define SIGNAL_PANEL_BUTTON_REPEAT_ALL "signal.panel.button.repeat.all" + +#define SIGNAL_NAVIFRAME_PORTRATE_MODE "signal.naviframe.portrate.mode" +#define SIGNAL_NAVIFRAME_LANDSCAPE_MODE "signal.naviframe.landscape.mode" + +#define SIGNAL_MAIN_PORTRATE_MODE "signal.main.portrate.mode" +#define SIGNAL_MAIN_LANDSCAPE_MODE "signal.main.landscape.mode" +#define SIGNAL_MAIN_TRIM_MODE "signal.main.trim.mode" + +#define SIGNAL_MAIN_LANDSCAPE_BOOKMAKR_SHOW "signal.main.landscape.bookmark.show" +#define SIGNAL_MAIN_LANDSCAPE_BOOKMAKR_HIDE "signal.main.landscape.bookmark.hide" + +#define SIGNAL_PANEL_PORTRATE_MODE "signal.panel.portrate.mode" +#define SIGNAL_PANEL_LANDSCAPE_MODE "signal.panel.landscape.mode" +#define SIGNAL_PANEL_TRIM_MODE "signal.panel.trim.mode" + +#define SIGNAL_PROGRESS_PORTRATE_MODE "signal.progress.portrate.mode" +#define SIGNAL_PROGRESS_LANDSCAPE_MODE "signal.progress.landscape.mode" + +#define SIGNAL_PROGRESS_POINTER_SHOW "signal.progress.pointer.show" +#define SIGNAL_PROGRESS_POINTER_HIDE "signal.progress.pointer.hide" + +#define SIGNAL_PROGRESS_ADJUSTMENT_SHOW "signal.progress.adjustment.show" +#define SIGNAL_PROGRESS_ADJUSTMENT_HIDE "signal.progress.adjustment.hide" + +#define SIGNAL_CONTROL_PORTRATE_MODE "signal.control.portrate.mode" +#define SIGNAL_CONTROL_LANDSCAPE_MODE "signal.control.landscape.mode" + +#define SIGNAL_CONTROL_STREAMING_PORTRATE_MODE "signal.control.streaming.portrate.mode" +#define SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE "signal.control.streaming.landscape.mode" + +#define SIGNAL_CONTROL_SET_MUTE "signal.control.volume.set.mute" +#define SIGNAL_CONTROL_UNSET_MUTE "signal.control.volume.unset.mute" + + +// Callback signals. +#define SIGNAL_CONTROL_PLAY_BUTTON_DOWN "signal.control.play.button.down" +#define SIGNAL_CONTROL_PLAY_BUTTON_UP "signal.control.play.button.up" +#define SIGNAL_CONTROL_PLAY_PAUSE_PRESS "signal.control.play.pause.press" +#define SIGNAL_CONTROL_PLAY_RESUME_PRESS "signal.control.play.resume.press" + +// Emit signals. +#define SIGNAL_CONTROL_PLAY_RESUME "signal.control.play.resume" +#define SIGNAL_CONTROL_PLAY_PAUSE "signal.control.play.pause" + +#define SIGNAL_MAIN_MUTE_SHOW "signal.main.mute.show" +#define SIGNAL_MAIN_MUTE_HIDE "signal.main.mute.hide" + +#define SIGNAL_MAIN_NOCONTENTS_SHOW "signal.main.nocontents.show" +#define SIGNAL_MAIN_NOCONTENTS_HIDE "signal.main.nocontents.hide" + +#define SIGNAL_MAIN_SPEEDBOX_SHOW "signal.main.speedbox.show" +#define SIGNAL_MAIN_SPEEDBOX_HIDE "signal.main.speedbox.hide" + +#define SIGNAL_MAIN_SCREEN_TOUCH_TOGGLE "main.screen.touch.toggle" +#define SIGNAL_MAIN_ANIMATION_SHOW "signal.main.animation.show" +#define SIGNAL_MAIN_ANIMATION_HIDE "signal.main.animation.hide" + +#define SIGNAL_ANIMATION_IMAGE_LOADING "signal.loading.image.step" + +#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_SHOW "signal.hidden.button.panel.soundpath.show" +#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_HIDE "signal.hidden.button.panel.soundpath.hide" +#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE_SHOW "signal.hidden.button.panel.allshare.show" +#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE_HIDE "signal.hidden.button.panel.allshare.hide" + +#define SIGNAL_SUBTITLE_PORTRATE_MODE "signal.subtitle.portrate.mode" +#define SIGNAL_SUBTITLE_LANDSCAPE_MODE "signal.subtitle.landscape.mode" + +#define SIGNAL_SUBTITLE_TXT_SHOW "signal.subtitle.txt.show" +#define SIGNAL_SUBTITLE_TXT_HIDE "signal.subtitle.txt.hide" + +#define SIGNAL_SUBTITLE_LAYOUT_SHOW "signal.subtitle.layout.show" +#define SIGNAL_SUBTITLE_LAYOUT_HIDE "signal.subtitle.layout.hide" + +#define SIGNAL_SUBTITLE_SIZE_SMALL "signal.subtitle.size.small" +#define SIGNAL_SUBTITLE_SIZE_MEDIUM "signal.subtitle.size.medium" +#define SIGNAL_SUBTITLE_SIZE_LARGE "signal.subtitle.size.large" + +#define SIGNAL_SUBTITLE_SYNC_SHOW "signal.subtitle.sync.show" +#define SIGNAL_SUBTITLE_SYNC_HIDE "signal.subtitle.sync.hide" + + +#define PART_SUBTITLE_SYNC_SLOW_BUTTON "subtitle.sync.slow.button" +#define PART_SUBTITLE_SYNC_FAST_BUTTON "subtitle.sync.fast.button" +#define PART_SUBTITLE_SYNC_TXT "subtitle.sync.txt" + +#define SIGNAL_SUBTITLE_SYNC_SLOW_DOWN "signal.subtitle.sync.slow.button.down" +#define SIGNAL_SUBTITLE_SYNC_FAST_DOWN "signal.subtitle.sync.fast.button.down" + + +#define SIGNAL_LOCKSCREEN_SHOW "signal.lockscreen.show" +#define SIGNAL_LOCKSCREEN_HIDE "signal.lockscreen.hide" + + +#define SIGNAL_LISTVIEW_PORTRAIT_PREVIEW_SHOW "signal.listview.preview.show" +#define SIGNAL_LISTVIEW_PORTRAIT_PREVIEW_HIDE "signal.listview.preview.hide" + +#define SIGNAL_LISTVIEW_SELECTION_INFO_SHOW "signal.listview.selection.info.show" +#define SIGNAL_LISTVIEW_SELECTION_INFO_HIDE "signal.listview.selection.info.hide" + +#define SIGNAL_LANDSCAPE_THUMB_PREVIEW_SHOW "signal.landscape.thumb.preview.show" +#define SIGNAL_LANDSCAPE_THUMB_PREVIEW_HIDE "signal.landscape.thumb.preview.hide" + + + +#define TAG_FAVOURITES "Favourites" +#define PACKAGE "video-player" +#define PAUSE_KEY "XF86AudioPause" +#define PLAY_KEY "XF86AudioPlay" +#define STOP_KEY "XF86AudioStop" +#define NEXT_KEY "XF86AudioNext" +#define PREV_KEY "XF86AudioPrev" +#define FORWARD_KEY "XF86AudioForward" +#define REWIND_KEY "XF86AudioRewind" +#define END_KEY KEY_END +#define HOME_KEY KEY_SELECT +#define KEY_CANCLE KEY_CANCEL +#define POWER_KEY "XF86PowerOff" + +#define VOLUME_DOWN_KEY KEY_VOLUMEDOWN +#define VOLUME_UP_KEY KEY_VOLUMEUP + +#define VOLUME_MUTE 0 +#define KEY_GRAB_SHARED SHARED_GRAB +#define KEY_GRAB_EXCLUSIVE EXCLUSIVE_GRAB +#define KEY_GRAB_TOP_POSITION TOP_POSITION_GRAB +#define KEY_GRAB_OR_EXCLUSIVE OR_EXCLUSIVE_GRAB +#define STR_LEN_MAX 4096 * 3 +#define SVC_LEN_MAX 2048 + +#define _WIFI_MODE_ 1 +#define _3G_MODE_ 2 +#define USE_STREAMING_ANI 1 +#define LONG_PRESS_INTERVAL 1.0 +#define DOUBLE_CLICK_TIME 0.2 + +#define SCREEN_TOUCH_TOGGLE_AREA_Y_START 0.065 +#define SCREEN_TOUCH_TOGGLE_AREA_Y_END 0.78 + +#define TAG_LIST_SIZE 256 + +#define ANIMATION_TIMER_INTERVAL 0.05 +#define ANIMATION_MAX_COUNT 30 + +#define BOOSTER_STEP_DISTANCE 99 +#define TRIM_DETAIL_STEP_DISTANCE 30 + +#define SIGNAL_TEXT_MAX_LEN 64 +#define CAPTION_TEXT_MAX_LEN 16 +#define STR_UUID_LEN_MAX 37 + +#define DEFAULT_SCALE_WIDTH 720 +#define DEFAULT_SCALE_HEIGHT 1280 + +#define DEFAULT_MW_WIDTH 496 +#define DEFAULT_MW_HEIGHT 286 + +#define VIDEO_ICON_WIDTH 168 +#define VIDEO_ICON_HEIGHT 124 + + +#endif //_VIDEO_VALUE_DEFINE_ + diff --git a/include/mp-video-view-mgr.h b/include/mp-video-view-mgr.h new file mode 100644 index 0000000..dd2918a --- /dev/null +++ b/include/mp-video-view-mgr.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_VIEW_MGR_ +#define _VIDEO_VIEW_MGR_ + + + +bool MpVideoViewCtrlInit(VideoAppData* pAppData); +void MpVideoViewCtrlDestroy(void* pUserData); + + +void MpVideoViewCtrlSetRotation(int nRotateMode, bool bLayoutHide, void *pUserData); +void MpVideoViewCtrlInitAfterBeginOfStream(void*); +void MpVideoViewCtrlPause(void* pUserData); +void MpVideoViewCtrlResume(void* pUserData); +void MpVideoViewShowLayout(void* pUserData); +void MpVideoViewHideLayout(void* pUserData); +void MpVideoViewCtrlShowFinish(void *pUserData); +void MpVideoViewCtrlHideFinish(void *pUserData, bool bLayoutOff); +void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void* pUserData); +void MpVideoViewCtrlChangeTitle(void *pUserData); +bool MpVideoViewCtrlIsTopView(void *pUserData); +void MpVideoViewCtrlShowNocontentImage(void* pUserData); +void MpVideoViewCtrlHideNocontentImage(void* pUserData); +void MpVideoViewCtrlResetProgressBar(void *pUserData); +void MpVideoViewCtrlPopTopView(int nPlayerType, void *pUserData); +void MpVideoViewCtrlUpdateProgressbar(void *pUserData); +bool MpVideoViewCtrlIsPauseByUser(void *pUserData); +void MpVideoViewCtrlShowVolume(); +void MpVideoViewCtrlHideVolume(); + +#endif //_VIDEO_VIEW_MGR_ \ No newline at end of file diff --git a/include/mp-video-volume-ctrl.h b/include/mp-video-volume-ctrl.h new file mode 100644 index 0000000..e71b058 --- /dev/null +++ b/include/mp-video-volume-ctrl.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_VIDEO_VOLUME_CTRL_ +#define _MP_VIDEO_VOLUME_CTRL_ + + +void *MpVideoVolumeCtrlInit(void *pParent, void* pUserData); +void MpVideoVolumeCtrlDestroy(void); +void MpVideoVolumeCtrlShow(); +void MpVideoVolumeCtrlHide(); +void MpVideoVolumeCtrlSetVolume(int nVol); +int MpVideoVolumeCtrlGetVolume(); +bool MpVideoVolumeCtrlGetShowStatus(); + +#endif // _MP_VIDEO_VOLUME_CTRL_ + diff --git a/include/video-player.h b/include/video-player.h new file mode 100644 index 0000000..daad009 --- /dev/null +++ b/include/video-player.h @@ -0,0 +1,121 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef __VIDEO_PLAYER__ +#define __VIDEO_PLAYER__ + +#include +#include +#include +#include + + +#include "mp-video-value-define.h" +#include "mp-video-type-define.h" + +#define LVL0 (0) +#define LVL1 (1) +#define LVL2 (2) +#define LVL3 (3) +#define LVL4 (4) +#define LVL5 (5) +#define LVL6 (6) +#define LVL7 (7) + +typedef enum +{ + MP_UG_FAIL, + MP_UG_SUCCESS +} mp_ug_load_status; + +typedef struct _VideoAppData VideoAppData; + + +typedef struct +{ + void (*VideoAppCtrlStart) (VideoAppData* pAppData); + void (*VideoAppCtrlStop) (VideoAppData* pAppData); + void (*VideoAppCtrlPause) (VideoAppData* pAppData); + void (*VideoAppCtrlResume) (VideoAppData* pAppData); + void (*VideoAppCtrlStopByAppPause) (VideoAppData* pAppData); + void (*VideoAppCtrlStartByAppResume) (VideoAppData* pAppData); + void (*VideoAppCtrlFFDown) (VideoAppData* pAppData); + void (*VideoAppCtrlRewDown) (VideoAppData* pAppData); + void (*VideoAppCtrlFFUp) (VideoAppData* pAppData); + void (*VideoAppCtrlRewUp) (VideoAppData* pAppData); + void (*VideoAppCtrlSpeedReset) (VideoAppData* pAppData); + void (*VideoAppCtrlSpeedFF) (VideoAppData* pAppData); + void (*VideoAppCtrlSpeedRew) (VideoAppData* pAppData); + void (*VideoAppCtrlRotateScreen) (VideoAppData *pAppData, int nRotateState); + void (*VideoAppCtrlGetPosition) (VideoAppData* pAppData); + void (*VideoAppCtrlSetPosition) (VideoAppData* pAppData); + void (*VideoAppCtrlSetSubtitlePosition) (VideoAppData* pAppData); + void (*VideoAppCtrlHideLayout) (VideoAppData* pAppData); + void (*VideoAppCtrlShowLayout) (VideoAppData* pAppData); + void (*VideoAppCtrlHideFinish) (VideoAppData* pAppData); + void (*VideoAppCtrlShowFinish) (VideoAppData* pAppData); + void (*VideoAppCtrlGetVideoResolution) (VideoAppData* pAppData); + void (*VideoAppCtrlReqDurationTime) (VideoAppData* pAppData); + void (*VideoAppCtrlChangeResolution) (VideoAppData* pAppData); + void (*VideoAppCtrlBeginOfStream) (VideoAppData* pAppData); + void (*VideoAppCtrlEndOfStream) (VideoAppData* pAppData); + void (*VideoAppCtrlExit) (VideoAppData* pAppData); + void (*VideoAppCtrlStartStreaming) (VideoAppData* pAppData); + void (*VideoAppCtrlReLaunching) (VideoAppData* pAppData); + void (*VideoAppCtrlGetBufferingPosition)(VideoAppData* pAppData); + + + void (*VideoAppCtrlShowVolume) (VideoAppData *pAppData); + void (*VideoAppCtrlHideVolume) (VideoAppData *pAppData); +}VideoAppCtrlFunc; + + +struct _VideoAppData +{ + Evas_Object* pMainWindow; + + int nDuration; + int nSetPosition; + int nCurPosition; + int nSubtitleDuration; + int nBufferingPosition; + int nPlayingSpeed; + + int nVideoWidthResolution; + int nVideoHeightResolution; + + char *szSubtitle; + char *szVideoTitle; + char *szMediaUri; + char *szPreMediaUri; + char *szNextMediaUri; + + MpPlayerState nPrePlayerState; + MpPlayerState nCurPlayerState; + VideoAppCtrlFunc VideoAppCtrlCallbackFunc; + bool bSeekComplete; + int nSeekPosition; + MpPlayerState nSeekPlayerState; + + char *szProxyAddress; + char *szUserAgent; + char *szCookie; + + bool bStartSeek; +}; + +#endif //__VIDEO_PLAYER__ diff --git a/org.tizen.video-player.manifest b/org.tizen.video-player.manifest new file mode 100755 index 0000000..fbdf26d --- /dev/null +++ b/org.tizen.video-player.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/org.tizen.video-player.xml b/org.tizen.video-player.xml new file mode 100755 index 0000000..9ca4b03 --- /dev/null +++ b/org.tizen.video-player.xml @@ -0,0 +1,63 @@ + + + + JongDong Lee + Video player Application + + + org.tizen.video-player.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/org.tizen.video-player.spec b/packaging/org.tizen.video-player.spec new file mode 100755 index 0000000..58acbf4 --- /dev/null +++ b/packaging/org.tizen.video-player.spec @@ -0,0 +1,93 @@ +Name: org.tizen.video-player +Summary: Video & streaming player +Version: 0.5.140 +Release: 1 +Group: TO_BE/FILLED_IN +License: Flora +Source0: %{name}-%{version}.tar.gz +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(drm-client) +BuildRequires: pkgconfig(utilX) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(vconf) +BuildRequires: pkgconfig(syspopup-caller) +BuildRequires: pkgconfig(ecore) +BuildRequires: pkgconfig(eina) +BuildRequires: pkgconfig(evas) +BuildRequires: pkgconfig(edje) +BuildRequires: pkgconfig(efreet) +BuildRequires: pkgconfig(pmapi) +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-media-player) +BuildRequires: pkgconfig(capi-media-sound-manager) +BuildRequires: pkgconfig(capi-media-image-util) +BuildRequires: pkgconfig(capi-system-power) +BuildRequires: pkgconfig(capi-media-metadata-extractor) +BuildRequires: pkgconfig(capi-content-media-content) +BuildRequires: pkgconfig(capi-content-mime-type) +BuildRequires: pkgconfig(capi-system-sensor) +BuildRequires: pkgconfig(ecore-evas) +BuildRequires: pkgconfig(ecore-x) +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(devman) +BuildRequires: pkgconfig(ui-gadget-1) +BuildRequires: boost-devel +BuildRequires: boost-thread +BuildRequires: boost-system +BuildRequires: boost-filesystem + + +BuildRequires: cmake +BuildRequires: gettext-tools +BuildRequires: edje-tools +BuildRequires: prelink +BuildRequires: libicu-devel + +%description +Video & streaming player + +%prep +%setup -q + +%ifarch %{arm} +%define ARCH arm +%else +%define ARCH i586 +%endif + +%build +cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.video-player -DARCH=%{ARCH} +make %{?jobs:-j%jobs} + + +%install +rm -rf %{buildroot} +%make_install +execstack -c %{buildroot}/usr/apps/org.tizen.video-player/bin/video-player +mkdir -p %{buildroot}/usr/share/license + +%post +vconftool set -t bool db/private/org.tizen.video-player/backgroud_playing 0 -g 5000 +vconftool set -t int db/private/org.tizen.video-player/video_auto_off_type 0 -g 5000 +vconftool set -t bool db/private/org.tizen.video-player/auto_search_subtitle_file 1 -g 5000 +vconftool set -t bool db/private/org.tizen.video-player/show_subtitle 1 -g 5000 +vconftool set -t int db/private/org.tizen.video-player/subtitle_size 1 -g 5000 +vconftool set -t int db/private/org.tizen.video-player/display_color_tone_type 0 -g 5000 +vconftool set -t bool db/private/org.tizen.video-player/outdoor_visibility 0 -g 5000 +vconftool set -t string db/private/org.tizen.video-player/preview_url_videos "" -g 5000 +vconftool set -t string db/private/org.tizen.video-player/preview_url_records "" -g 5000 +vconftool set -t string db/private/org.tizen.video-player/show_indicator 1 -g 5000 +vconftool set -t string db/private/org.tizen.video-player/show_border 0 -g 5000 + +%files -n org.tizen.video-player +%manifest org.tizen.video-player.manifest +%dir /opt/usr/media/.video_thumb + +/usr/apps/org.tizen.video-player/bin/* +/usr/apps/org.tizen.video-player/res/locale/* +/usr/share/icons/default/small/* +/usr/apps/org.tizen.video-player/res/edje/* +/usr/apps/org.tizen.video-player/res/images/* +/usr/share/packages/org.tizen.video-player.xml + +/usr/share/license/%{name} diff --git a/res/edc/add_tag.edc b/res/edc/add_tag.edc new file mode 100755 index 0000000..c045ecb --- /dev/null +++ b/res/edc/add_tag.edc @@ -0,0 +1,346 @@ +collections { + group { + name: "favorite"; + parts { + part { + name: "background"; + type, RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; } + rel2 { relative: 1.0 1.0; offset: -1 -1; } + color, 0 0 0 255 ; + } + } + + part { + name: "selectall_bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 80; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to: "background"; } + rel2 { relative: 1.0 0.0; to: "background"; } + visible : 0; + color: 37 37 37 153; + visible : 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "selectall_check_leftpadding"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 15 0; + fixed: 1 0; + align: 0.0 0.0; + + color: 0 0 0 255; + visible: 0; + rel1 { relative: 0.0 0.0; to: "selectall_bg"; } + rel2 { relative: 0.0 1.0; to: "selectall_bg"; } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + } + } + + part { + name: "selectall_check"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.5; + fixed: 1 1; + min: 44 44; + rel1 { relative: 1.0 0.0; to: "selectall_check_leftpadding"; } + rel2 { relative: 1.0 1.0; to: "selectall_check_leftpadding"; } + visible : 0; + + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "selectall_check_rightpadding"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 15 0; + fixed: 1 0; + align: 0.0 0.0; + color: 0 0 0 0; + rel1 { relative: 1.0 0.0; to: "selectall_check"; } + rel2 { relative: 1.0 1.0; to: "selectall_check"; } + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "selectall_text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.5; + rel1 { relative: 1.0 0.0; to: "selectall_check_rightpadding"; } + rel2 { relative: 1.0 1.0; to: "selectall_bg"; } + color: 255 255 255 255; + text { + font: "SLP"; + size: 32; + text: "Select all"; + align: 0.0 0.5; + } + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "selectall_inner"; + type: RECT; + mouse_events: 0; + scale: 1; + + description { + state: "defalut" 0.0; + min: 0 1; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.0; to: "selectall_bg"; } + rel2 { relative: 1.0 1.0; to: "selectall_bg"; } + color: 90 90 90 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + } + } + + + // tab style container + part { + name: "elm.swallow.tabbar"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + } + } + + // tool style container. + part { + name: "elm.swallow.toolbar_bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 50; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; offset: 0 50;} + + } + } + + // tool style container. + part { + name: "elm.swallow.toolbar"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + //min: 0 76; + min: 0 86; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0;} + rel2 { relative: 1.0 1.0;} + + } + description { + state: "moveup" 0.0; + //min: 0 86; + min: 0 50; + fixed: 1 1; + //align: 0.5 1.0; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; offset: 5 0;} + rel2 { relative: 1.0 0.0; offset: -5 50;} + + } + description { + state: "moveup_progressbar" 0.0; + min: 0 62; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0; offset: 0 62;} + + } + } + + // view container. This is used, when tool items is added. + part { + name: "elm.swallow.view"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";} + + } + description { + state: "edit_default" 0.0; + rel1 { relative: 0.0 1.0; to: "selectall_inner"; } + rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";} + + } + description { + state: "moveup_toolbar" 0.0; + rel1 { relative: 0.0 1.0; offset: 0 0; to: "elm.swallow.toolbar_bg";} + rel2 { relative: 1.0 1.0; } + } + description { + state: "moveup_toolbar_progressbar" 0.0; + rel1 { relative: 0.0 1.0; to: "elm.swallow.toolbar";} + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "view_bg"; + type: SWALLOW; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; to: "elm.swallow.view";} + rel2 { relative: 1.0 1.0; offset: 0 0; to: "elm.swallow.view";} + } + description { + state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + }//GROUP + + programs { + program { + name: "swallow_view_default"; + signal: "elm,swallow_view,state,default"; + source: "elm"; + script { + set_state(PART:"elm.swallow.view", "default", 0.0); + set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position + } + } + program { + name: "swallow_view_edit_default"; + signal: "elm,swallow_view,state,edit_default"; + source: "elm"; + script { + set_state(PART:"elm.swallow.view", "edit_default", 0.0); + set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position + } + } + program { + name: "swallow_view_moveup_toolbar"; + signal: "elm,swallow_view,state,moveup_toolbar"; + source: "elm"; + script { + set_state(PART:"elm.swallow.toolbar", "moveup", 0.0); //move toolbar up + set_state(PART:"elm.swallow.view", "moveup_toolbar", 0.0); + } + } + program { + name: "swallow_view_moveup_toolbar_progressbar"; + signal: "elm,swallow_view,state,moveup_toolbar_progressbar"; + source: "elm"; + script { + set_state(PART:"elm.swallow.toolbar", "moveup_progressbar", 0.0); //move toolbar+progressbar up + set_state(PART:"elm.swallow.view", "moveup_toolbar_progressbar", 0.0); + } + } + program { + name: "view_bg_default"; + signal: "elm,view,bg,state,default"; + source: "elm"; + script { + set_state(PART:"view_bg", "default", 0.0); + } + } + program { + name: "view_bg_disable"; + signal: "elm,view,bg,state,disabled"; + source: "elm"; + script { + set_state(PART:"view_bg", "disabled", 0.0); + } + } + program { + name: "selectall_show"; + signal: "selectall_show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "selectall_bg"; + target: "selectall_check_leftpadding"; + target: "selectall_check"; + target: "selectall_check_rightpadding"; + target: "selectall_text"; + target: "selectall_inner"; + } + program { + name: "selectall_hide"; + signal: "selectall_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "selectall_bg"; + target: "selectall_check_leftpadding"; + target: "selectall_check"; + target: "selectall_check_rightpadding"; + target: "selectall_text"; + target: "selectall_inner"; + } + }//PROGRAMS +} /* collections */ diff --git a/res/edc/animation.edc b/res/edc/animation.edc new file mode 100755 index 0000000..cb57b00 --- /dev/null +++ b/res/edc/animation.edc @@ -0,0 +1,299 @@ +#include "image_res.edc" +#include "vp_font.edc" + +#define CONTROL_BUTTON_STEP(_item_name_, _val_) \ +program { \ + signal: "signal."_item_name_".step."_val_; \ + source: "*"; \ + action: STATE_SET "step_"_val_ 0.0; \ + target: _item_name_; \ +} // CONTROL_BUTTON_STEP + + +collections { + group { + name: "animation"; + + parts { + part { + name: "loading.back"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 0 0 255; + } + } + + part { + name: "loading.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 288 54; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.0; } + rel2 { relative: 1.0 1.0; } + color: FONT_COLOR; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 32; + text: ""; + align: 0.5 0.5; + } + } + } + + part { + name: "loading.image"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 138 138; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5;} + rel2 { relative: 0.5 0.5;} + image { normal: "gallery_loading_ani_01.png"; } + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_01.png"; } + } + description { + state: "step_1" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_01.png"; } + } + description { + state: "step_2" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_02.png"; } + } + description { + state: "step_3" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_03.png"; } + } + description { + state: "step_4" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_04.png"; } + } + description { + state: "step_5" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_05.png"; } + } + description { + state: "step_6" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_06.png"; } + } + description { + state: "step_7" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_07.png"; } + } + description { + state: "step_8" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_08.png"; } + } + description { + state: "step_9" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_09.png"; } + } + description { + state: "step_10" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_10.png"; } + } + description { + state: "step_11" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_11.png"; } + } + description { + state: "step_12" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_12.png"; } + } + description { + state: "step_13" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_13.png"; } + } + description { + state: "step_14" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_14.png"; } + }description { + state: "step_15" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_15.png"; } + } + description { + state: "step_16" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_16.png"; } + } + description { + state: "step_17" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_17.png"; } + } + description { + state: "step_18" 0.0; + inherit: "show" 0.0; + image { normal: "gallery_loading_ani_18.png"; } + } + description { + state: "step_19" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_19.png"; } + } + description { + state: "step_20" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_20.png"; } + } + description { + state: "step_21" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_21.png"; } + } + description { + state: "step_22" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_22.png"; } + } + description { + state: "step_23" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_23.png"; } + } + description { + state: "step_24" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_24.png"; } + } + description { + state: "step_25" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_25.png"; } + } + description { + state: "step_26" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_26.png"; } + } + description { + state: "step_27" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_27.png"; } + } + description { + state: "step_28" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_28.png"; } + } + description { + state: "step_29" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_29.png"; } + } + description { + state: "step_30" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_30.png"; } + } + description { + state: "step_0" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + } // parts + + programs { + CONTROL_BUTTON_STEP( "loading.image", 0); + CONTROL_BUTTON_STEP( "loading.image", 1); + CONTROL_BUTTON_STEP( "loading.image", 2); + CONTROL_BUTTON_STEP( "loading.image", 3); + CONTROL_BUTTON_STEP( "loading.image", 4); + CONTROL_BUTTON_STEP( "loading.image", 5); + CONTROL_BUTTON_STEP( "loading.image", 6); + CONTROL_BUTTON_STEP( "loading.image", 7); + CONTROL_BUTTON_STEP( "loading.image", 8); + CONTROL_BUTTON_STEP( "loading.image", 9); + CONTROL_BUTTON_STEP( "loading.image", 10); + CONTROL_BUTTON_STEP( "loading.image", 11); + CONTROL_BUTTON_STEP( "loading.image", 12); + CONTROL_BUTTON_STEP( "loading.image", 13); + CONTROL_BUTTON_STEP( "loading.image", 14); + CONTROL_BUTTON_STEP( "loading.image", 15); + CONTROL_BUTTON_STEP( "loading.image", 16); + CONTROL_BUTTON_STEP( "loading.image", 17); + CONTROL_BUTTON_STEP( "loading.image", 18); + CONTROL_BUTTON_STEP( "loading.image", 19); + CONTROL_BUTTON_STEP( "loading.image", 20); + CONTROL_BUTTON_STEP( "loading.image", 21); + CONTROL_BUTTON_STEP( "loading.image", 22); + CONTROL_BUTTON_STEP( "loading.image", 23); + CONTROL_BUTTON_STEP( "loading.image", 24); + CONTROL_BUTTON_STEP( "loading.image", 25); + CONTROL_BUTTON_STEP( "loading.image", 26); + CONTROL_BUTTON_STEP( "loading.image", 27); + CONTROL_BUTTON_STEP( "loading.image", 28); + CONTROL_BUTTON_STEP( "loading.image", 29); + CONTROL_BUTTON_STEP( "loading.image", 30); + + } // programs + } // group +} // collections diff --git a/res/edc/control.edc b/res/edc/control.edc new file mode 100755 index 0000000..a70a5a4 --- /dev/null +++ b/res/edc/control.edc @@ -0,0 +1,1167 @@ + +#define BUTTON_PRESS_COLOR 56 149 205 255 +#define CONTROL_ICON_SIZE 136 114 + +#include "image_res.edc" +#include "vp_font.edc" + +// part macro + +#define CONTROL_BUTTON_PRESS_PART(_name_ , _w_ , _h_ , _align_x_ , _align_y_ , _rel_x1_ , _rel_x2_ , _rel_y1_, _rel_y2_ , _to_ , _img_def_ , _img_press_ ) \ +part { \ + name: _name_; \ + type: IMAGE; \ + scale: 1; \ + mouse_events: 1; \ + description { \ + state: "default" 0.0; \ + min: _w_ _h_; \ + fixed: 1 1; \ + align: _align_x_ _align_y_; \ + rel1 { relative: _rel_x1_ _rel_y1_; to : _to_;} \ + rel2 { relative: _rel_x2_ _rel_y2_; to : _to_;} \ + image { normal: _img_def_; border: 4 4 0 0;} \ + color: 255 255 255 255; \ + } \ + description { \ + state: "pressed" 0.0; \ + min: _w_ _h_; \ + fixed: 1 1; \ + align: _align_x_ _align_y_; \ + rel1 { relative: _rel_x1_ _rel_y1_; to : _to_;} \ + rel2 { relative: _rel_x2_ _rel_y2_; to : _to_;} \ + image { normal: _img_press_; border: 4 4 0 0;} \ + color: 255 255 255 255; \ + } \ + description { \ + state: "hide" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ +} // CONTROL_BUTTON_PRESS_PART + + + +// program macro + +#define CONTROL_BUTTON_PROG(_item_name_) \ +program { \ + name: _item_name_".pressed"; \ + source: _item_name_; \ + signal: "mouse,down,1"; \ + action: STATE_SET "pressed" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".down.signal"; \ +} \ +program { \ + name: _item_name_".released"; \ + source: _item_name_; \ + signal: "mouse,up,1"; \ + action: STATE_SET "default" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".up.signal"; \ +} \ +program { \ + name: _item_name_".clicked"; \ + source: _item_name_; \ + signal: "mouse,clicked,1"; \ + action: STATE_SET "default" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".clicked.signal"; \ +} \ +program { \ + name: "send."_item_name_".down.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".up.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".clicked.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".clicked" _item_name_; \ +} // CONTROL_BUTTON_PROG + + +#define CONTROL_BUTTON_STEP(_item_name_, _val_) \ +program { \ + signal: "signal."_item_name_".step."_val_; \ + source: "*"; \ + action: STATE_SET "step_"_val_ 0.0; \ + target: _item_name_; \ +} // CONTROL_BUTTON_STEP + +#define CONTROL_BUTTON_STEP_LANDSCAPE(_item_name_, _val_) \ +program { \ + signal: "signal."_item_name_".landscape.step."_val_; \ + source: "*"; \ + action: STATE_SET "step_"_val_"_landscape" 0.0; \ + target: _item_name_; \ +} // CONTROL_BUTTON_STEP + +collections { + group { + name: "control"; + + script { + public val_volume_check = 0; /* 0: unmute, 1: mute */ + public val_play_status = 0; /* 0: pause , 1: resume */ + public val_display_mode = 0; /* 0: normal, 1: trim, 2: streaming, 3: DLNA*/ + public val_rotate_mode = 0; /* 0: portrate, 1: landscape */ + + public change_display_mode() { + + run_program(PROGRAM:"set.visible.off"); + + if(get_int(val_display_mode ) == 0) { /* normal mode */ + run_program(PROGRAM:"set.mode.normal"); + } + if(get_int(val_display_mode ) == 1) { /* trim mode */ + run_program(PROGRAM:"set.mode.trim"); + } + if(get_int(val_display_mode ) == 2) { /* streaming mode */ + run_program(PROGRAM:"set.mode.streaming"); + } + if(get_int(val_display_mode ) == 3) { /* dlna mode */ + run_program(PROGRAM:"set.mode.dlna"); + } + } /* change_display_mode */ + + + public set_volume_check() { + if(get_int(val_volume_check ) == 0) { + run_program(PROGRAM:"set.volume.unmute"); + } + else { + run_program(PROGRAM:"set.volume.mute"); + } + } /* set_volume_check */ + + public send_play_value() { + if(get_int(val_play_status ) == 0) { + run_program(PROGRAM:"send.play.resume"); + } + else { + run_program(PROGRAM:"send.play.pause"); + } + } /* send_play_value */ + + + public set_play_status() { + if(get_int(val_play_status ) == 0) { + run_program(PROGRAM:"set.play.default"); + } + else { + run_program(PROGRAM:"set.play.pause"); + } + } /* set_play_status */ + + + public set_play_button_press() { + if(get_int(val_play_status ) == 0) { + run_program(PROGRAM:"press.resume.button"); + } + else { + run_program(PROGRAM:"press.pause.button"); + } + } // set_play_button_press + } // script + + parts { + part { + name: "control.rect"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.0 0.5; + visible : 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 0 0 0; + } + } + + part { + name: "control.rect.1"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.5; + min: 144 0; + fixed: 1 0; + visible : 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.2 1.0; } + color: 255 0 0 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 180 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.1406 1.0; } + + } + } + + part { + name: "control.rect.2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + min: 144 0; + fixed: 1 0; + visible : 1; + rel1 { relative: 0.2 0.0;} + rel2 { relative: 0.4 1.0;} + color: 0 255 0 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 271 0; + rel1 { relative: 0.18125 0.0;} + rel2 { relative: 0.39296 1.0;} + } + } + + part { + name: "control.rect.3"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + min: 144 0; + fixed: 1 0; + visible : 1; + rel1 { relative: 0.4 0.0; } + rel2 { relative: 0.6 1.0; } + color: 0 0 255 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 271 0; + rel1 { relative: 0.39453 0.0; } + rel2 { relative: 0.60625 1.0; } + } + } + + part { + name: "control.rect.4"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + min: 144 0; + fixed: 1 0; + visible : 1; + rel1 { relative: 0.6 0.0;} + rel2 { relative: 0.8 1.0;} + color: 255 255 0 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 271 0; + rel1 { relative: 0.60781 0.0; } + rel2 { relative: 0.81953 1.0; } + } + } + + part { + name: "control.rect.5"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible : 1; + min: 144 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 0.8 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 255 255 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 180 0; + rel1 { relative: 0.85937 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + + part { + name: "control.rect.1.line"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 1 70; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 1.0 0.5; to: "control.rect.1"; } + rel2 { relative: 1.0 0.5; to: "control.rect.1"; } + color: 144 144 144 178; + } + } + + part { + name: "control.rect.2.line"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 1 70; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.5; to: "control.rect.5"; } + rel2 { relative: 0.0 0.5; to: "control.rect.5"; } + color: 144 144 144 178; + } + } + + part { + name: "control.volume.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.1"; } + rel2 { relative: 0.5 0.5; to: "control.rect.1"; } + image { normal: "white/panel/T01-2_btn_toolbar_volume.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + + } + + part { + name: "control.volume.mute.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.1"; } + rel2 { relative: 0.5 0.5; to: "control.rect.1"; } + image { normal: "white/panel/T02_volume_icon_Mute.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "control.back.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.5"; } + rel2 { relative: 0.5 0.5; to: "control.rect.5"; } + image { normal: "white/panel/T01-2_btn_toolbar_back.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "control.trim.done.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.1"; } + rel2 { relative: 0.5 0.5; to: "control.rect.1"; } + image { normal: "panel/T01-2_icon_toolbar_done.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + } + + part { + name: "control.trim.cancel.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.5"; } + rel2 { relative: 0.5 0.5; to: "control.rect.5"; } + image { normal: "panel/T01-2_icon_toolbar_cancel.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + } + + part { + name: "control.play.button"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.3"; } + rel2 { relative: 0.5 0.5; to: "control.rect.3"; } + image { normal: "white/control/T01-2_icon_toolbar_play.png"; } + color: 255 255 255 255; + } + description { + state: "pause" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_pause.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "press_resume" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_play.png"; } + color: BUTTON_PRESS_COLOR; + } + description { + state: "press_pause" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_pause.png"; } + color: BUTTON_PRESS_COLOR; + } + } + + + // normal mode control part + part { + name: "control.normal.rew.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.2";} + rel2 { relative: 0.5 0.5; to: "control.rect.2";} + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "step_1" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + } + description { + state: "step_2" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + } + description { + state: "step_3" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + } + description { + state: "step_4" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "control.normal.ff.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.4"; } + rel2 { relative: 0.5 0.5; to: "control.rect.4";} + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "step_1" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + } + description { + state: "step_2" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + } + description { + state: "step_3" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + } + description { + state: "step_4" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + visible: 1; + } + + } + part { + name: "control.normal.rew.speed.swallow"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 112 297; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.1; to: "control.rect.2";} + rel2 { relative: 0.5 0.1; to: "control.rect.2";} + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "control.normal.ff.speed.swallow"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 112 297; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.1; to: "control.rect.4";} + rel2 { relative: 0.5 0.1; to: "control.rect.4";} + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + // <-- normal mode control part + + + + // --> trim mode control part + part { + name: "control.trim.rew.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.2"; } + rel2 { relative: 0.5 0.5; to: "control.rect.2"; } + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "step_1" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + } + description { + state: "step_2" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + } + description { + state: "step_3" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + } + } + + part { + name: "control.trim.ff.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.4"; } + rel2 { relative: 0.5 0.5; to: "control.rect.4"; } + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "step_1" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + } + description { + state: "step_2" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + } + description { + state: "step_3" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + } + } // <-- trim mode control part + } // parts + + + programs { + program { + signal: "signal.control.mode.normal"; + source: "*"; + script { + set_int(val_display_mode, 0); + change_display_mode(); + set_play_status(); + } + } + + program { + signal: "signal.control.mode.trim"; + source: "*"; + script { + set_int(val_display_mode, 1); + change_display_mode(); + set_play_status(); + } + } + + program { + signal: "signal.control.mode.streaming"; + source: "*"; + script { + set_int(val_display_mode, 2); + change_display_mode(); + set_play_status(); + } + } + program { + signal: "signal.control.mode.dlna"; + source: "*"; + script { + set_int(val_display_mode, 3); + change_display_mode(); + set_play_status(); + } + } + + program { + signal: "signal.control.mode.visible.off"; + source: "*"; + after: "set.visible.off"; + } + + program { + name: "set.visible.off"; + source: "*"; + action: STATE_SET "hide" 0.0; + + target: "control.play.button"; + target: "control.back.button"; + target: "control.volume.button"; + target: "control.volume.mute.button"; + target: "control.normal.rew.button"; + target: "control.normal.ff.button"; + target: "control.trim.rew.button"; + target: "control.trim.ff.button"; + target: "control.trim.done.button"; + target: "control.trim.cancel.button"; + } + + program { + name: "set.mode.normal"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "control.play.button"; + target: "control.back.button"; + target: "control.volume.button"; + target: "control.normal.rew.button"; + target: "control.normal.ff.button"; + } + + program { + name: "set.mode.trim"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "control.play.button"; + target: "control.trim.rew.button"; + target: "control.trim.ff.button"; + target: "control.trim.done.button"; + target: "control.trim.cancel.button"; + } + + program { + name: "set.mode.streaming"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "control.play.button"; + target: "control.back.button"; + target: "control.volume.button"; + } + + program { + name: "set.mode.dlna"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "control.play.button"; + target: "control.back.button"; + target: "control.volume.button"; + target: "control.normal.rew.button"; + target: "control.normal.ff.button"; + + } + + program { + name: "control.normal.rew.button.press"; + source: "control.normal.rew.button"; + signal: "signal.control.normal.rew.button.down"; + script: + { + if(get_int(val_rotate_mode) == 0) + { + set_state(PART:"control.normal.rew.button", "pressed", 0.0); + } + else + { + set_state(PART:"control.normal.rew.button", "pressed_landscape", 0.0); + } + } + } + + program { + name: "control.normal.rew.button.up"; + source: "control.normal.rew.button"; + signal: "signal.control.normal.rew.button.up"; + script: + { + if(get_int(val_rotate_mode) == 0) + { + set_state(PART:"control.normal.rew.button", "portrate", 0.0); + } + else + { + set_state(PART:"control.normal.rew.button", "landscape", 0.0); + } + } + } + + program { + name: "control.normal.ff.button.press"; + source: "control.normal.ff.button"; + signal: "signal.control.normal.ff.button.down"; + script: + { + if(get_int(val_rotate_mode) == 0) + { + set_state(PART:"control.normal.ff.button", "pressed", 0.0); + } + else + { + set_state(PART:"control.normal.ff.button", "pressed_landscape", 0.0); + } + } + } + + program { + name: "control.normal.ff.button.up"; + source: "control.normal.ff.button"; + signal: "signal.control.normal.ff.button.up"; + script: + { + if(get_int(val_rotate_mode) == 0) + { + set_state(PART:"control.normal.ff.button", "portrate", 0.0); + } + else + { + set_state(PART:"control.normal.ff.button", "landscape", 0.0); + } + } + } + + + // --> mute/unmute check prog + program { + signal: "signal.control.volume.button.mute"; + source: "*"; + script { + set_int(val_volume_check, 1); + set_volume_check(); + } + } + + program { + signal: "signal.control.volume.button.unmute"; + source: "*"; + script { + set_int(val_volume_check, 0); + set_volume_check(); + } + } + + program { + name: "set.volume.unmute"; + action: STATE_SET "default" 0.0; + target: "control.volume.button"; + } + program { + name: "set.volume.mute"; + action: STATE_SET "mute" 0.0; + target: "control.volume.button"; + } + // --> mute/unmute check prog + + // --> play status part + program { + name: "press.resume.button"; + action: STATE_SET "press_resume" 0.0; + target: "control.play.button"; + } + program { + name: "press.pause.button"; + action: STATE_SET "press_pause" 0.0; + target: "control.play.button"; + } + + program { + name: "control.play.button.down"; + source: "control.play.button"; + signal: "signal.control.play.button.down"; + script: {set_play_button_press(); } + } + + program { + name: "control.play.button.up"; + source: "control.play.button"; + signal: "signal.control.play.button.up"; + script: { send_play_value(); } + } + + program { + signal: "signal.control.play.resume"; + source: "*"; + script { + set_int(val_play_status, 1); + set_play_status(); + } + } + + program { + signal: "signal.control.play.pause"; + source: "*"; + script { + set_int(val_play_status, 0); + set_play_status(); + } + } + + program { + name: "set.play.default"; + source: "control.play.button"; + action: STATE_SET "default" 0.0; + target: "control.play.button"; + } + program { + name: "set.play.pause"; + source: "control.play.button"; + action: STATE_SET "pause" 0.0; + target: "control.play.button"; + } + + program { + name: "send.play.pause"; + action: SIGNAL_EMIT "signal.control.play.pause.press" "control.play.button"; + } + + program { + name: "send.play.resume"; + action: SIGNAL_EMIT "signal.control.play.resume.press" "control.play.button"; + } + + program { + signal: "signal.control.portrate.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 0); + set_state(PART:"control.normal.rew.button", "portrate", 0.0); + set_state(PART:"control.normal.ff.button", "portrate", 0.0); + set_state(PART:"control.rect.1", "default", 0.0); + set_state(PART:"control.rect.2", "default", 0.0); + set_state(PART:"control.rect.3", "default", 0.0); + set_state(PART:"control.rect.4", "default", 0.0); + set_state(PART:"control.rect.5", "default", 0.0); + } + } + + program { + signal: "signal.control.landscape.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 1); + set_state(PART:"control.normal.rew.button", "landscape", 0.0); + set_state(PART:"control.normal.ff.button", "landscape", 0.0); + set_state(PART:"control.rect.1", "landscape", 0.0); + set_state(PART:"control.rect.2", "landscape", 0.0); + set_state(PART:"control.rect.3", "landscape", 0.0); + set_state(PART:"control.rect.4", "landscape", 0.0); + set_state(PART:"control.rect.5", "landscape", 0.0); + } + } + + program { + signal: "signal.control.streaming.portrate.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 0); + + set_state(PART:"control.rect.1", "default", 0.0); + set_state(PART:"control.rect.2", "default", 0.0); + set_state(PART:"control.rect.3", "default", 0.0); + set_state(PART:"control.rect.4", "default", 0.0); + set_state(PART:"control.rect.5", "default", 0.0); + } + } + + program { + signal: "signal.control.streaming.landscape.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 1); + set_state(PART:"control.rect.1", "landscape", 0.0); + set_state(PART:"control.rect.2", "landscape", 0.0); + set_state(PART:"control.rect.3", "landscape", 0.0); + set_state(PART:"control.rect.4", "landscape", 0.0); + set_state(PART:"control.rect.5", "landscape", 0.0); + } + } + + program { + signal: "signal.control.volume.set.mute"; + source: "*"; + script { + set_state(PART:"control.volume.button", "hide", 0.0); + set_state(PART:"control.volume.mute.button", "default", 0.0); + } + } + + program { + signal: "signal.control.volume.unset.mute"; + source: "*"; + script { + set_state(PART:"control.volume.button", "default", 0.0); + set_state(PART:"control.volume.mute.button", "hide", 0.0); + } + } + + // <-- play status part + + // -->common control prog + CONTROL_BUTTON_PROG("control.play.button"); + CONTROL_BUTTON_PROG("control.back.button"); + CONTROL_BUTTON_PROG("control.volume.button"); + CONTROL_BUTTON_PROG("control.volume.mute.button"); + // <-- common control prog + + // -->normal mode prog + CONTROL_BUTTON_PROG("control.normal.ff.button"); + CONTROL_BUTTON_PROG("control.normal.rew.button"); + + CONTROL_BUTTON_STEP("control.normal.ff.button", 1); + CONTROL_BUTTON_STEP("control.normal.ff.button", 2); + CONTROL_BUTTON_STEP("control.normal.ff.button", 3); + CONTROL_BUTTON_STEP("control.normal.ff.button", 4); + + CONTROL_BUTTON_STEP("control.normal.rew.button", 1); + CONTROL_BUTTON_STEP("control.normal.rew.button", 2); + CONTROL_BUTTON_STEP("control.normal.rew.button", 3); + CONTROL_BUTTON_STEP("control.normal.rew.button", 4); + + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 1); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 2); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 3); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 4); + + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 1); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 2); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 3); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 4); + // <-- normal mode prog + + // --> trim mode prog + CONTROL_BUTTON_PROG("control.trim.ff.button"); + CONTROL_BUTTON_PROG("control.trim.rew.button"); + + CONTROL_BUTTON_STEP("control.trim.ff.button", 1); + CONTROL_BUTTON_STEP("control.trim.ff.button", 2); + CONTROL_BUTTON_STEP("control.trim.ff.button", 3); + + CONTROL_BUTTON_STEP("control.trim.rew.button", 1); + CONTROL_BUTTON_STEP("control.trim.rew.button", 2); + CONTROL_BUTTON_STEP("control.trim.rew.button", 3); + + CONTROL_BUTTON_PROG("control.trim.done.button"); + CONTROL_BUTTON_PROG("control.trim.cancel.button"); + // <-- trim mode prog + + } // programs + } // group +} // collections diff --git a/res/edc/custom/vp-naviframe-custom.edc b/res/edc/custom/vp-naviframe-custom.edc new file mode 100755 index 0000000..32c3df8 --- /dev/null +++ b/res/edc/custom/vp-naviframe-custom.edc @@ -0,0 +1,901 @@ +#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 200 +#define NAVIFRAME_TOOLBAR_BG_COLOR_INC 248 246 239 255 +#define NAVIFRAME_TITLE_TOP_PADDING_INC 0 32 +#define NAVIFRAME_TITLE_H_INC 111 +#define NAVIFRAME_TAB_TITLE_H_INC 165 +#define NAVIFRAME_TOOLBAR_HEIGHT_INC 0 +#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 68 68 +#define NAVIFRAME_PREV_FUNC_BTN_SIZE_INC 60 60 +#define NAVIFRAME_TITLE_TAB_H_INC 68 +#define NAVIFRAME_TITLE_TAB_LARGE_H_INC 111 +#define NAVIFRAME_TITLE_TAB_FONT_SIZE_INC 44 +#define NAVIFRAME_TITLE_TAB_TEXT_H_INC 87 +#define NAVIFRAME_TITLE_FONT_SIZE_INC 56 +#define NAVIFRAME_TITLE_SMALL_FONT_SIZE_INC 44 +#define NAVIFRAME_ICON_SIZE_INC 38 38 +#define NAVIFRAME_PADDING_INC 16 0 +#define NAVIFRAME_PADDING2_INC 18 0 +#define NAVIFRAME_PADDING3_INC 8 0 +#define NAVIFRAME_BOTTOM_TEXT_PADDING_INC 0 11 +#define NAVIFRAME_BOTTOM_RIGHT_PADDING_INC 26 11 +#define NAVIFRAME_BOTTOM_PADDING_INC 0 10 +#define NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC 115 0 +#define NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 15 +#define NAVIFRAME_ICON_PADDING_INC 70 0 +#define NAVIFRAME_TITLE_TEXT_COLOR_INC 59 115 182 255 +#define NAVIFRAME_SUBTITLE_TEXT_COLOR_INC 59 115 182 255 +#define NAVIFRAME_SUBTITLE_FONT_SIZE_INC 32 + +#define NAVIFRAME_VIEW_TRANS_TIME 0.3 + +group { + name:"elm/naviframe/base/video/default"; + parts + { + part { + name: "base"; + description { + state: "default" 0.0; + } + } + } +} + +group { + name:"elm/naviframe/item/video/basic/default"; + alias:"elm/naviframe/item/video/1line/default"; + script { + public tbar_bg = 0; //Toolbar BG Show call count + public buttons_visible = 0; //when both buttons are visible + public toolbar_buttons_visible = 0; //when both toolbar buttons are visible + } + parts { + part { + name: "base"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { + state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { + name: "title_bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + visible: 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + } + } + part { + name: "title_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { + name: "top_padding"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: NAVIFRAME_TITLE_TOP_PADDING_INC; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 0.0; to: "title_bg"; } + visible: 0; + } + } + part { + name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: NAVIFRAME_PADDING_INC; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { + state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_ICON_PADDING_INC; + } + } + + part { + name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "title_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "toolbar_bg"; + } + description { + state: "sip_visible" 0.0; + inherit: "default" 0.0; + rel2.relative: 1.0 1.0; + rel2.to: "base"; + } + } + part { + name: "content_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { + name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: NAVIFRAME_PADDING2_INC; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { + name: "padding_bottom_text"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: NAVIFRAME_BOTTOM_TEXT_PADDING_INC; + fixed: 0 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { + name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.0 0.5; + text_class: "slp"; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.0 0.5; + fixed: 1 1; + rel1 { relative: 1.0 1.0; to_x: "padding_center_text1"; to_y: "top_padding"; } + rel2 { relative: 0.0 0.0; to_x: "padding_center_text2"; to_y: "padding_bottom_text"; } + } + description { + state: "subtitle_is_set" 0.0; + inherit: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: NAVIFRAME_TITLE_SMALL_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.0 0.2; + text_class: "slp"; + } + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to_x: "padding_center_text1"; to_y: "top_padding"; } + } + } + part { + name: "elm.text.subtitle"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: NAVIFRAME_SUBTITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + text_class: "slp"; + align: 0.0 1.0; + } + color: NAVIFRAME_SUBTITLE_TEXT_COLOR_INC; + align: 0.0 1.0; + fixed: 1 0; + rel1 { relative: 1.0 1.0; to_x: "padding_center_text1"; to_y: "elm.text.title"; } + rel2 { relative: 0.0 1.0; to_x: "padding_center_text2"; to_y: "elm.text.title"; } + } + } + + part { + name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "elm.text.title"; } + rel2 { relative: 0.0 1.0; to: "elm.text.title"; } + fixed: 1 0; + min: NAVIFRAME_PADDING_INC; + visible: 0; + } + } + part { + name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { + name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { + state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { + name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_btns_padding"; } + rel2 { relative: 0.0 1.0; to: "title_btns_padding"; } + } + } + part { + name: "title_btns_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 1; + align: 1 0.5; + visible: 0; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_PADDING2_INC; + } + } + part { + name: "bottom_right_padding"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 1; + align: 1.0 1.0; + rel1 { relative: 1.0 1.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_BOTTOM_RIGHT_PADDING_INC; + } + } + part { + name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 1.0 1.0; to_x: "title_bg"; to_y: "top_padding"; } + rel2 { relative: 0.0 0.0; to: "bottom_right_padding"; } + } + } + part { + name: "toolbar_bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_TOOLBAR_BG_COLOR_INC; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + min: 0 NAVIFRAME_TOOLBAR_HEIGHT_INC; + max: 999999 NAVIFRAME_TOOLBAR_HEIGHT_INC; + visible: 1; + } + description { + state: "sip_visible" 0.0; + inherit: "default" 0.0; + align: 0.0 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + visible: 1; + } + } + part { + name: "more_btn_bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "toolbar_bg"; } + rel2 { relative: 0.0 1.0; to: "toolbar_bg"; } + visible: 0; + } + } + part { + name: "toolbar_more_btn"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + max: NAVIFRAME_PREV_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "more_btn_bg"; + rel2.to: "more_btn_bg"; + } + } + part { + name: "prev_btn_bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "toolbar_bg"; } + rel2.to: "toolbar_bg"; + visible: 0; + } + } + part { + name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + max: NAVIFRAME_PREV_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "prev_btn_bg"; + rel2.to: "prev_btn_bg"; + } + } + part { + name: "toolbar_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "more_btn_bg"; } + rel2 { relative: 0.0 1.0; to: "prev_btn_bg"; } + } + } + part { + name: "toolbar_button1"; + type: SWALLOW; + scale: 1; + clip_to: "toolbar_clip"; + description { + state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "toolbar_clip"; + rel2.to: "toolbar_clip"; + } + description { + state: "buttons_set" 0.0; + inherit: "default" 0.0; + align: 1.0 0.5; + rel2 { relative: 0.0 1.0; to: "toolbar_button_padding"; } + } + } + + part { + name: "toolbar_button_padding"; + type: RECT; + scale : 1; + description { + state: "default" 0.0; + min: NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 0; + max: NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 9999; + fixed : 1 0; + visible: 0; + align: 0.5 0.5; + rel1.to: "toolbar_clip"; + rel2.to: "toolbar_clip"; + } + } + part { + name: "toolbar_button2"; + type: SWALLOW; + scale: 1; + clip_to: "toolbar_clip"; + description { + state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "toolbar_clip"; + rel2.to: "toolbar_clip"; + } + description { + state: "buttons_set" 0.0; + inherit: "default" 0.0; + align: 0.0 0.5; + rel1 { relative: 1.0 0.0; to: "toolbar_button_padding"; } + } + } + } + programs { + program { + name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { + name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { + name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { + name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { + name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { + name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { + name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { + name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { + name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { + name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "title_bg"; + transition: LINEAR 0.4; + after: "show_finished"; + } + program { + name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + transition: LINEAR 0.4; + after: "hide_finished"; + } + program { + name: "subtitle_show"; + signal: "elm,state,subtitle,show"; + source: "elm"; + script { + set_state(PART:"elm.text.title", "subtitle_is_set", 0.0); + } + } + program { + name: "subtitle_hide"; + signal: "elm,state,subtitle,hide"; + source: "elm"; + script { + set_state(PART:"elm.text.title", "default", 0.0); + } + } + program { + name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,show", "elm"); + } + } + program { + name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,hide", "elm"); + } + } + program { + name: "icon_show"; + signal: "elm,state,icon,show"; + source: "elm"; + action: STATE_SET "icon" 0.0; + target: "padding_center_text1"; + } + program { + name: "icon_hide"; + signal: "elm,state,icon,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "padding_center_text1"; + } + program { + name: "sip_show"; + signal: "elm,state,sip,shown"; + source: ""; + script { + if (get_int(tbar_bg) <= 0) + set_state(PART:"toolbar_bg", "default", 0.0); + else + { + set_state(PART:"toolbar_bg", "sip_visible", 0.0); + set_state(PART:"elm.swallow.content", "sip_visible", 0.0); + } + } + } + + program { + name: "sip_hide"; + signal: "elm,state,sip,hidden"; + source: ""; + script { + if (get_int(tbar_bg) <= 0) + set_state(PART:"toolbar_bg", "default", 0.0); + else + { + set_state(PART:"toolbar_bg", "visible", 0.0); + set_state(PART:"elm.swallow.content", "default", 0.0); + } + } + } + program { + name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(buttons_visible, get_int(buttons_visible) + 1); + set_state(PART:"bottom_right_padding", "visible", 0.0); + if (get_int(buttons_visible) >= 2) + set_state(PART:"title_btns_padding", "visible", 0.0); + } + } + program { + name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(buttons_visible, get_int(buttons_visible) - 1); + set_state(PART:"title_btns_padding", "default", 0.0); + if (get_int(buttons_visible) == 0) + set_state(PART:"bottom_right_padding", "default", 0.0); + } + } + program { + name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + script { + set_int(buttons_visible, get_int(buttons_visible) + 1); + set_state(PART:"bottom_right_padding", "visible", 0.0); + if (get_int(buttons_visible) >= 2) + set_state(PART:"title_btns_padding", "visible", 0.0); + } + } + program { + name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + script { + set_int(buttons_visible, get_int(buttons_visible) - 1); + set_state(PART:"title_btns_padding", "default", 0.0); + if (get_int(buttons_visible) == 0) + set_state(PART:"bottom_right_padding", "default", 0.0); + } + } + program { + name: "more_btn_show"; + signal: "elm,state,toolbar_more_btn,show"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,show", "elm"); + } + } + program { + name: "more_btn_hide"; + signal: "elm,state,toolbar_more_btn,hide"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,hide", "elm"); + } + } + program { + name: "toolbar_button1_show"; + signal: "elm,state,toolbar_button1,show"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,show", "elm"); + set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) + 1); + if (get_int(toolbar_buttons_visible) >= 2) + { + set_state(PART:"toolbar_button1", "buttons_set", 0.0); + set_state(PART:"toolbar_button2", "buttons_set", 0.0); + } + } + } + program { + name: "toolbar_button1_hide"; + signal: "elm,state,toolbar_button1,hide"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,hide", "elm"); + set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) - 1); + set_state(PART:"toolbar_button1", "default", 0.0); + set_state(PART:"toolbar_button2", "default", 0.0); + } + } + program { + name: "toolbar_button2_show"; + signal: "elm,state,toolbar_button2,show"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,show", "elm"); + set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) + 1); + if (get_int(toolbar_buttons_visible) >= 2) + { + set_state(PART:"toolbar_button1", "buttons_set", 0.0); + set_state(PART:"toolbar_button2", "buttons_set", 0.0); + } + } + } + program { + name: "toolbar_button2_hide"; + signal: "elm,state,toolbar_button2,hide"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,hide", "elm"); + set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) - 1); + set_state(PART:"toolbar_button1", "default", 0.0); + set_state(PART:"toolbar_button2", "default", 0.0); + } + } + program { + name: "toolbar_bg_show"; + signal: "elm,state,toolbar_bg,show"; + source: "elm"; + script { + set_state(PART:"toolbar_bg", "visible", 0.0); + set_int(tbar_bg, get_int(tbar_bg) + 1); + } + } + program { + name: "toolbar_bg_hide"; + signal: "elm,state,toolbar_bg,hide"; + source: "elm"; + script { + set_int(tbar_bg, get_int(tbar_bg) - 1); + if (get_int(tbar_bg) <= 0) + set_state(PART:"toolbar_bg", "default", 0.0); + } + } + program { + name: "toolbar_open"; + signal: "elm,state,toolbar,open"; + source: ""; + action: STATE_SET "visible" 0.0; + target: "toolbar_bg"; + transition: LINEAR 0.2; + } + program { + name: "toolbar_close"; + signal: "elm,state,toolbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "toolbar_bg"; + transition: LINEAR 0.2; + } + program { + name: "toolbar_instant_open"; + signal: "elm,state,toolbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,toolbar_button1,show", "elm"); + } + } + program { + name: "toolbar_instant_close"; + signal: "elm,state,toolbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,toolbar_button1,hide", "elm"); + } + } + program { + name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { + name: "hide_finished"; + action: SIGNAL_EMIT "elm,action,hide,finished" ""; + } + + program { + name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { + name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + program { + name: "display_mode_compress"; + signal: "display,mode,compress"; + source: ""; + action: SIGNAL_EMIT "elm,state,toolbar,instant_close" ""; + } + program { + name: "display_mode_default"; + signal: "display,mode,default"; + source: ""; + action: SIGNAL_EMIT "elm,state,toolbar,instant_open" ""; + } + } +} + diff --git a/res/edc/detail.edc b/res/edc/detail.edc new file mode 100755 index 0000000..17b6c2b --- /dev/null +++ b/res/edc/detail.edc @@ -0,0 +1,34 @@ +#include "image_res.edc" +#include "vp_font.edc" + +collections { + group { + name: "detail"; + + parts { + part { + name: "detail.background"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 255; + } + } + part { + name: "detail.list"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + } /* parts */ + } /* group */ +} /* collections */ \ No newline at end of file diff --git a/res/edc/hidden_button_panel.edc b/res/edc/hidden_button_panel.edc new file mode 100755 index 0000000..e0b9ce2 --- /dev/null +++ b/res/edc/hidden_button_panel.edc @@ -0,0 +1,187 @@ +#include "image_res.edc" +#include "vp_font.edc" +/* program macro */ + +#define CONTROL_BUTTON_PROG(_item_name_) \ +program { \ + name: _item_name_".pressed"; \ + source: _item_name_; \ + signal: "mouse,down,1"; \ + action: STATE_SET "pressed" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".down.signal"; \ +} \ +program { \ + name: _item_name_".clicked"; \ + source: _item_name_; \ + signal: "mouse,up,1"; \ + action: STATE_SET "default" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".up.signal"; \ +} \ +program { \ + name: "send."_item_name_".down.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".up.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \ +} /* CONTROL_BUTTON_PROG */ + +collections { + group { + name: "panel.button"; + script { + public val_repeat_mode = 0; /* 0: repeat_off, 1: repeat_one, 2: repeate_all */ + public change_repeat() { + if(get_int(val_repeat_mode) == 0) { + set_int(val_repeat_mode, 1); + run_program(PROGRAM:"send.panel.button.repeat.one"); + } + else if(get_int(val_repeat_mode) == 1) { + set_int(val_repeat_mode, 2); + run_program(PROGRAM:"send.panel.button.repeat.all"); + } + else { + set_int(val_repeat_mode, 0); + run_program(PROGRAM:"send.panel.button.repeat.off"); + } + } + } + + parts { + part { + name: "panel.button.sa"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 70 56; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 0.0 1.0;} + color: 255 255 255 255; + image { normal: "panel/T01-2_icon_controller_sa.png"; } + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + image { normal: "panel/T01-2_icon_controller_sa.png"; } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "panel.button.repeat"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 70 56; + fixed: 1 1; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 255 255 255; + image { normal: "panel/T01-2_icon_controller_repeat.png"; } + } + description { + state: "repeat_one" 0.0; + inherit: "default" 0.0; + image { normal: "panel/T01-2_icon_controller_repeat_1.png"; } + } + description { + state: "repeat_all" 0.0; + inherit: "default" 0.0; + image { normal: "panel/T01-2_icon_controller_repeat_all.png"; } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + } /* parts */ + + programs { + CONTROL_BUTTON_PROG("panel.button.sa"); + CONTROL_BUTTON_PROG("panel.button.repeat"); + + program { + signal: "signal.panel.button.streaming.mode"; + source: "*"; + action: STATE_SET "hide" 0.0; + target: "panel.button.repeat"; + } + + program { + signal: "signal.panel.button.repeat.down"; + source: "*"; + script: { + if(get_int(val_repeat_mode) == 0) { + set_state(PART:"panel.button.repeat", "default", 0.0); + } + else if(get_int(val_repeat_mode) == 1) { + set_state(PART:"panel.button.repeat", "repeat_one", 0.0); + } + else if(get_int(val_repeat_mode) == 2) { + set_state(PART:"panel.button.repeat", "repeat_all", 0.0); + } + } + } + + program { + signal: "signal.panel.button.repeat.up"; + source: "*"; + script: { + change_repeat(); + } + } + + program { + name: "send.panel.button.repeat.off"; + action: SIGNAL_EMIT "signal.panel.button.repeat.off" "panel.button.repeat"; + } + + program { + name: "send.panel.button.repeat.one"; + action: SIGNAL_EMIT "signal.panel.button.repeat.one" "panel.button.repeat"; + } + + program { + name: "send.panel.button.repeat.all"; + action: SIGNAL_EMIT "signal.panel.button.repeat.all" "panel.button.repeat"; + } + + program { + signal: "signal.panel.button.repeat.off"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "panel.button.repeat"; + } + program { + signal: "signal.panel.button.repeat.one"; + source: "*"; + action: STATE_SET "repeat_one" 0.0; + target: "panel.button.repeat"; + } + program { + signal: "signal.panel.button.repeat.all"; + source: "*"; + action: STATE_SET "repeat_all" 0.0; + target: "panel.button.repeat"; + } + + } /* programs */ + } /* group */ +} /* collections */ diff --git a/res/edc/image_res.edc b/res/edc/image_res.edc new file mode 100755 index 0000000..6613a6c --- /dev/null +++ b/res/edc/image_res.edc @@ -0,0 +1,137 @@ + +images { + image: "gallery_video_player_bg.png" COMP; + image: "gallery_loading_ani_01.png" COMP; + image: "gallery_loading_ani_02.png" COMP; + image: "gallery_loading_ani_03.png" COMP; + image: "gallery_loading_ani_04.png" COMP; + image: "gallery_loading_ani_05.png" COMP; + image: "gallery_loading_ani_06.png" COMP; + image: "gallery_loading_ani_07.png" COMP; + image: "gallery_loading_ani_08.png" COMP; + image: "gallery_loading_ani_09.png" COMP; + image: "gallery_loading_ani_10.png" COMP; + image: "gallery_loading_ani_11.png" COMP; + image: "gallery_loading_ani_12.png" COMP; + image: "gallery_loading_ani_13.png" COMP; + image: "gallery_loading_ani_14.png" COMP; + image: "gallery_loading_ani_15.png" COMP; + image: "gallery_loading_ani_16.png" COMP; + image: "gallery_loading_ani_17.png" COMP; + image: "gallery_loading_ani_18.png" COMP; + image: "gallery_loading_ani_19.png" COMP; + image: "gallery_loading_ani_20.png" COMP; + image: "gallery_loading_ani_21.png" COMP; + image: "gallery_loading_ani_22.png" COMP; + image: "gallery_loading_ani_23.png" COMP; + image: "gallery_loading_ani_24.png" COMP; + image: "gallery_loading_ani_25.png" COMP; + image: "gallery_loading_ani_26.png" COMP; + image: "gallery_loading_ani_27.png" COMP; + image: "gallery_loading_ani_28.png" COMP; + image: "gallery_loading_ani_29.png" COMP; + image: "gallery_loading_ani_30.png" COMP; + image: "T01_toolbar_bg.png" COMP; + image: "T01_toolbar_press.png" COMP; + image: "00_winset_control_top_arrow.png" COMP; + image: "T01_Nocontents_multimedia.png" COMP; + image: "T01-2_hold_icon_lock.png" COMP; + + image: "subtitle/T01-2_sync_slowly.png" COMP; + image: "subtitle/T01-2_sync_btn_bg.png" COMP; + image: "subtitle/T01-2_sync_faster.png" COMP; + image: "subtitle/T01-2_sync_list_press.png" COMP; + + image: "option/T01-2_icon_function_bg.png" COMP; + image: "option/T01-2_icon_function_bookmark.png" COMP; + image: "option/T01-2_icon_function_screenmode.png" COMP; + image: "option/T01-2_icon_function_screenmode02.png" COMP; + image: "option/T01-2_icon_function_screenmode03.png" COMP; + image: "option/T01-2_icon_function_select_bg.png" COMP; + image: "option/T01-2_icon_function_share.png" COMP; + image: "option/T01-2_icon_controller_multiwin.png" COMP; + image: "option/T01-2_icon_controller_more.png" COMP; + image: "option/T01-2_icon_controller_trim.png" COMP; + image: "option/T01-2_icon_controller_connection_info.png" COMP; + image: "option/T01-2_icon_controller_repeat_off.png" COMP; + image: "option/T01-2_icon_controller_repeat_on.png" COMP; + image: "option/T01-2_icon_controller_sa.png" COMP; + + image: "bookmark/T01-2_function_tray.png" COMP; + image: "bookmark/T01-2_icon_thumbnail_bg.png" COMP; + image: "bookmark/T01-2_btn_bookmark.png" COMP; + image: "bookmark/T01-2_btn_bookmark_press.png" COMP; + image: "bookmark/T01-2_bookmark_thumbnail.png" COMP; + image: "bookmark/T01-2_btn_remove_bookmark.png" COMP; + image: "bookmark/T01-2_btn_remove_bookmark_press.png" COMP; + + image: "panel/T01-2_controller_progress_bar.png" COMP; + image: "panel/T01-2_controller_progress_bg.png" COMP; + image: "panel/T01-2_icon_toolbar_cancel.png" COMP; + image: "panel/T01-2_icon_toolbar_done.png" COMP; + + image: "adjustment/T01-2_controller_progress_handle.png" COMP; + image: "adjustment/T01-2_controller_progress_handle_press.png" COMP; + image: "adjustment/T01-2_fine_adjustment_bg.png" COMP; + image: "adjustment/T01-2_fine_adjustment_bg_ef.png" COMP; + image: "adjustment/T01-2_fine_adjustment_progress_bar.png" COMP; + image: "adjustment/T01-2_fine_adjustment_progress_bg.png" COMP; + image: "adjustment/T01-2_fine_adjustment_progress_handle.png" COMP; + + image: "trim/T01-2_controller_trimming_handle_ending_press.png" COMP; + image: "trim/T01-2_controller_trimming_handle_ending.png" COMP; + image: "trim/T01-2_controller_trimming_handle_beginning_press.png" COMP; + image: "trim/T01-2_controller_trimming_handle_beginning.png" COMP; + image: "trim/T01-2_controller_track_ball.png" COMP; + image: "trim/T01-2_icon_toolbar_forward.png" COMP; + image: "trim/T01-2_icon_toolbar_reverse.png" COMP; + + + image: "mw/T01-2_icon_close.png" COMP; + image: "mw/T01-2_icon_full_size.png" COMP; + image: "mw/T01-2_icon_hide_panel.png" COMP; + image: "mw/T01-2_icon_open_panel.png" COMP; + image: "mw/T01-2_multiscreen_bg.png" COMP; + image: "mw/T01-2_multiscreen_bg_press.png" COMP; + image: "mw/T01-2_multiscreen_player_bg.png" COMP; + image: "mw/T01-2_player_icon_FF.png" COMP; + image: "mw/T01-2_player_icon_FF_press.png" COMP; + image: "mw/T01-2_player_icon_Pause.png" COMP; + image: "mw/T01-2_player_icon_Pause_press.png" COMP; + image: "mw/T01-2_player_icon_Play.png" COMP; + image: "mw/T01-2_player_icon_Play_press.png" COMP; + image: "mw/T01-2_player_icon_REW.png" COMP; + image: "mw/T01-2_player_icon_REW_press.png" COMP; + image: "mw/T01-2_resize_controller.png" COMP; + image: "mw/T01-2_resize_controller_press.png" COMP; + + // FOR GENLIST SWEEP and check box + image: "00_sweep_list_bg.png" COMP; + image: "T01_checkbox.png" COMP; + image: "00_check_bg_dim.png" COMP; + image: "T01_check.png" COMP; + image: "T01_grid_select_check.png" COMP; + image: "00_grid_select_check.png" COMP; + image: "T01_video_list_progress_bar.png" COMP; + image: "00_winset_list_progress_bg.png" COMP; + + image: "white/panel/T01-2_btn_toolbar_back.png" COMP; + image: "white/panel/T01-2_btn_toolbar_volume.png" COMP; + image: "white/panel/T02_volume_icon_Mute.png" COMP; + image: "white/control/T01-2_icon_toolbar_next.png" COMP; + image: "white/control/T01-2_icon_toolbar_play.png" COMP; + image: "white/control/T01-2_icon_toolbar_previous.png" COMP; + image: "white/control/T01-2_icon_toolbar_stop.png" COMP; + image: "white/control/T01-2_icon_toolbar_pause.png" COMP; + + image: "white/common/T01-2_popup_bg.png" COMP; + image: "white/common/T01-2_popup_arrow.png" COMP; + + image: "volume/T01-2_volume_icon_02.png" COMP; + image: "volume/T01-2_volume_icon_01.png" COMP; + image: "volume/T01-2_player_volume_handle_press.png" COMP; + image: "volume/T01-2_player_volume_handle.png" COMP; + image: "volume/T01-2_player_progress_bg.png" COMP; + image: "volume/T01-2_player_progress_bar.png" COMP; +} + diff --git a/res/edc/main.edc b/res/edc/main.edc new file mode 100755 index 0000000..d0fe9e8 --- /dev/null +++ b/res/edc/main.edc @@ -0,0 +1,557 @@ +#define GRAY_RECT_COLOR 128 128 128 128 +#define SPEEDBOX_OFFSET_Y 225 + + +#include "image_res.edc" +#include "vp_font.edc" + +collections { + group { + name: "main"; + + parts { + part { + name: "main.background"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 255 255 0; + } + } + part { + name: "main.nocontents.bg"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 399 399; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.4;} + rel2 { relative: 0.5 0.4;} + image { normal: "gallery_video_player_bg.png"; border: 7 7 0 0; } + color: GRAY_RECT_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "main.nocontents.image"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 144 144; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.4;} + rel2 { relative: 0.5 0.4;} + image { normal: "T01_Nocontents_multimedia.png"; } + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "main.speedbox"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 280 173; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.49; } + rel2 { relative: 0.5 0.49;} + image {normal: "white/common/T01-2_popup_bg.png"; border: 10 10 10 10;} + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "main.speedbox.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 280 173; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.49; } + rel2 { relative: 0.5 0.49;} + color: 0 0 0 102; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "main.speedbox.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "main.speedbox"; } + rel2 { relative: 1.0 1.0; to: "main.speedbox"; } + color: FONT_PLAYBACK_SPEED_COLOR; + text { + font: FONT_PLAYBACK_SPEED_FONT; + text_class: FONT_PLAYBACK_SPEED_CLASS; + size: FONT_PLAYBACK_SPEED_SIZE; + text: ""; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "main.option.button"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 45; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + } + description { + state: "visible_off" 0.0; + inherit: "hide" 0.0; + visible: 0; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + min: 0 104; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 90; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible : 0; + } + } + + part { + name: "main.bookmark"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 206; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.0; to_y: "main.option.button";} + rel2 { relative: 1.0 0.0; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + min: 0 207; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible : 0; + } + } + + part { + name: "main.panel.bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 0; + fixed: 0 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0; } + rel2 { relative: 1.0 1.0; } + color : 0 0 0 128; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + min: 0 214; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 204; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 297; + } + } + + part { + name: "main.panel.line"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 1; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to_y: "main.panel.bg";} + rel2 { relative: 1.0 0.0; to_y: "main.panel.bg";} + color : 153 153 153 178; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 1; + } + + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "main.panel.top"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 12; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.3 0.0; to_y: "main.panel.line";} + rel2 { relative: 0.7 1.0; to_y: "main.panel.line";} + color : 0 0 0 0; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 17; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "main.panel.button"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 56; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0486 1.0; to_y: "main.panel.top";} + rel2 { relative: 0.9514 1.0; to_y: "main.panel.top";} + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0273 1.0; to_y: "main.panel.top";} + rel2 { relative: 0.9727 1.0; to_y: "main.panel.top";} + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + + part { + name: "main.panel"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 0 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0; } + rel2 { relative: 1.0 1.0; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + min: 0 192; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 192; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 297; + } + } + + part { name: "main.animation"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + min: 288 195; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.4;} + rel2 { relative: 0.5 0.4;} + color: 255 0 0 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + } /* parts */ + + programs { + program { + signal: "signal.main.nocontents.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "main.nocontents.image"; + target: "main.nocontents.bg"; + } + + program { + signal: "signal.main.nocontents.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.nocontents.image"; + target: "main.nocontents.bg"; + } + + program { + signal: "signal.main.speedbox.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "main.speedbox"; + target: "main.speedbox.rect"; + target: "main.speedbox.txt"; + } + + program { + signal: "signal.main.speedbox.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.speedbox"; + target: "main.speedbox.rect"; + target: "main.speedbox.txt"; + } + + program { + signal: "signal.main.animation.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "main.animation"; + } + + program { + signal: "signal.main.animation.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.animation"; + } + + program { + signal: "signal.main.portrate.mode"; + source: "*"; + action: STATE_SET "portrate" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel.top"; + target: "main.panel.button"; + target: "main.panel"; + target: "main.bookmark"; + } + + program { + signal: "signal.main.landscape.mode"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel.top"; + target: "main.panel.button"; + target: "main.panel"; + } + + program { + signal: "signal.main.trim.mode"; + source: "*"; + action: STATE_SET "trim" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel.top"; + target: "main.panel.button"; + target: "main.panel.line"; + target: "main.panel"; + } + + program { + name: "control_portrait_show"; + signal: "signal.main.control.portrait.show"; + source: "*"; + action: STATE_SET "portrate" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel"; + transition: LINEAR 0.4; + after: "control_show_finished"; + } + + program { + name: "control_landscape_show"; + signal: "signal.main.control.landscape.show"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel"; + transition: LINEAR 0.4; + after: "control_show_finished"; + } + + program { + name: "control_hide"; + signal: "signal.main.control.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel"; + transition: LINEAR 0.4; + after: "control_hide_finished"; + } + + program { + name: "control_landscape_bookmark_hide"; + signal: "signal.main.control.hide.with.bookmark"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.panel.bg"; + target: "main.panel"; + transition: LINEAR 0.4; + after: "control_hide_finished"; + } + program { + name: "control_show_finished"; + action: SIGNAL_EMIT "signal.control.show.finish" "*"; + } + + program { + name: "control_hide_finished"; + action: SIGNAL_EMIT "signal.control.hide.finish" "*"; + } + + program { + signal: "signal.main.landscape.bookmark.hide"; + source: "*"; + script { + set_state(PART:"main.option.button", "visible_off", 0.0); + set_state(PART:"main.bookmark", "default", 0.0); + } + } + + program { + signal: "signal.main.landscape.bookmark.show"; + source: "*"; + script { + set_state(PART:"main.option.button", "visible_off", 0.0); + set_state(PART:"main.bookmark", "landscape", 0.0); + } + } + } /* programs */ + } /* group */ +} /* collections */ diff --git a/res/edc/multi_win.edc b/res/edc/multi_win.edc new file mode 100755 index 0000000..7185254 --- /dev/null +++ b/res/edc/multi_win.edc @@ -0,0 +1,69 @@ +#include "image_res.edc" +#include "vp_font.edc" + +collections { + + group { + name: "mw"; + parts { + part { + name: "mw.bg"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 0; + } + + } + + part { + name: "mw.image"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + repeat_events : 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { + signal: "signal.mw.image.show"; + source: "*"; + script { + set_state(PART:"mw.image", "show", 0.0); + } + } + program { + signal: "signal.mw.image.hide"; + source: "*"; + script { + set_state(PART:"mw.image", "default", 0.0); + } + } + } + } +} diff --git a/res/edc/option_button.edc b/res/edc/option_button.edc new file mode 100644 index 0000000..346a8f0 --- /dev/null +++ b/res/edc/option_button.edc @@ -0,0 +1,326 @@ +#include "image_res.edc" +#include "vp_font.edc" + + +/* + | rect1 | rect2 | rect3 | rect4 | rect5 +----------------------------------------------------------- +local | screen | share | bookmark | mw | more +myfile | screen | share | | mw | more +email | screen | share | | mw | trim +web | screen | sa | | mw | repeat +message | screen | sa | | mw | +allshare | screen | connection info | | mw | more +*/ + + +#define CONTROL_BUTTON_PROG(_item_name_) \ +program { \ + name: _item_name_".pressed"; \ + source: _item_name_; \ + signal: "mouse,down,1"; \ + after: "send."_item_name_".down.signal"; \ +} \ +program { \ + name: _item_name_".clicked"; \ + source: _item_name_; \ + signal: "mouse,up,1"; \ + after: "send."_item_name_".up.signal"; \ +} \ +program { \ + name: "send."_item_name_".down.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".up.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \ +} // CONTROL_BUTTON_PROG \ + + +collections { + group { + name: "option"; + script { + public val_launch_mode = 0; /* 0: local, 1: gallery, 2: Email, 3: Web, 4: Message 5: Allshare */ + } + + parts { + part { + name: "option.bg"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 153; + } + } + + part { + name: "option.rect.1"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.2 1.0; } + color: 255 0 0 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 0.25 1.0;} + + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 0.33 1.0;} + } + } + + part { + name: "option.rect.2"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.2 0.0; } + rel2 { relative: 0.4 1.0; } + color: 0 255 0 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.25 0.0;} + rel2 { relative: 0.5 1.0;} + + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.33 0.0;} + rel2 { relative: 0.66 1.0;} + } + } + + part { + name: "option.rect.3"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.4 0.0; } + rel2 { relative: 0.6 1.0; } + color: 0 0 255 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + + part { + name: "option.rect.4"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.6 0.0; } + rel2 { relative: 0.8 1.0; } + color: 255 255 0 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.5 0.0;} + rel2 { relative: 0.75 1.0;} + + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.66 0.0;} + rel2 { relative: 0.99 1.0;} + } + } + + part { + name: "option.rect.5"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.8 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 0 255 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.75 0.0;} + rel2 { relative: 1.0 1.0;} + + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + + part { + name: "option.select.bg"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 40 24; + fixed: 1 1; + align: 0.5 1.0; + image { normal: "white/common/T01-2_popup_arrow.png"; } + rel1 { relative: 0.5 1.0; to: option.rect.1; } + rel2 { relative: 0.5 1.0; to: option.rect.1; } + color: 255 255 255 255; + } + description { + state: "mode_1" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 0.0; to: option.rect.1; } + rel2 { relative: 0.5 0.0; to: option.rect.1; } + + } + description { + state: "mode_2" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 1.0; to: option.rect.2; } + rel2 { relative: 0.5 1.0; to: option.rect.2; } + } + description { + state: "mode_3" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 1.0; to: option.rect.3; } + rel2 { relative: 0.5 1.0; to: option.rect.3; } + } + description { + state: "mode_4" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 1.0; to: option.rect.4; } + rel2 { relative: 0.5 1.0; to: option.rect.4; } + } + description { + state: "mode_5" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 1.0; to: option.rect.5; } + rel2 { relative: 0.5 1.0; to: option.rect.5; } + } + } + + part { + name: "option.share"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: option.rect.1; } + rel2 { relative: 0.5 0.5; to: option.rect.1; } + image { normal: "option/T01-2_icon_function_share.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + programs { + CONTROL_BUTTON_PROG("option.share"); + + program { + signal: "signal.option.share.down"; + source: "*"; + script: { + set_state(PART:"option.select.bg", "mode_1", 0.0); + } + } + + program { + signal: "signal.option.share.up"; + source: "*"; + script: { + set_state(PART:"option.select.bg", "default", 0.0); + } + } + + program { + signal: "signal.option.mode.local"; + source: "*"; + script: { + set_int(val_launch_mode, 0); + + set_state(PART:"option.rect.1", "default", 0.0); + set_state(PART:"option.rect.2", "default", 0.0); + set_state(PART:"option.rect.3", "default", 0.0); + set_state(PART:"option.rect.4", "default", 0.0); + set_state(PART:"option.rect.5", "default", 0.0); + + set_state(PART:"option.share", "default", 0.0); + } + } + } //programs + } //parts + } //group +} //collections diff --git a/res/edc/panel.edc b/res/edc/panel.edc new file mode 100755 index 0000000..f6bc218 --- /dev/null +++ b/res/edc/panel.edc @@ -0,0 +1,155 @@ +#include "image_res.edc" +#include "vp_font.edc" + +#define LINE_RECT_COLOR 130 130 130 255 + +collections { + group { + name: "panel"; + + parts { + part { + name: "panel.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "panel.progress"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 0 78; + fixed: 0 1; + align: 0.5 0.0; + color: 255 0 0 255; + rel1 { relative: 0.0277 0.0;} + rel2 { relative: 0.9723 0.0;} + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 78; + rel1 { relative: 0.01875 0.0;} + rel2 { relative: 0.98125 0.0;} + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 183; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0;} + } + } + + part { + name: "panel.control.line"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 1; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.40625; } + rel2 { relative: 1.0 0.40625; } + color: 255 0 0 0; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 1; + rel1 { relative: 0.0 0.40625; } + rel2 { relative: 1.0 0.40625; } + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 1; + rel1 { relative: 0.0 0.616161; } + rel2 { relative: 1.0 0.616161; } + } + } + part { + name: "panel.control"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 0 114; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; } + rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 114; + rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; } + rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; } + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 114; + rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; } + rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; } + } + } + } // parts + + programs { + program { + signal: "signal.panel.portrate.mode"; + source: "*"; + action: STATE_SET "portrate" 0.0; + target: "panel.progress"; + target: "panel.control.line"; + target: "panel.control"; + } + + program { + signal: "signal.panel.landscape.mode"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "panel.progress"; + target: "panel.control.line"; + target: "panel.control"; + } + + program { + signal: "signal.panel.trim.mode"; + source: "*"; + action: STATE_SET "trim" 0.0; + target: "panel.progress"; + target: "panel.control.line"; + target: "panel.control"; + } + } + } // group +} // collections diff --git a/res/edc/popup_progressbar.edc b/res/edc/popup_progressbar.edc new file mode 100755 index 0000000..87add92 --- /dev/null +++ b/res/edc/popup_progressbar.edc @@ -0,0 +1,263 @@ +collections { +group { name: "popup_center_progressview"; + parts{ + part { name: "elm.title"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + max: 80 16; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 0.5 0.0; + } + color: 108 108 108 255; + align: 0.5 0.0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.content"; + } + rel2 { + relative: 1.0 0.0; + to: "elm.swallow.content"; + } + } + } + part{ name:"elm.swallow.content"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 0 70; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + } + } + part { name: "elm.text.left"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + max: 150 16; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 0.0 1.0; + } + color: 108 108 108 255; + align: 0.0 1.0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.content"; + } + rel2 { + relative: 1.0 1.0; + to: "elm.swallow.content"; + } + } + } + part { name: "elm.text.right"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + max: 150 16; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 1.0 1.0; + } + color: 108 108 108 255; + align: 1.0 1.0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.content"; + } + rel2 { + relative: 1.0 1.0; + to: "elm.swallow.content"; + } + } + } + } +} + + +group { name: "popup_center_text_progressview"; + parts{ + part { name: "pad_t"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.5 0.0; + min: 0 14; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + } + } + } + part { name: "pad_l"; + scale: 1; + description { state: "default" 0.0; + min : 10 0; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 1.0; + } + align: 0.0 0.0; + } + } + part { name: "pad_r"; + scale: 1; + description { state: "default" 0.0; + min : 10 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + align: 1.0 0.0; + } + } + part{ name:"elm.swallow.content"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 300 0; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.5 1.0; + to: "pad_t"; + } + rel2 { + relative: 0.5 0.0; + to: "pad_b"; + } + } + } + part { name: "pad_b"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.5 1.0; + min: 0 90; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + } + } + part { name: "elm.swallow.end"; + type: SWALLOW; + scale : 1; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + to: "pad_b"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_b"; + } + } + } + part { name: "pad_bm"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + min: 0 52; + fixed: 0 1; + rel1 { + relative: 0.0 1.0; + to: "pad_b"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_b"; + } + } + } + part { name: "elm.text.subtext1"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 0.0 1.0; + } + color: 108 108 108 255; + align: 0.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "pad_bm"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_bm"; + } + } + } + part { name: "elm.text.subtext2"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 1.0 1.0; + } + color: 108 108 108 255; + align: 1.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "pad_bm"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_bm"; + } + } + } + } +} +} + diff --git a/res/edc/progress.edc b/res/edc/progress.edc new file mode 100755 index 0000000..3ef5412 --- /dev/null +++ b/res/edc/progress.edc @@ -0,0 +1,459 @@ +#include "image_res.edc" +#include "vp_font.edc" + +#define PROGRESS_LINE_RECT_COLOR 54 54 54 255 + +collections { + group { + name: "progress"; + + parts { + part { + name: "progress.rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + part { name: "progress.txt.played"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 90 28; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; } + rel2 { relative: 1.0 0.5; } + color: FONT_START_COLOR; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "00:00:00"; + align: 0.0 1.0; + } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + } + } + + part { name: "progress.txt.total"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 90 28; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.5; } + rel2 { relative: 1.0 0.5; } + color: FONT_END_COLOR; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "--:--:--"; + align: 1.0 1.0; + } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + } + } + + part { + name: "progress.bg"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 7; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.1647 0.5; } + rel2 { relative: 0.8353 0.5; } + image { normal: "panel/T01-2_controller_progress_bg.png"; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0933 0.5; } + rel2 { relative: 0.9067 0.5; } + } + } + + part { + name: "progress.buffer.bar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 5; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to_x: progress.playing ; to_y: progress.bg; } + rel2 { relative: 1.0 1.0; to_x: progress.buffering; to_y: progress.bg; } + color: 128 128 128 255; + } + } + + part { + name: "progress.middle"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 5; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: progress.bg; } + rel2 { relative: 0.5 1.0; to_x: progress.circle; to_y: progress.bg; } + color: 255 255 255 255; + image { normal: "panel/T01-2_controller_progress_bar.png";} + } + } + part { name: "progress.buffering"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 5; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to: progress.bg; } + rel2 { relative: 1.0 1.0; to: progress.bg; } + color: 255 255 255 0; + } + dragable { + confine: "progress.confine.rect"; + x: 1 1 1; + } + } + + part { name: "progress.confine.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to: progress.bg; } + rel2 { relative: 1.0 1.0; to: progress.bg; } + color: 255 255 255 0; + } + } + + part { + name: "progress.circle"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 5; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.5 0.0; to_x: progress.playing; to_y: progress.bg; } + rel2 { relative: 0.5 1.0; to_x: progress.playing; to_y: progress.bg; } + color: 255 255 255 255; + } + } + + part { name: "progress.playing"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + visible: 1; + state: "default" 0.0; + color: 255 255 255 0; + min: 0 15; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to_y: progress.rect; } + rel2 { relative: 0.0 0.0; to_y: progress.rect; } + } + dragable { + confine: "progress.confine.rect"; + x: 1 1 1; + } + } + + part { + name: "progress.adjustment.handle"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 25 25; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to_x: progress.circle; to_y: progress.bg; } + rel2 { relative: 0.5 0.5; to_x: progress.circle; to_y: progress.bg; } + image { normal: "adjustment/T01-2_controller_progress_handle.png";} + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "progress.adjustment.bg.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 174 153; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to_x: progress.circle; to_y: progress.rect; } + rel2 { relative: 0.5 0.0; to_x: progress.circle; to_y: progress.rect; } + color: 0 0 0 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "progress.adjustment.bg"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 174 153; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: progress.adjustment.bg.rect; } + rel2 { relative: 1.0 1.0; to: progress.adjustment.bg.rect; } + color: 255 255 255 255; + image { normal: "adjustment/T01-2_fine_adjustment_bg.png";} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "progress.adjustment.progress.bg"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 1 20; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.08620 0.23529; to: progress.adjustment.bg.rect; } + rel2 { relative: 0.91379 0.23529; to: progress.adjustment.bg.rect; } + color: 255 255 255 255; + image { normal: "adjustment/T01-2_fine_adjustment_progress_bg.png";} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "progress.adjustment.progress.bar"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 1 20; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.08620 0.23529; to: progress.adjustment.bg.rect; } + rel2 { relative: 0.5 0.23529; to: progress.adjustment.bg.rect; } + color: 255 255 255 255; + image { normal: "adjustment/T01-2_fine_adjustment_progress_bar.png";} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "progress.adjustment.progress.handle"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 36 36; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.5 0.183006; to: progress.adjustment.bg.rect; } + rel2 { relative: 0.5 0.183006; to: progress.adjustment.bg.rect; } + color: 255 255 255 255; + image { normal: "adjustment/T01-2_fine_adjustment_progress_handle.png";} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "progress.adjustment.bg.ef"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 174 153; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: progress.adjustment.bg.rect; } + rel2 { relative: 1.0 1.0; to: progress.adjustment.bg.rect; } + image { normal: "adjustment/T01-2_fine_adjustment_bg_ef.png";} + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "progress.adjustment.txt"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 174 40; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.470588; to: progress.adjustment.bg.rect;} + rel2 { relative: 1.0 0.470588; to: progress.adjustment.bg.rect;} + color: 191 191 191 255; + text { + font: FONT_ROMAN_TYPE; + text_class: "slp"; + size: 32; + text: "00:00:00"; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } /* parts */ + + programs { + program { + signal: "signal.progress.portrate.mode"; + source: "*"; + action: STATE_SET "portrate" 0.0; + target: "progress.bg"; + target: "progress.txt.played"; + target: "progress.txt.total"; + } + + program { + signal: "signal.progress.landscape.mode"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "progress.bg"; + target: "progress.txt.played"; + target: "progress.txt.total"; + } + + program { + signal: "signal.progress.pointer.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "progress.adjustment.handle"; + } + + program { + signal: "signal.progress.pointer.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "progress.adjustment.handle"; + } + + program { + signal: "signal.progress.adjustment.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "progress.adjustment.handle"; + target: "progress.adjustment.bg.rect"; + target: "progress.adjustment.bg.ef"; + target: "progress.adjustment.bg"; + target: "progress.adjustment.progress.bg"; + target: "progress.adjustment.progress.bar"; + target: "progress.adjustment.progress.handle"; + target: "progress.adjustment.txt"; + } + + program { + signal: "signal.progress.adjustment.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "progress.adjustment.handle"; + target: "progress.adjustment.bg.rect"; + target: "progress.adjustment.bg.ef"; + target: "progress.adjustment.bg"; + target: "progress.adjustment.progress.bg"; + target: "progress.adjustment.progress.bar"; + target: "progress.adjustment.progress.handle"; + target: "progress.adjustment.txt"; + } + } + } // group +} // collections diff --git a/res/edc/progress_trim.edc b/res/edc/progress_trim.edc new file mode 100755 index 0000000..932264b --- /dev/null +++ b/res/edc/progress_trim.edc @@ -0,0 +1,291 @@ +#include "image_res.edc" +#include "vp_font.edc" + +collections { + group { + name: "trim.control"; + parts { + part { + name: "trim.control.rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + part { name: "trim.control.txt.played"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 58; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.027777 0.0; } + rel2 { relative: 1.0 0.0; } + color: FONT_START_COLOR; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 28; + text: "00:00:00"; + align: 0.0 0.5; + } + } + } + + part { name: "trim.control.txt.total"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 90 58; + fixed: 1 1; + align: 1.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.97223 0.0; } + color: FONT_END_COLOR; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 28; + text: "--:--:--"; + align: 1.0 0.5; + } + } + } + + part { + name: "trim.control.line"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 1; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.316994; } + rel2 { relative: 1.0 0.316994; } + color : 153 153 153 171; + } + } + + part { + name: "trim.control.thumb.bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.316994; } + rel2 { relative: 1.0 1.0; } + color : 0 0 0 0; + } + } + + part { + name: "trim.control.thumb"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 112; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_y : trim.control.thumb.bg;} + rel2 { relative: 1.0 0.5; to_y : trim.control.thumb.bg;} + color : 0 0 0 0; + } + } + part { + name: "trim.control.middle"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 1.0; + rel1 { relative: 0.0 0.0; to_x: trim.control.confine.start; to_y: trim.control.thumb.bg; } + rel2 { relative: 1.0 1.0; to_x: trim.control.confine.end; to_y: trim.control.thumb.bg; } + color: 0 0 0 0; + } + } + part { + name: "trim.control.confine.rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to: trim.control.middle; } + rel2 { relative: 1.0 1.0; to: trim.control.middle; } + color: 0 0 0 0; + } + } + + part { name: "trim.control.playing"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 19 124; + fixed: 1 1; + align: 0.0 0.0; + image { normal: "trim/T01-2_controller_track_ball.png"; } + color: 255 255 255 255; + } + dragable { + confine: "trim.control.confine.rect"; + x: 1 1 1; + } + } + + part { + name: "trim.control.start.rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to_y : trim.control.thumb.bg;} + rel2 { relative: 0.0 1.0; to_y : trim.control.thumb.bg;} + color: 0 0 0 0; + } + } + + part { + name: "trim.control.end.rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to_y : trim.control.thumb.bg;} + rel2 { relative: 1.0 1.0; to_y : trim.control.thumb.bg;} + color: 0 0 0 0; + } + } + + part { name: "trim.control.confine.rect.start"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 24 117; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_x: trim.control.start.rect; to_y: trim.control.thumb.bg; } + rel2 { relative: 1.0 0.5; to_x: trim.control.end.rect; to_y: trim.control.thumb.bg; } + color: 255 255 255 0; + } + } + + part { name: "trim.control.confine.rect.end"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 24 117; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_x: trim.control.start.rect; to_y: trim.control.thumb.bg; } + rel2 { relative: 1.0 0.5; to_x: trim.control.end.rect; to_y: trim.control.thumb.bg; } + color: 255 255 255 0; + } + } + part { name: "trim.control.confine.rect.start.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 0 100; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_y: trim.control.thumb.bg; } + rel2 { relative: 0.0 0.5; to_x: trim.control.confine.start; to_y: trim.control.thumb.bg; } + color: 0 0 0 153; + } + } + + part { name: "trim.control.confine.rect.end.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 0 100; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.5 0.5; to_x: trim.control.confine.end; to_y: trim.control.thumb.bg; } + rel2 { relative: 1.0 0.5; to_y: trim.control.thumb.bg; } + color: 0 0 0 153; + } + } + part { + name: "trim.control.confine.start"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 24 117; + fixed: 1 1; + align: 0.0 0.5; + image { normal: "trim/T01-2_controller_trimming_handle_beginning.png";} + } + dragable { + confine: "trim.control.confine.rect.start"; + x: 1 1 1; + } + } + + part { + name: "trim.control.confine.end"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 24 117; + fixed: 1 1; + align: 0.0 0.5; + image { normal: "trim/T01-2_controller_trimming_handle_ending.png";} + } + dragable { + confine: "trim.control.confine.rect.end"; + x: 1 1 1; + } + } + + + } /* parts */ + } /* group */ +} /* collections */ + diff --git a/res/edc/setting.edc b/res/edc/setting.edc new file mode 100755 index 0000000..9691ac7 --- /dev/null +++ b/res/edc/setting.edc @@ -0,0 +1,33 @@ +collections { + group { + name: "setting"; + parts { + part { + name: "setting.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 255 255 255; + } + } + part { + name: "setting.list"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + } + } +} \ No newline at end of file diff --git a/res/edc/subtitle.edc b/res/edc/subtitle.edc new file mode 100755 index 0000000..3d5265b --- /dev/null +++ b/res/edc/subtitle.edc @@ -0,0 +1,419 @@ +#include "image_res.edc" +#include "vp_font.edc" + + +collections { + styles { + style { + name: "textblock_style_small"; + base: "font=SLP:style=Roman font_size=22 color=#fff align=center wrap=word text_class=slp"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Roman"; + tag: "b" "+ font=SLP:style=Roman"; + tag: "tab" "\t"; + } + style { + name: "textblock_style_medium"; + base: "font=SLP:style=Roman font_size=35 color=#fff align=center wrap=word text_class=slp"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Roman"; + tag: "b" "+ font=SLP:style=Roman"; + tag: "tab" "\t"; + } + + style { + name: "textblock_style_large"; + base: "font=SLP:style=Roman font_size=48 color=#fff align=center wrap=word text_class=slp"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Roman"; + tag: "b" "+ font=SLP:style=Roman"; + tag: "tab" "\t"; + } + + } + + group { + name: "subtitle"; + script { + public val_rotate_mode = 0; /* 0: portrate, 1: landscape */ + public val_layout_show = 1; /* 0: off, 1: on */ + public val_sync_show = 0; /* 0: off, 1: on */ + public val_size_mode = 1; /* 0: small, 1: medium, 2: large */ + + public change_bottom_line() { + if(get_int(val_rotate_mode) == 0) { + if(get_int(val_layout_show) == 1) { + if(get_int(val_sync_show) == 1) { + set_state(PART:"subtitle.bottom.line", "default_sync", 0.0); + } + else { + set_state(PART:"subtitle.bottom.line", "default", 0.0); + } + } + else { + if(get_int(val_sync_show) == 1) { + set_state(PART:"subtitle.bottom.line", "default_off_sync", 0.0); + } + else { + set_state(PART:"subtitle.bottom.line", "default_off", 0.0); + } + } + } + else if(get_int(val_rotate_mode) == 1) { + if(get_int(val_layout_show) == 1) { + if(get_int(val_sync_show) == 1) { + set_state(PART:"subtitle.bottom.line", "landscape_sync", 0.0); + } + else { + set_state(PART:"subtitle.bottom.line", "landscape", 0.0); + } + } + else { + if(get_int(val_sync_show) == 1) { + set_state(PART:"subtitle.bottom.line", "landscape_off_sync", 0.0); + } + else { + set_state(PART:"subtitle.bottom.line", "landscape_off", 0.0); + } + } + } + + } /* change_size_mode */ + + } /* script */ + + parts { + part { + name: "subtitle.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "subtitle.lockscreen.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 24 18 ; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 0.0 0.0;} + color: 255 255 255 255; + } + } + + part { + name: "subtitle.lockscreen"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 56 56; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 1.0 1.0; to: "subtitle.lockscreen.rect";} + rel2 { relative: 0.0 0.0;} + image { normal: "T01-2_hold_icon_lock.png"; } + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "subtitle.lockscreen.text.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 16 56 ; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to_x: "subtitle.lockscreen";} + rel2 { relative: 0.0 0.0;} + color: 255 0 0 255; + } + } + part { + name: "subtitle.lockscreen.text"; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 56; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 1.0 1.0; to_x: subtitle.lockscreen.text.rect; to_y: "subtitle.lockscreen.rect"; } + rel2 { relative: 1.0 0.0; } + color: 255 255 255 255; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 32; + text: "Press hold key to unlock"; + align: 0.0 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + + part { + name: "subtitle.bottom.line"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 1; + fixed: 0 1; + align: 0.0 0.0; + visible: 1; + rel1 { relative: 0.0 0.82421;} + rel2 { relative: 1.0 0.82421;} + color: 0 0 0 0; + } + description { + state: "default_off" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.9921875;} + rel2 { relative: 1.0 0.9921875;} + } + description { + state: "default_sync" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.716406;} + rel2 { relative: 1.0 0.716406;} + } + description { + state: "default_off_sync" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.884375;} + rel2 { relative: 1.0 0.884375;} + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.70277;} + rel2 { relative: 1.0 0.70277;} + } + description { + state: "landscape_off" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.98611;} + rel2 { relative: 1.0 0.98611;} + } + description { + state: "landscape_sync" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.541666;} + rel2 { relative: 1.0 0.541666;} + } + description { + state: "landscape_off_sync" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.825;} + rel2 { relative: 1.0 0.825;} + } + } + + part { + name: "subtitle.label.txt"; + type: TEXTBLOCK; + scale: 1; + mouse_events: 0; + multiline: 1; + description { + visible: 1; + state: "default" 0.0; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; to_y: subtitle.bottom.line; } + color: FONT_START_COLOR; + text { + style: "textblock_style_medium"; + align: 0.5 1.0; + } + } + description { + state: "small" 0.0; + inherit: "default" 0.0; + text { + style: "textblock_style_small"; + align: 0.5 1.0; + } + + } + description { + state: "large" 0.0; + inherit: "default" 0.0; + text { + style: "textblock_style_large"; + align: 0.5 1.0; + } + + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + } /* parts */ + programs { + program { + signal: "signal.subtitle.portrate.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 0); + change_bottom_line(); + } + } + program { + signal: "signal.subtitle.landscape.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 1); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.layout.show"; + source: "*"; + script { + set_int(val_layout_show, 1); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.layout.hide"; + source: "*"; + script { + set_int(val_layout_show, 0); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.sync.show"; + source: "*"; + script { + set_int(val_sync_show, 1); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.sync.hide"; + source: "*"; + script { + set_int(val_sync_show, 0); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.size.medium"; + source: "*"; + script { + set_int(val_size_mode, 1); + set_state(PART:"subtitle.label.txt", "default", 0.0); + + } + } + + program { + signal: "signal.subtitle.size.small"; + source: "*"; + script { + set_int(val_size_mode, 0); + set_state(PART:"subtitle.label.txt", "small", 0.0); + + } + } + + program { + signal: "signal.subtitle.size.large"; + source: "*"; + script { + set_int(val_size_mode, 2); + set_state(PART:"subtitle.label.txt", "large", 0.0); + + } + } + + program { + signal: "signal.subtitle.txt.show"; + source: "*"; + script { + if(get_int(val_size_mode) == 0) { + set_state(PART:"subtitle.label.txt", "small", 0.0); + } + else if(get_int(val_size_mode) == 1) { + set_state(PART:"subtitle.label.txt", "default", 0.0); + } + else if(get_int(val_size_mode) == 2) { + set_state(PART:"subtitle.label.txt", "large", 0.0); + } + + } + } + + program { + signal: "signal.subtitle.txt.hide"; + source: "*"; + script { + set_state(PART:"subtitle.label.txt", "hide", 0.0); + + } + } + program { + signal: "signal.lockscreen.show"; + source: "*"; + script { + set_state(PART:"subtitle.lockscreen", "show", 0.0); + set_state(PART:"subtitle.lockscreen.text", "show", 0.0); + + } + } + program { + signal: "signal.lockscreen.hide"; + source: "*"; + script { + set_state(PART:"subtitle.lockscreen", "default", 0.0); + set_state(PART:"subtitle.lockscreen.text", "default", 0.0); + } + } + + } /*programs */ + } /* group */ +} /* collections */ diff --git a/res/edc/subtitle_sync.edc b/res/edc/subtitle_sync.edc new file mode 100755 index 0000000..b40bd2f --- /dev/null +++ b/res/edc/subtitle_sync.edc @@ -0,0 +1,415 @@ +#include "image_res.edc" +#include "vp_font.edc" + +// program macro + +#define CONTROL_BUTTON_PROG(_item_name_) \ +program { \ + name: _item_name_".pressed"; \ + source: _item_name_; \ + signal: "mouse,down,1"; \ + action: STATE_SET "pressed" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".down.signal"; \ +} \ +program { \ + name: _item_name_".clicked"; \ + source: _item_name_; \ + signal: "mouse,up,1"; \ + action: STATE_SET "default" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".up.signal"; \ +} \ +program { \ + name: "send."_item_name_".down.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".up.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \ +} // CONTROL_BUTTON_PROG + +collections { + group { + name: "subtitle.sync"; + script { + public val_rotate_mode = 0; /* 0: portrate, 1: landscape */ + public val_layout_show = 1; /* 0: off, 1: on */ + + public change_top_line() { + if(get_int(val_rotate_mode) == 0) { + if(get_int(val_layout_show) == 1) { + set_state(PART:"subtitle.sync.line", "default", 0.0); + } + else { + set_state(PART:"subtitle.sync.line", "visible_off", 0.0); + } + } + else if(get_int(val_rotate_mode) == 1) { + if(get_int(val_layout_show) == 1) { + set_state(PART:"subtitle.sync.line", "land_default", 0.0); + } + else { + set_state(PART:"subtitle.sync.line", "land_visible_off", 0.0); + } + } + } /* change_top_line */ + + } /* script */ + + parts { + part { + name: "subtitle.sync.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "subtitle.sync.line"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 1; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { relative: 0.0 0.735156; to_y:subtitle.sync.bg; } + rel2 { relative: 1.0 0.735156; to_y:subtitle.sync.bg; } + color: 0 0 0 0; + } + description { + state: "visible_off" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.903125; to_y:subtitle.sync.bg; } + rel2 { relative: 1.0 0.903125; to_y:subtitle.sync.bg; } + } + description { + state: "land_default" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.558333; to_y:subtitle.sync.bg; } + rel2 { relative: 1.0 0.558333; to_y:subtitle.sync.bg; } + } + description { + state: "land_visible_off" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.82777; to_y:subtitle.sync.bg; } + rel2 { relative: 1.0 0.82777; to_y:subtitle.sync.bg; } + } + } + + part { + name: "subtitle.sync.rect"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 104; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.07222 1.0; to_y: subtitle.sync.line; } + rel2 { relative: 0.92778 1.0; to_y: subtitle.sync.line; } + image { normal: "subtitle/T01-2_sync_btn_bg.png"; border: 19 19 0 0; border_scale: 1;} + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "subtitle.sync.rect.1"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 64 64; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.02922 0.5; to: subtitle.sync.rect; } + rel2 { relative: 0.02922 0.5; to: subtitle.sync.rect; } + image { normal: "subtitle/T01-2_sync_list_press.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "subtitle.sync.rect.2"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to: subtitle.sync.rect; } + rel2 { relative: 1.0 0.5; to: subtitle.sync.rect; } + color: 0 0 0 0; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "subtitle.sync.rect.3"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 64 64; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.86688 0.5; to: subtitle.sync.rect; } + rel2 { relative: 0.86688 0.5; to: subtitle.sync.rect; } + image { normal: "subtitle/T01-2_sync_list_press.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "subtitle.sync.slow.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 64 64; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: subtitle.sync.rect.1; } + rel2 { relative: 0.5 0.5; to: subtitle.sync.rect.1; } + image { normal: "subtitle/T01-2_sync_slowly.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "subtitle.sync.fast.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: subtitle.sync.rect.3; } + rel2 { relative: 0.5 0.5; to: subtitle.sync.rect.3; } + image { normal: "subtitle/T01-2_sync_faster.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { name: "subtitle.sync.txt"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: subtitle.sync.rect.2; } + rel2 { relative: 1.0 1.0; to: subtitle.sync.rect.2; } + color: FONT_START_COLOR; + text { + font: FONT_ROMAN_TYPE; + text_class: "slp"; + size: 40; + text: "0.0 sec"; + align: 0.5 0.5; + } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + } /* parts */ + + programs { + program { + signal: "signal.subtitle.portrate.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 0); + change_top_line(); + } + } + program { + signal: "signal.subtitle.landscape.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 1); + change_top_line(); + } + } + + program { + signal: "signal.subtitle.layout.show"; + source: "*"; + script { + set_int(val_layout_show, 1); + change_top_line(); + } + } + + program { + signal: "signal.subtitle.layout.hide"; + source: "*"; + script { + set_int(val_layout_show, 0); + change_top_line(); + } + } + + CONTROL_BUTTON_PROG("subtitle.sync.slow.button"); + CONTROL_BUTTON_PROG("subtitle.sync.fast.button"); + + program { + name: "subtitle.sync.rect.1.pressed"; + source: "subtitle.sync.rect.1"; + signal: "mouse,down,1"; + action: STATE_SET "pressed" 0.0; + target: subtitle.sync.rect.1; + after: "send.subtitle.sync.slow.button.down.signal"; + } + + program { + name: "subtitle.sync.rect.3.pressed"; + source: "subtitle.sync.rect.3"; + signal: "mouse,down,1"; + action: STATE_SET "pressed" 0.0; + target: subtitle.sync.rect.3; + after: "send.subtitle.sync.fast.button.down.signal"; + } + + program { + name: "subtitle.sync.rect.1.clicked"; + source: "subtitle.sync.rect.1"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: subtitle.sync.rect.1; + after: "send.subtitle.sync.slow.button.up.signal"; + } + + program { + name: "subtitle.sync.rect.3.clicked"; + source: "subtitle.sync.rect.3"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: subtitle.sync.rect.3; + after: "send.subtitle.sync.fast.button.up.signal"; + } + + program { + signal: "signal.subtitle.sync.slow.button.down"; + source: "*"; + script { + set_state(PART:"subtitle.sync.rect.1", "pressed", 0.0); + } + } + program { + signal: "signal.subtitle.sync.fast.button.down"; + source: "*"; + script { + set_state(PART:"subtitle.sync.rect.3", "pressed", 0.0); + } + } + + program { + signal: "signal.subtitle.sync.slow.button.up"; + source: "*"; + script { + set_state(PART:"subtitle.sync.rect.1", "default", 0.0); + } + } + program { + signal: "signal.subtitle.sync.fast.button.up"; + source: "*"; + script { + set_state(PART:"subtitle.sync.rect.3", "default", 0.0); + } + } + + program { + signal: "signal.subtitle.sync.show"; + source: "*"; + script { + set_state(PART:"subtitle.sync.fast.button", "default", 0.0); + set_state(PART:"subtitle.sync.txt", "default", 0.0); + set_state(PART:"subtitle.sync.slow.button", "default", 0.0); + set_state(PART:"subtitle.sync.rect", "default", 0.0); + set_state(PART:"subtitle.sync.rect.1", "default", 0.0); + set_state(PART:"subtitle.sync.rect.2", "default", 0.0); + set_state(PART:"subtitle.sync.rect.3", "default", 0.0); + } + } + program { + signal: "signal.subtitle.sync.hide"; + source: "*"; + script { + set_state(PART:"subtitle.sync.fast.button", "hide", 0.0); + set_state(PART:"subtitle.sync.txt", "hide", 0.0); + set_state(PART:"subtitle.sync.slow.button", "hide", 0.0); + set_state(PART:"subtitle.sync.rect", "hide", 0.0); + set_state(PART:"subtitle.sync.rect.1", "hide", 0.0); + set_state(PART:"subtitle.sync.rect.2", "hide", 0.0); + set_state(PART:"subtitle.sync.rect.3", "hide", 0.0); + } + } + + } /* programs */ + } /* group */ +} /* collection */ diff --git a/res/edc/vp-button-white.edc b/res/edc/vp-button-white.edc new file mode 100755 index 0000000..14a16a5 --- /dev/null +++ b/res/edc/vp-button-white.edc @@ -0,0 +1,504 @@ +#define BUTTON_STATE_ENABLED 0 +#define BUTTON_STATE_DISABLED 1 + +#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC 106 74 +#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC 5 5 5 5 +#define BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC 56 56 + +#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255 +#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255 + +#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_MIN_INC 22 46 +#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4 +#define BUTTON_NAVIFRAME_CENTER_PADDING_MIN_MAX_INC 16 2 +#define BUTTON_NAVIFRAME_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36 +#define BUTTON_NAVIFRAME_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0 +#define BUTTON_NAVIFRAME_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0 +#define BUTTON_NAVIFRAME_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36 +#define BUTTON_NAVIFRAME_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38 +#define BUTTON_NAVIFRAME_CENTER_TEXT_FONT_SIZE_INC 32 +#define BUTTON_NAVIFRAME_MULTILINE_TEXT_FONT_SIZE_INC 24 + +#define BUTTON_NAVIFRAME_BG_MIN_INC 106 68 +#define BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC 106 68 +#define BUTTON_NAVIFRAME_ICONONLY_BG_MIN_INC 72 724 +#define BUTTON_NAVIFRAME_BG_BORDER_INC 5 5 5 5 +#define BUTTON_NAVIFRAME_PADDING_MIN_INC 16 3 +#define BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38 +#define BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0 +#define BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC 38 38 +#define BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC 38 38 +#define BUTTON_TEXT_NAVIFRAME_FONT_SIZE_INC 32 +#define BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC 106 68 + +#define BUTTON_NAVIFRAME_MORE_BG_MIN_MAX_INC 82 64 +#define BUTTON_NAVIFRAME_MORE_BG_BORDER_INC 5 5 5 5 +#define BUTTON_NAVIFRAME_MORE_DEFAULT_IMAGE_MIN_MAX_INC 50 50 + +#define BUTTON_TEXT_NAVIFRAME_NORMAL_COLOR_INC 211 211 211 255 +#define BUTTON_TEXT_NAVIFRAME_PRESSED_COLOR_INC 249 249 249 255 +#define BUTTON_TEXT_NAVIFRAME_FOCUSED_COLOR_INC 249 249 249 255 +#define BUTTON_TEXT_NAVIFRAME_DISABLED_COLOR_INC 211 211 211 255 + +////////////////////////////////////////////////////////////// + group { name: "elm/button/base/video/naviframe/title/default"; + images { + image: "white/common/T01-2_title_btn_bg.png" COMP; + image: "white/common/T01-2_title_btn_bg_press_01.png" COMP; + image: "white/common/T01-2_title_btn_bg_press_02.png" COMP; + } + script { + public button_state = BUTTON_STATE_ENABLED; + } + parts { + part { name: "button_image"; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC; + max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC; + image { + normal: "white/common/T01-2_title_btn_bg.png"; + border: BUTTON_NAVIFRAME_BG_BORDER_INC; + border_scale: 1; + } + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + image.normal: "white/common/T01-2_title_btn_bg_press_01.png"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + image.normal: "white/common/T01-2_title_btn_bg_press_02.png"; + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: BUTTON_NAVIFRAME_PADDING_MIN_INC; + fixed: 1 1; + visible: 0; + } + } + part { name: "bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: BUTTON_NAVIFRAME_BG_MIN_INC; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + min: BUTTON_NAVIFRAME_ICONONLY_BG_MIN_INC; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: BUTTON_NAVIFRAME_PADDING_MIN_INC; + fixed: 1 1; + visible: 0; + } + } + part { name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + description { state: "visible" 0.0; + visible: 0; + min: BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC; + max: BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 1 0; + min: 0 0; + visible: 0; + } + description { state: "visible" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 1 0; + min: BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + min: BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC; + max: BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + } + description { state: "icononly" 0.0; + min: BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC; + max: BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_TEXT_NAVIFRAME_NORMAL_COLOR_INC; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: BUTTON_TEXT_NAVIFRAME_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_TEXT_NAVIFRAME_PRESSED_COLOR_INC; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: BUTTON_TEXT_NAVIFRAME_DISABLED_COLOR_INC; + visible: 1; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_TEXT_NAVIFRAME_FOCUSED_COLOR_INC; + } + } + part { name: "over2"; + type: RECT; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over3"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + after: "text_clicked"; + } + program { name: "text_clicked"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "clicked", 0.0); + } + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (strcmp(st, "icononly")) + { + emit("elm,action,default,text,set", ""); + set_state(PART:"elm.text", "visible", 0.0); + } + if (get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"button_image", "default", 0.0); + } + after: button_unpress; + } + program { name: "button_unclick3"; + signal: "mouse,clicked,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + set_state(PART:"bg", "visible", 0.0); + } + if (get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "disabled_visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + set_state(PART:"bg", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + set_state(PART:"bg", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + set_state(PART:"bg", "icononly", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + target: "padding_after_icon"; + target: "icon_rect"; + target: "bg"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + set_int(button_state, BUTTON_STATE_DISABLED); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "disabler"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + set_int(button_state, BUTTON_STATE_ENABLED); + } + } + program { name: "focused"; + //signal: "elm,action,focus"; + //source: "elm"; + action: STATE_SET "focused" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "unfocused"; + //signal: "elm,action,unfocus"; + //source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + after: "unfocus_text"; + } + program { name: "unfocus_text"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + } + } diff --git a/res/edc/vp-button.edc b/res/edc/vp-button.edc new file mode 100755 index 0000000..d013cf2 --- /dev/null +++ b/res/edc/vp-button.edc @@ -0,0 +1,1069 @@ +#define BUTTON_STATE_ENABLED 0 +#define BUTTON_STATE_DISABLED 1 + +#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_NORMAL_COLOR_INC 146 124 98 255 +#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_PRESSED_COLOR_INC 217 147 26 255 +#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_FOCUSED_COLOR_INC 217 147 26 255 +#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC 160 151 145 255 + +#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC 36 +#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC 74 +#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4 +#define BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC 16 2 +#define BUTTON_NAVIBAR_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36 +#define BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0 +#define BUTTON_NAVIBAR_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0 +#define BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36 +#define BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38 +#define BUTTON_NAVIBAR_CENTER_TEXT_FONT_SIZE_INC 32 +#define BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC 24 + +#define BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC 106 40 +#define BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC 36 32 + +#define NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC 3 3 3 255 +#define NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255 + +#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74 +#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74 +#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74 +#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 5 5 5 5 +#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 5 5 +#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38 +#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0 +#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 38 38 +#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 38 38 +#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 32 + +#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 108 108 108 255 +#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 249 249 249 255 +#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 108 108 108 255 +#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 108 115 118 255 + +/////////////////////////////////////////////////////////////////////////////////////// + group { name: "elm/button/base/video/style1"; + alias: "elm/button/base/video/text_only/style1"; + alias: "elm/button/base/video/center"; + alias: "elm/button/base/video/icon_and_text/center"; + alias: "elm/button/base/video/nocontents/search_button"; + alias: "elm/button/base/video/naviframe/title/default"; + images { + image: "T01_title_btn.png" COMP; + image: "T01_title_btn_press.png" COMP; + } + script { + public button_state = BUTTON_STATE_ENABLED; + } + parts { + part { name: "button_image"; + scale: 1; + description { state: "default" 0.0; + image { + normal: "T01_title_btn.png"; + border: BUTTON_TEXT_STYLE1_BG_BORDER_INC; + border_scale: 1; + } + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + image { + normal: "T01_title_btn_press.png"; + } + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + image { + normal: "T01_title_btn.png"; + } + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + image { + normal: "T01_title_btn_press.png"; + } + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2 { + relative: 0.0 0.0; + } + min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC; + fixed: 1 1; + visible: 0; + } + } + part { name: "bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: BUTTON_TEXT_STYLE1_BG_MIN_INC; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1 { + relative: 1.0 1.0; + } + min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC; + fixed: 1 1; + visible: 0; + } + } + part { name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + description { state: "visible" 0.0; + visible: 0; + min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC; + max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + to: "icon_rect"; + } + fixed: 1 0; + min: 0 0; + visible: 0; + } + description { state: "visible" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + to: "icon_rect"; + } + fixed: 1 0; + min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC; + max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + } + description { state: "icononly" 0.0; + min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC; + max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC; + align: 0.5 0.5; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC; + visible: 1; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC; + } + } + part { name: "over2"; + type: RECT; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over3"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + after: "text_clicked"; + } + program { name: "text_clicked"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "clicked", 0.0); + } + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (strcmp(st, "icononly")) + { + emit("elm,action,default,text,set", ""); + set_state(PART:"elm.text", "visible", 0.0); + } + if (get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"button_image", "default", 0.0); + } + after: button_unpress; + } + program { name: "button_unclick3"; + signal: "mouse,clicked,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + set_state(PART:"bg", "visible", 0.0); + } + if (get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "disabled_visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + set_state(PART:"bg", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + set_state(PART:"bg", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + set_state(PART:"bg", "icononly", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + target: "padding_after_icon"; + target: "icon_rect"; + target: "bg"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + set_int(button_state, BUTTON_STATE_DISABLED); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "disabler"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + set_int(button_state, BUTTON_STATE_ENABLED); + } + } + program { name: "focused"; + //signal: "elm,action,focus"; + //source: "elm"; + action: STATE_SET "focused" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "unfocused"; + //signal: "elm,action,unfocus"; + //source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + after: "unfocus_text"; + } + program { name: "unfocus_text"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + } + } + +/////////////////////////////////////////////////////////////////////////////////////// + group { name: "elm/button/base/video/naviframe/back_btn/default"; + alias: "elm/button/base/video/naviframe/prev_btn/default"; + alias: "elm/button/base/video/naviframe/end_btn/default"; + //TODO: Remove this alias later + alias: "elm/button/base/video/navigationbar_prev_btn/default"; + alias: "elm/button/base/video/navigationbar_backbutton/default"; + alias: "elm/button/base/video/navigationbar_end_btn/default"; + images { + image: "T01_btn_prev.png" COMP; + + } + parts { + part { name: "button_image"; + type: RECT; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC; + color: 0 0 0 0; + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + } + description { + state: "disabled" 0.0; + inherit: "default" 0.0; + } + } + part {name: "padding_right"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + align: 1 0; + min: 1 0; + rel1 { relative: 1 0.2; } + rel2 { relative: 1 0.8; } + fixed: 1 0; + color: NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC; + } + } + part {name: "padding_before_right"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + align: 1 0; + min: 1 0; + rel1 { relative: 0 0; to: "padding_right"; } + rel2 { relative: 0 1; to: "padding_right"; } + fixed: 1 0; + color: NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC; + } + } + part { name: "button_center_part"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC; + max: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC; + align: 0.5 0.5; + rel2 { relative: 0 1; to_x: "padding_before_right"; } + image { + normal: "T01_btn_prev.png"; + } + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + image.normal: "T01_btn_prev.png"; + } + } + part { name: "over1"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over2"; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + target: "button_center_part"; + } + program { name: "button_unclick"; + signal: "mouse,up,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + after: "button_unclick_anim"; + } + program { name: "button_unclick_anim"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "button_center_part"; + } + program { name: "button_unclick2"; + signal: "mouse,clicked,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disabler"; + target: "button_image"; + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disabler"; + target: "button_image"; + } + } + } + +/////////////////////////////////////////////////////////////////////////////////////// + group { name: "elm/button/base/naviframe_control/multiline"; + alias: "elm/button/base/video/navigationbar_control/multiline"; + script { + public button_state = BUTTON_STATE_ENABLED; + } + images.image: "T01_title_btn.png" COMP; + images.image: "T01_title_btn_press.png" COMP; + styles{ + style { name: "btn_multiline_navigationbar_controlbar_style"; + base: "font=SLP:style=Medium font_size="BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC" align=center color=#ffffff wrap=mixed"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + } + } + parts { + part { name: "button_image"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC; + rel1.offset: 0 0; + rel2.offset: -1 -1; + image.normal: "T01_title_btn.png"; + image.border: BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + image.normal: "T01_title_btn.png"; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + image.normal: "T01_title_btn_press.png"; + } + } + part { + name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 0.0; + } + min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC; + fixed: 1 1; + visible: 0; + } + } + part { + name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + rel2.relative: 1.0 1.0; + min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC; + fixed: 1 1; + visible: 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 0.0 1.0; + to_x: "elm.swallow.content"; + to_y: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.swallow.content"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + } + part { + name: "padding_icon_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + visible: 0; + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + relative: 1.0 1.0; + to: "icon_rect"; + } + fixed: 1 0; + min: 0 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + relative: 1.0 1.0; + to: "icon_rect"; + } + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + visible: 1; + min: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC; + max: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + } + description { state: "icononly" 0.0; + visible: 1; + min: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC; + max: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + align: 0.5 0.5; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_icon_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + align: 0.5 0.5; + color: 255 255 255 255; + text { + style: "btn_multiline_navigationbar_controlbar_style"; + min: 0 0; + max: 0 1; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 80 0; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 0 0; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 0 0; + color: 255 255 255 255; + } + } + part { name: "over2"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over3"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 127; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + after: "text_clicked"; + } + program { name: "text_clicked"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "clicked", 0.0); + } + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (strcmp(st, "icononly")) + { + emit("elm,action,default,text,set", ""); + set_state(PART:"elm.text", "visible", 0.0); + } + if(get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"button_image", "default", 0.0); + } + after: button_unpress; + } + program { name: "button_unclick3"; + signal: "mouse,clicked,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + target: "padding_icon_text"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "clipper"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + set_int(button_state, BUTTON_STATE_DISABLED); + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "clipper"; + target: "disabler"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + set_int(button_state, BUTTON_STATE_ENABLED); + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "focused"; + action: STATE_SET "focused" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "unfocused"; + action: STATE_SET "default" 0.0; + target: "button_image"; + after: "unfocus_text"; + } + program { name: "unfocus_text"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + } + } diff --git a/res/edc/vp-chapter-view.edc b/res/edc/vp-chapter-view.edc new file mode 100755 index 0000000..6305934 --- /dev/null +++ b/res/edc/vp-chapter-view.edc @@ -0,0 +1,757 @@ + + +#define ITEM_BG_IMAGE "white/common/T01-2_popup_bg.png" +#define ITEM_BG_IMAGE_BORDER 3 3 3 3 + +#define ITEM_BG_COLOR 40 40 40 20 +#define ITEM_TEXT_BG_COLOR 0 0 0 255 +#define ITEM_TEXT_COLOR 255 255 255 255 + +collections { + group { + images { + image: ITEM_BG_IMAGE COMP; + } + name: "chapter"; + parts { + part { + name: "chapter.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 255; + } + } + part { + name: "chapter.item.01.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.01;} + rel2 { relative: 0.246 0.33;} + color: ITEM_BG_COLOR; + } + } + part { + name: "chapter.item.02.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.01;} + rel2 { relative: 0.492 0.33;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.03.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.01;} + rel2 { relative: 0.738 0.33;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.04.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.01;} + rel2 { relative: 0.984 0.33;} + color: ITEM_BG_COLOR; + } + } + + + part { + name: "chapter.item.05.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.34;} + rel2 { relative: 0.246 0.66;} + color: ITEM_BG_COLOR; + } + } + part { + name: "chapter.item.06.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.34;} + rel2 { relative: 0.492 0.66;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.07.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.34;} + rel2 { relative: 0.738 0.66;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.08.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.34;} + rel2 { relative: 0.984 0.66;} + color: ITEM_BG_COLOR; + } + } + + + part { + name: "chapter.item.09.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.67;} + rel2 { relative: 0.246 0.99;} + color: ITEM_BG_COLOR; + } + } + part { + name: "chapter.item.10.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.67;} + rel2 { relative: 0.492 0.99;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.11.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.67;} + rel2 { relative: 0.738 0.99;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.12.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.67;} + rel2 { relative: 0.984 0.99;} + color: ITEM_BG_COLOR; + } + } + part { + name: "chapter.item.01"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.01;} + rel2 { relative: 0.246 0.33;} + } + } + part { + name: "chapter.item.02"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.01;} + rel2 { relative: 0.492 0.33;} + } + } + + part { + name: "chapter.item.03"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.01;} + rel2 { relative: 0.738 0.33;} + } + } + + part { + name: "chapter.item.04"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.01;} + rel2 { relative: 0.984 0.33;} + } + } + + + part { + name: "chapter.item.05"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.34;} + rel2 { relative: 0.246 0.66;} + } + } + part { + name: "chapter.item.06"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.34;} + rel2 { relative: 0.492 0.66;} + } + } + + part { + name: "chapter.item.07"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.34;} + rel2 { relative: 0.738 0.66;} + } + } + + part { + name: "chapter.item.08"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.34;} + rel2 { relative: 0.984 0.66;} + } + } + + + part { + name: "chapter.item.09"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.67;} + rel2 { relative: 0.246 0.99;} + } + } + part { + name: "chapter.item.10"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.67;} + rel2 { relative: 0.492 0.99;} + } + } + + part { + name: "chapter.item.11"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.67;} + rel2 { relative: 0.738 0.99;} + } + } + + part { + name: "chapter.item.12"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.67;} + rel2 { relative: 0.984 0.99;} + } + } + + part { + name: "chapter.item.01.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.01.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.01.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + part { + name: "chapter.item.02.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.02.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.02.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.03.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.03.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.03.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.04.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.04.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.04.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + + part { + name: "chapter.item.05.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.05.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.05.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + part { + name: "chapter.item.06.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.06.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.06.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.07.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.07.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.07.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.08.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.08.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.08.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + + part { + name: "chapter.item.09.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.09.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.09.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + part { + name: "chapter.item.10.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.10.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.10.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.11.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.11.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.11.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.12.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.12.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.12.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + part { + name: "chapter.item.01.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.01.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.01.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "01"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.02.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.02.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.02.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "02"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.03.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.03.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.03.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "03"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.04.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.04.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.04.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "04"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.05.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.05.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.05.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "05"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.06.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.06.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.06.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "06"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.07.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.07.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.07.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "07"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.08.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.08.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.08.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "08"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.09.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.09.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.09.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "09"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.10.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.10.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.10.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "10"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.11.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.11.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.11.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "11"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.12.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.12.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.12.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "12"; + align: 0.5 0.5; + } + } + } + } /* parts */ + } /* group */ +} /* collections */ diff --git a/res/edc/vp-check.edc b/res/edc/vp-check.edc new file mode 100755 index 0000000..6dc567e --- /dev/null +++ b/res/edc/vp-check.edc @@ -0,0 +1,1318 @@ +#define CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC 42 42 + +#define CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC 255 255 255 255 +#define CHECK_DEFAULT_TEXT_PRESSED_COLOR_INC 255 255 255 255 +#define CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC 136 136 136 136 + +////////////////////////////////////////////////////////// +// +#define GALLERY_EDC_IMAGE_CHECK_BG "T01_checkbox.png" +#define GALLERY_EDC_IMAGE_CHECK_BG_DIM "00_check_bg_dim.png" +#define GALLERY_EDC_IMAGE_CHECK_BG_CHECKING "T01_check.png" +#define GALLERY_EDC_IMAGE_CHECK_ALBUM_BG "T01_checkbox.png" +#define GALLERY_EDC_IMAGE_CHECK_GRID "T01_grid_select_check.png" +#define GALLERY_EDC_IMAGE_CHECK_PINCH_GRID "00_grid_select_check.png" + +// Grid item background size W: 14+158+6; H: 24+158 +#define W 178 +#define H 182 + +// Gap between bg and icon +#define GAP_BG_L 14 +#define GAP_BG_R 6 +#define GAP_BG_T 24 + +// Gap between icon and shadow +#define GAP_ICON_L 3 +#define GAP_ICON_R 3 +#define GAP_ICON_T 0 +#define GAP_ICON_B 4 + +// Shadow image size +#define SHADOW_W (W-GAP_BG_L-GAP_BG_R+GAP_ICON_L+GAP_ICON_R) +#define SHADOW_H (H-GAP_BG_T+GAP_ICON_B) + +// Gap between bg and shadow +#define GAP_SHADOW_L (GAP_BG_L-GAP_ICON_L) +#define GAP_SHADOW_R (GAP_BG_R-GAP_ICON_R) +#define GAP_SHADOW_T (GAP_BG_T-GAP_ICON_T) +#define GAP_SHADOW_B (0+GAP_ICON_B) + + + +#define ZOOMED_W 116 //6+104+6 +#define ZOOMED_H 110 //6+104 + +#define ZOOMED_GAP_L 6 +#define ZOOMED_GAP_R 6 +#define ZOOMED_GAP_T 6 +#define ZOOMED_GAP_B 0 +// +////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////// +// +// check default textblock style +// +/////////////////////////////////////////////////////////////////////////////////////// + styles { + style { name: "check_label_textblock_style"; + base: "font=SLP:style=Roman font_size=32 color=#ffffff wrap=char"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Bold"; + tag: "b" "+ font=SLP:style=Bold"; + tag: "whitecolor" "+ color=#ffffff"; + tag: "tab" "\t"; + } + } + +#define CHECK_STATE_DEFAULT 0 +#define CHECK_STATE_VISIBLE 1 +#define CHECK_STATE_DISABLED_VISIBLE 2 +#define CHECK_STATE_DISABLED 3 + +//////////////////////////////////////////////////////////////////////////////// +#define CHECK_STYLE_DEFAULT(style_name, image_bg, image_checking, min_width, min_height) \ + group { name: "elm/check/base/"style_name; \ + images { \ + image: image_bg COMP; \ + image: GALLERY_EDC_IMAGE_CHECK_BG_DIM COMP; \ + image: image_checking COMP; \ + } \ + script { \ + public check_state = CHECK_STATE_DEFAULT; \ + } \ + parts { \ + part { name: "back_bg"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel2.relative: 0.0 1.0; \ + align: 0 0.5; \ + min: min_width min_height; \ + fixed: 1 0; \ + color: 0 0 0 0; \ + } \ + } \ + part { name: "bg"; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \ + max: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \ + fixed: 1 1; \ + rel1.to: "back_bg"; \ + rel2.to: "back_bg"; \ + image.normal: image_bg; \ + fill.smooth : 0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + image.normal: GALLERY_EDC_IMAGE_CHECK_BG_DIM; \ + fill.smooth : 0; \ + } \ + } \ + part { name: "check"; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel1.to: "bg"; \ + rel2.to: "bg"; \ + visible: 0; \ + image.normal: image_checking; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + part { name: "elm.swallow.content"; \ + type: SWALLOW; \ + description { state: "default" 0.0; \ + fixed: 1 0; \ + visible: 0; \ + color: 255 255 255 255; \ + align: 0.0 0.5; \ + rel1 { \ + to_x: "bg"; \ + relative: 1.0 0.0; \ + offset: 1 1; \ + } \ + rel2 { \ + to_x: "bg"; \ + relative: 1.0 1.0; \ + offset: 2 -2; \ + } \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + fixed: 1 1; \ + visible: 1; \ + aspect: 1.0 1.0; \ + aspect_preference: VERTICAL; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: 128 128 128 128; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + color: 128 128 128 128; \ + fixed: 1 1; \ + visible: 1; \ + aspect: 1.0 1.0; \ + } \ + } \ + part { name: "elm.text"; \ + type: TEXTBLOCK; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + visible: 0; \ + fixed: 0 1; \ + rel1 { \ + relative: 1.0 0.5; \ + offset: 1 1; \ + to_x: "elm.swallow.content"; \ + } \ + rel2 { \ + relative: 1.0 0.5; \ + offset: -2 -2; \ + } \ + align: 0.0 0.5; \ + text { \ + style: "check_label_textblock_style"; \ + min: 0 0; \ + } \ + color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + text.min: 1 1; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + text.min: 1 1; \ + color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \ + } \ + } \ + part { name: "events1"; \ + type: RECT; \ + ignore_flags: ON_HOLD; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + } \ + part { name: "events2"; \ + type: RECT; \ + repeat_events: 1; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + } \ + part { name: "disabler"; \ + type: RECT; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + visible: 0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + } \ + programs { \ + program { name: "click"; \ + signal: "mouse,clicked,1"; \ + source: "events1"; \ + action: SIGNAL_EMIT "elm,action,check,toggle" ""; \ + } \ + program { name: "check_on"; \ + signal: "elm,state,check,on"; \ + source: "elm"; \ + script { \ + set_int(check_state, CHECK_STATE_VISIBLE); \ + set_state(PART:"check", "visible", 0.0); \ + } \ + } \ + program { name: "check_off"; \ + signal: "elm,state,check,off"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "check"; \ + script { \ + if (get_int(check_state) == CHECK_STATE_VISIBLE) \ + { \ + set_int(check_state, CHECK_STATE_DEFAULT); \ + set_state(PART:"check", "default", 0.0); \ + } \ + } \ + } \ + program { name: "text_show"; \ + signal: "elm,state,text,visible"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "elm.text"; \ + } \ + program { name: "text_hide"; \ + signal: "elm,state,text,hidden"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.text"; \ + } \ + program { name: "icon_show"; \ + signal: "elm,state,icon,visible"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "elm.swallow.content"; \ + } \ + program { name: "icon_hide"; \ + signal: "elm,state,icon,hidden"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.swallow.content"; \ + } \ + program { name: "disable"; \ + signal: "elm,state,disabled"; \ + source: "elm"; \ + action: STATE_SET "disabled" 0.0; \ + target: "disabler"; \ + target: "bg"; \ + after: "disable_text"; \ + } \ + program { name: "disable_text"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"elm.text", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.text", "disabled_visible", 0.0); \ + else \ + set_state(PART:"elm.text", "disabled", 0.0); \ + get_state(PART:"elm.swallow.content", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \ + else \ + set_state(PART:"elm.swallow.content", "disabled", 0.0); \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + { \ + set_state(PART:"check", "disabled_visible", 0.0); \ + set_int(check_state, CHECK_STATE_DISABLED_VISIBLE); \ + } \ + } \ + } \ + program { name: "enable"; \ + signal: "elm,state,enabled"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "disabler"; \ + target: "bg"; \ + after: "enable_text"; \ + } \ + program { name: "enable_text"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"elm.text", st, 30, vl); \ + if (!strcmp(st, "disabled_visible")) \ + set_state(PART:"elm.text", "visible", 0.0); \ + else \ + set_state(PART:"elm.text", "default", 0.0); \ + get_state(PART:"elm.swallow.content", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.swallow.content", "visible", 0.0); \ + else \ + set_state(PART:"elm.swallow.content", "default", 0.0); \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "disabled_visible")) \ + { \ + set_state(PART:"check", "visible", 0.0); \ + set_int(check_state, CHECK_STATE_VISIBLE); \ + } \ + else \ + set_int(check_state, CHECK_STATE_DEFAULT); \ + } \ + } \ + } \ + } + +//////////////////////////////////////////////////////////////////////////////// + CHECK_STYLE_DEFAULT("gallery/default", GALLERY_EDC_IMAGE_CHECK_BG, GALLERY_EDC_IMAGE_CHECK_BG_CHECKING, 42, 42) + +//////////////////////////////////////////////////////////////////////////////// + CHECK_STYLE_DEFAULT("gallery/album", GALLERY_EDC_IMAGE_CHECK_ALBUM_BG, GALLERY_EDC_IMAGE_CHECK_BG_CHECKING, 42, 42) + +//////////////////////////////////////////////////////////////////////////////// +#define CHECK_STYLE_GRID(style_name, image_grid, width, height) \ + group { name: "elm/check/base/"style_name; \ + images.image: image_grid COMP; \ + parts { \ + part { name: "bg"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + description { state: "pressed" 0.0; \ + inherit: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ + } \ + part { name: "icon_bg_img"; \ + type: RECT; \ + mouse_events: 0; \ + scale : 1; \ + description { \ + color: 0 0 0 0; \ + rel1 { relative: GAP_SHADOW_L/W GAP_SHADOW_T/H; to: "bg"; } \ + rel2 { relative: (W-GAP_SHADOW_R-1)/W (H+GAP_SHADOW_B-1)/H; to: "bg"; } \ + } \ + } \ + part { name: "icon_bg"; \ + type: RECT; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + rel1 { relative: GAP_ICON_L/SHADOW_W GAP_ICON_T/SHADOW_H; to: "icon_bg_img"; } \ + rel2 { relative: (SHADOW_W-GAP_ICON_R+2)/SHADOW_W (SHADOW_H-GAP_ICON_B+1)/SHADOW_H; to: "icon_bg_img"; } \ + } \ + } \ + part { name: "bg2"; \ + type: RECT; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel1.to: "icon_bg"; \ + rel2.to: "icon_bg"; \ + align: 0.5 0.5; \ + min: width height; \ + max: width height; \ + color: 0 0 0 0; \ + } \ + description { state: "pressed" 0.0; \ + inherit: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ + } \ + part { name: "selected_bg"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel1.to: "icon_bg"; \ + rel2.to: "icon_bg"; \ + color: 0 0 0 0; \ + visible: 0; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + color: 0 0 0 153; \ + visible: 1; \ + } \ + } \ + part { name: "check"; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel1.to: "bg2"; \ + rel2.to: "bg2"; \ + visible: 0; \ + image.normal: image_grid; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { state: "pressed" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + part { name: "elm.swallow.content"; \ + type: SWALLOW; \ + description { \ + state: "default" 0.0; \ + fixed: 1 0; \ + visible: 0; \ + color: 255 255 255 255; \ + align: 0.0 0.5; \ + rel1 { \ + to_x: "bg2"; \ + relative: 1.0 0.0; \ + offset: 1 1; \ + } \ + rel2 { \ + to_x: "bg2"; \ + relative: 1.0 1.0; \ + offset: 2 -2; \ + } \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + fixed: 1 1; \ + visible: 1; \ + aspect: 1.0 1.0; \ + aspect_preference: VERTICAL; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: 128 128 128 128; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + color: 128 128 128 128; \ + fixed: 1 1; \ + visible: 1; \ + aspect: 1.0 1.0; \ + } \ + } \ + part { name: "elm.text"; \ + type: TEXTBLOCK; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + visible: 0; \ + fixed: 0 1; \ + rel1 { \ + relative: 1.0 0.5; \ + offset: 1 1; \ + to_x: "elm.swallow.content"; \ + } \ + rel2 { \ + relative: 1.0 0.5; \ + offset: -2 -2; \ + } \ + color: 255 255 255 255; \ + align: 0.0 0.5; \ + text { \ + style: "check_label_textblock_style"; \ + min: 0 0; \ + } \ + color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + text.min: 1 1; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + text.min: 1 1; \ + color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \ + } \ + } \ + part { name: "events"; \ + type: RECT; \ + ignore_flags: ON_HOLD; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + } \ + part { name: "disabler"; \ + type: RECT; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + visible: 0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + } \ + programs { \ + program { name: "click"; \ + signal: "mouse,up,1"; \ + source: "events"; \ + action: SIGNAL_EMIT "elm,action,check,toggle" ""; \ + after: "bg_normal"; \ + } \ + program { name: "bg_normal"; \ + script { \ + set_state(PART:"bg", "default", 0.0); \ + set_state(PART:"bg2", "default", 0.0); \ + } \ + } \ + program { name: "mouseout"; \ + signal: "mouse,out"; \ + source: "events"; \ + after: "bg_check_normal"; \ + } \ + program { name: "bg_check_normal"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "pressed")) \ + set_state(PART:"check", "visible", 0.0); \ + set_state(PART:"bg", "default", 0.0); \ + set_state(PART:"bg2", "default", 0.0); \ + } \ + } \ + program { name: "pressed"; \ + signal: "mouse,down,1"; \ + source: "events"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"check", "pressed", 0.0); \ + set_state(PART:"bg", "pressed", 0.0); \ + set_state(PART:"bg2", "pressed", 0.0); \ + } \ + } \ + program { name: "check_on"; \ + signal: "elm,state,check,on"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "check"; \ + target: "selected_bg"; \ + } \ + program { name: "check_off"; \ + signal: "elm,state,check,off"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "check"; \ + target: "selected_bg"; \ + } \ + program { name: "text_show"; \ + signal: "elm,state,text,visible"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "elm.text"; \ + } \ + program { name: "text_hide"; \ + signal: "elm,state,text,hidden"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.text"; \ + } \ + program { name: "icon_show"; \ + signal: "elm,state,icon,visible"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "elm.swallow.content"; \ + } \ + program { name: "icon_hide"; \ + signal: "elm,state,icon,hidden"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.swallow.content"; \ + } \ + program { name: "disable"; \ + signal: "elm,state,disabled"; \ + source: "elm"; \ + action: STATE_SET "disabled" 0.0; \ + target: "disabler"; \ + target: "bg"; \ + target: "bg2"; \ + after: "disable_text"; \ + } \ + program { name: "disable_text"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"elm.text", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.text", "disabled_visible", 0.0); \ + else \ + set_state(PART:"elm.text", "disabled", 0.0); \ + get_state(PART:"elm.swallow.content", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \ + else \ + set_state(PART:"elm.swallow.content", "disabled", 0.0); \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"check", "disabled_visible", 0.0); \ + } \ + } \ + program { name: "enable"; \ + signal: "elm,state,enabled"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "disabler"; \ + target: "bg"; \ + target: "bg2"; \ + after: "enable_text"; \ + } \ + program { name: "enable_text"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"elm.text", st, 30, vl); \ + if (!strcmp(st, "disabled_visible")) \ + set_state(PART:"elm.text", "visible", 0.0); \ + else \ + set_state(PART:"elm.text", "default", 0.0); \ + get_state(PART:"elm.swallow.content", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.swallow.content", "visible", 0.0); \ + else \ + set_state(PART:"elm.swallow.content", "default", 0.0); \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "disabled_visible")) \ + set_state(PART:"check", "visible", 0.0); \ + } \ + } \ + } \ + } + +//////////////////////////////////////////////////////////////////////////////// + CHECK_STYLE_GRID("gallery/grid", GALLERY_EDC_IMAGE_CHECK_GRID, 64, 64) + +//////////////////////////////////////////////////////////////////////////////// + group { name: "elm/check/base/gallery/pinch/grid"; + images.image: GALLERY_EDC_IMAGE_CHECK_PINCH_GRID COMP; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "icon_bg"; + type: RECT; + description { + state: "default" 0.0; + color: 0 0 0 0; + rel1 { relative: ZOOMED_GAP_L/ZOOMED_W ZOOMED_GAP_T/ZOOMED_H; to: "bg"; } + rel2 { relative: (ZOOMED_W-ZOOMED_GAP_R)/ZOOMED_W (ZOOMED_H-ZOOMED_GAP_B)/ZOOMED_H; to: "bg"; } + } + } + part { name: "bg2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "icon_bg"; + rel2.to: "icon_bg"; + align: 0.5 0.5; + min: 40 40; + max: 40 40; + color: 0 0 0 0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "selected_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1.to: "icon_bg"; + rel2.to: "icon_bg"; + color: 0 0 0 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + color: 0 0 0 153; + visible: 1; + } + } + part { name: "check"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg2"; + rel2.to: "bg2"; + visible: 0; + image.normal: GALLERY_EDC_IMAGE_CHECK_PINCH_GRID; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + description { + state: "default" 0.0; + fixed: 1 0; + visible: 0; + color: 255 255 255 255; + align: 0.0 0.5; + rel1 { + to_x: "bg2"; + relative: 1.0 0.0; + offset: 1 1; + } + rel2 { + to_x: "bg2"; + relative: 1.0 1.0; + offset: 2 -2; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + fixed: 0 1; + rel1 { + relative: 1.0 0.5; + offset: 1 1; + to_x: "elm.swallow.content"; + } + rel2 { + relative: 1.0 0.5; + offset: -2 -2; + } + color: 255 255 255 255; + align: 0.0 0.5; + text { + style: "check_label_textblock_style"; + min: 0 0; + } + color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; + } + } + part { name: "events"; + type: RECT; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "click"; + signal: "mouse,up,1"; + source: "events"; + action: SIGNAL_EMIT "elm,action,check,toggle" ""; + after: "bg_normal"; + } + program { name: "bg_normal"; + script { + set_state(PART:"bg", "default", 0.0); + set_state(PART:"bg2", "default", 0.0); + } + } + program { name: "mouseout"; + signal: "mouse,out"; + source: "events"; + after: "bg_check_normal"; + } + program { name: "bg_check_normal"; + script { + new st[31]; + new Float:vl; + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "pressed")) + set_state(PART:"check", "visible", 0.0); + set_state(PART:"bg", "default", 0.0); + set_state(PART:"bg2", "default", 0.0); + } + } + program { name: "pressed"; + signal: "mouse,down,1"; + source: "events"; + script { + new st[31]; + new Float:vl; + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"check", "pressed", 0.0); + set_state(PART:"bg", "pressed", 0.0); + set_state(PART:"bg2", "pressed", 0.0); + } + } + program { name: "check_on"; + signal: "elm,state,check,on"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "check"; + target: "selected_bg"; + } + program { name: "check_off"; + signal: "elm,state,check,off"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "check"; + target: "selected_bg"; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disabler"; + target: "bg"; + target: "bg2"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); + else + set_state(PART:"elm.swallow.content", "disabled", 0.0); + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"check", "disabled_visible", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disabler"; + target: "bg"; + target: "bg2"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "visible", 0.0); + else + set_state(PART:"elm.swallow.content", "default", 0.0); + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"check", "visible", 0.0); + } + } + } + } + +//////////////////////////////////////////////////////////////////////////////// + group { name: "elm/check/base/gallery/album/grid"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "bg2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg"; + rel2.to: "bg"; + align: 0.5 0.5; + min: 40 40; + max: 40 40; + color: 0 0 0 0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "selected_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg"; + rel2.to: "bg"; + color: 0 0 0 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + color: 0 0 0 153; + visible: 1; + } + } + part { name: "check"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg2"; + rel2.to: "bg2"; + color: 0 0 0 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + description { + state: "default" 0.0; + fixed: 1 0; + visible: 0; + color: 255 255 255 255; + align: 0.0 0.5; + rel1 { + to_x: "bg2"; + relative: 1.0 0.0; + offset: 1 1; + } + rel2 { + to_x: "bg2"; + relative: 1.0 1.0; + offset: 2 -2; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + fixed: 0 1; + rel1 { + relative: 1.0 0.5; + offset: 1 1; + to_x: "elm.swallow.content"; + } + rel2 { + relative: 1.0 0.5; + offset: -2 -2; + } + color: 255 255 255 255; + align: 0.0 0.5; + text { + style: "check_label_textblock_style"; + min: 0 0; + } + color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; + } + } + part { name: "events"; + type: RECT; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "click"; + signal: "mouse,up,1"; + source: "events"; + action: SIGNAL_EMIT "elm,action,check,toggle" ""; + after: "bg_normal"; + } + program { name: "bg_normal"; + script { + set_state(PART:"bg", "default", 0.0); + set_state(PART:"bg2", "default", 0.0); + } + } + program { name: "mouseout"; + signal: "mouse,out"; + source: "events"; + after: "bg_check_normal"; + } + program { name: "bg_check_normal"; + script { + new st[31]; + new Float:vl; + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "pressed")) + set_state(PART:"check", "visible", 0.0); + set_state(PART:"bg", "default", 0.0); + set_state(PART:"bg2", "default", 0.0); + } + } + program { name: "pressed"; + signal: "mouse,down,1"; + source: "events"; + script { + new st[31]; + new Float:vl; + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"check", "pressed", 0.0); + set_state(PART:"bg", "pressed", 0.0); + set_state(PART:"bg2", "pressed", 0.0); + } + } + program { name: "check_on"; + signal: "elm,state,check,on"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "check"; + target: "selected_bg"; + } + program { name: "check_off"; + signal: "elm,state,check,off"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "check"; + target: "selected_bg"; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disabler"; + target: "bg"; + target: "bg2"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); + else + set_state(PART:"elm.swallow.content", "disabled", 0.0); + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"check", "disabled_visible", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disabler"; + target: "bg"; + target: "bg2"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "visible", 0.0); + else + set_state(PART:"elm.swallow.content", "default", 0.0); + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"check", "visible", 0.0); + } + } + } + } + +#undef CHECK_STATE_DEFAULT +#undef CHECK_STATE_VISIBLE +#undef CHECK_STATE_DISABLED_VISIBLE +#undef CHECK_STATE_DISABLED diff --git a/res/edc/vp-controlbar.edc b/res/edc/vp-controlbar.edc new file mode 100755 index 0000000..a89a419 --- /dev/null +++ b/res/edc/vp-controlbar.edc @@ -0,0 +1,760 @@ +/* +* Refer to nbeat-theme\themes\groups\controlbar.edc +*/ + +#define CONTROLBAR_LARGE_H 78 //Macros defined in file: nbeat.edc. +#define CONTROLBAR_LARGE_LANDSCAPE_H 62 +#define CONTROLBAR_SMALL_H 65 +#define CONTROLBAR_SMALL_LANDSCAPE_H 50 +#define CONTROLBAR_W 78 + +#define CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC 22 22 22 255 +#define CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC 63 63 63 255 + + + group{ + name: "elm/controlbar/base/video/default"; + parts{ + part{ + name: "bg_rect"; + type: RECT; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "bg_image"; + type: SWALLOW; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "large" 0.0; + min: 0 CONTROLBAR_LARGE_H; + fixed: 0 1; + align: 0.5 1.0; + rel1 {relative: 0.0 1.0; offset: 0 -1;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "small" 0.0; + min: 0 CONTROLBAR_SMALL_H; + fixed: 0 1; + align: 0.5 1.0; + rel1 {relative: 0.0 1.0; offset: 0 -1;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "left" 0.0; + min: CONTROLBAR_W 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 0.0 1.0; offset: 0 -1;} + } + description{ + state: "right" 0.0; + min: CONTROLBAR_W 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 {relative: 1.0 0.0; offset: -1 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + } + part{ + name: "elm.swallow.items"; + type: SWALLOW; + scale: 1; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; to: "bg_image";} + rel2 {relative: 1.0 1.0; to: "bg_image";} + } + } + } + programs{ + program{ + name: "default"; + signal: "elm,state,default"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + } + program{ + name: "large"; + signal: "elm,state,large"; + source: "elm"; + action: STATE_SET "large" 0.0; + target: "bg_image"; + } + program{ + name: "small"; + signal: "elm,state,small"; + source: "elm"; + action: STATE_SET "small" 0.0; + target: "bg_image"; + } + program{ + name: "left"; + signal: "elm,state,left"; + source: "elm"; + action: STATE_SET "left" 0.0; + target: "bg_image"; + } + program{ + name: "right"; + signal: "elm,state,right"; + source: "elm"; + action: STATE_SET "right" 0.0; + target: "bg_image"; + } + } + } + + group{ + name: "elm/controlbar/background/video/default"; + images{ + image: "T01_toolbar_bg.png" COMP; + } + parts{ + part{ + name: "bg_image"; + type: IMAGE; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + image.normal: "T01_toolbar_bg.png"; + color: 255 255 255 255; + } + } + programs { + program { + name: "tabbar_bg"; + signal: "elm,state,tabbar"; + source: "elm"; + action: STATE_SET "tabbar" 0.0; + target: "bg_image"; + } + } + } + } + + group{ + name: "elm/controlbar/view/video/default"; + parts{ + part{ + name: "bg_rect"; + type: RECT; + mouse_events:1; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "elm.swallow.view"; + type: SWALLOW; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; to: "bg_rect";} + rel2 {relative: 1.0 1.0; to: "bg_rect";} + } + } + } + } + + group{ + name: "elm/controlbar/item_bg/video/default"; + images{ + image: "T01_toolbar_press.png" COMP; + } + parts{ + part{ + name: "bg_rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description{ + state: "default" 0.0; + min: 0 CONTROLBAR_SMALL_H; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "bg_img"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "toolbar_pressed" 0.0; + inherit: "default" 0.0; + rel1 {relative: 0.0 0.07; offset: 3 0;} + rel2 {relative: 1.0 0.93; offset: -3 0;} + image.normal: "T01_toolbar_press.png"; + image.border: 2 2 2 2; + visible: 1; + } + } + part{ + name: "left_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 0 5;} + rel2 {relative: 0.0 1.0; offset: 1 -3;} + color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "right_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 1.0 0.0; offset: -1 5;} + rel2 {relative: 1.0 1.0; offset: 0 -3;} + color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "top_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 5 0;} + rel2 {relative: 1.0 0.0; offset: -5 1;} + color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "bottom_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 1.0; offset: 5 -1;} + rel2 {relative: 1.0 1.0; offset: -5 0;} + color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "item"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description{ + state: "default" 0.0; + rel1 {to: "bg_rect";} + rel2 {to: "bg_rect";} + } + } + } + programs { + program { + name: "toolbar_pressed"; + signal: "elm,state,toolbar_pressed"; + source: "elm"; + action: STATE_SET "toolbar_pressed" 0.0; + target: "bg_img"; + } + program { + name: "unselected"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_img"; + } + program { + name: "unpressed"; + signal: "elm,state,unpressed"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_img"; + } + program { + name: "left_line_show"; + signal: "elm,state,left_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "left_line"; + } + program { + name: "left_line_hide"; + signal: "elm,state,left_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "left_line"; + } + program { + name: "right_line_show"; + signal: "elm,state,right_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "right_line"; + } + program { + name: "right_line_hide"; + signal: "elm,state,right_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "right_line"; + } + program { + name: "top_line_show"; + signal: "elm,state,top_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "top_line"; + } + program { + name: "top_line_hide"; + signal: "elm,state,top_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "top_line"; + } + program { + name: "bottom_line_show"; + signal: "elm,state,bottom_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "bottom_line"; + } + program { + name: "bottom_line_hide"; + signal: "elm,state,bottom_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bottom_line"; + } + } + } + + + group{ + name: "elm/controlbar/base/video/landscape/default"; + + parts{ + part{ + name: "bg_rect"; + type: RECT; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "bg_image"; + type: SWALLOW; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "large" 0.0; + min: 0 CONTROLBAR_LARGE_LANDSCAPE_H; + fixed: 0 1; + align: 0.5 1.0; + rel1 {relative: 0.0 1.0; offset: 0 -1;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "small" 0.0; + min: 0 CONTROLBAR_SMALL_LANDSCAPE_H; + fixed: 0 1; + align: 0.5 1.0; + rel1 {relative: 0.0 1.0; offset: 0 -1;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "left" 0.0; + min: CONTROLBAR_W 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 0.0 1.0; offset: 0 -1;} + } + description{ + state: "right" 0.0; + min: CONTROLBAR_W 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 {relative: 1.0 0.0; offset: -1 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + } + part{ + name: "elm.swallow.items"; + type: SWALLOW; + scale: 1; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; to: "bg_image";} + rel2 {relative: 1.0 1.0; to: "bg_image";} + } + } + } + programs{ + program{ + name: "default"; + signal: "elm,state,default"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + } + program{ + name: "large"; + signal: "elm,state,large"; + source: "elm"; + action: STATE_SET "large" 0.0; + target: "bg_image"; + } + program{ + name: "small"; + signal: "elm,state,small"; + source: "elm"; + action: STATE_SET "small" 0.0; + target: "bg_image"; + } + program{ + name: "left"; + signal: "elm,state,left"; + source: "elm"; + action: STATE_SET "left" 0.0; + target: "bg_image"; + } + program{ + name: "right"; + signal: "elm,state,right"; + source: "elm"; + action: STATE_SET "right" 0.0; + target: "bg_image"; + } + } + } + + group{ + name: "elm/controlbar/background/video/landscape/default"; + + images{ + image: "T01_toolbar_bg.png" COMP; + } + + parts{ + part{ + name: "bg_image"; + type: IMAGE; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + image.normal: "T01_toolbar_bg.png"; + color: 255 255 255 255; + } + } + programs { + program { + name: "tabbar_bg"; + signal: "elm,state,tabbar"; + source: "elm"; + action: STATE_SET "tabbar" 0.0; + target: "bg_image"; + } + } + } + } + + group{ + name: "elm/controlbar/view/video/landscape/default"; + + parts{ + part{ + name: "bg_rect"; + type: RECT; + mouse_events:1; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "elm.swallow.view"; + type: SWALLOW; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; to: "bg_rect";} + rel2 {relative: 1.0 1.0; to: "bg_rect";} + } + } + } + } + + group{ + name: "elm/controlbar/item_bg/video/landscape/default"; + images{ + image: "T01_toolbar_press.png" COMP; + } + + parts{ + part{ + name: "bg_rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description{ + state: "default" 0.0; + min: 0 CONTROLBAR_SMALL_LANDSCAPE_H; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "bg_img"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "toolbar_pressed" 0.0; + inherit: "default" 0.0; + rel1 {relative: 0.0 0.07; offset: 3 0;} + rel2 {relative: 1.0 0.93; offset: -3 0;} + image.normal: "T01_toolbar_press.png"; + image.border: 2 2 2 2; + visible: 1; + } + } + part{ + name: "left_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 0 5;} + rel2 {relative: 0.0 1.0; offset: 1 -3;} + color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "right_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 1.0 0.0; offset: -1 5;} + rel2 {relative: 1.0 1.0; offset: 0 -3;} + color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "top_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 5 0;} + rel2 {relative: 1.0 0.0; offset: -5 1;} + color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "bottom_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 1.0; offset: 5 -1;} + rel2 {relative: 1.0 1.0; offset: -5 0;} + color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "item"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description{ + state: "default" 0.0; + rel1 {to: "bg_rect";} + rel2 {to: "bg_rect";} + } + } + } + programs { + program { + name: "toolbar_pressed"; + signal: "elm,state,toolbar_pressed"; + source: "elm"; + action: STATE_SET "toolbar_pressed" 0.0; + target: "bg_img"; + } + program { + name: "unselected"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_img"; + } + program { + name: "unpressed"; + signal: "elm,state,unpressed"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_img"; + } + program { + name: "left_line_show"; + signal: "elm,state,left_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "left_line"; + } + program { + name: "left_line_hide"; + signal: "elm,state,left_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "left_line"; + } + program { + name: "right_line_show"; + signal: "elm,state,right_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "right_line"; + } + program { + name: "right_line_hide"; + signal: "elm,state,right_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "right_line"; + } + program { + name: "top_line_show"; + signal: "elm,state,top_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "top_line"; + } + program { + name: "top_line_hide"; + signal: "elm,state,top_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "top_line"; + } + program { + name: "bottom_line_show"; + signal: "elm,state,bottom_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "bottom_line"; + } + program { + name: "bottom_line_hide"; + signal: "elm,state,bottom_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bottom_line"; + } + } + } + diff --git a/res/edc/vp-ctxpopup.edc b/res/edc/vp-ctxpopup.edc new file mode 100755 index 0000000..24cdd9b --- /dev/null +++ b/res/edc/vp-ctxpopup.edc @@ -0,0 +1,1764 @@ +/////////////////////////////////////////////////////////////////////////////////////// +// +// ctxpopup +// +/////////////////////////////////////////////////////////////////////////////////////// + +#define CTXPOPUP_SHADOW_PADDING 10 +#define CTXPOPUP_FRAME_CORNER_SIZE 4 4 +#define CTXPOPUP_FONT_COLOR 0 0 0 255 +#define CTXPOPUP_CLICKED_FONT_COLOR 255 255 255 255 +#define CTXPOPUP_ITEM_DISABLED_COLOR 0 0 0 100 +#define CTXPOPUP_LIST_PADDING 10 +#define CTXPOPUP_LIST_SHADOW_PADDING 3 + +#define CTXPOPUP_BUBBLE_BG_IMAGE "white/common/00_popup_bubble_bg.png" +#define CTXPOPUP_BG_IMAGE "white/common/T01-2_popup_bg.png" +#define CTXPOPUP_BUBBLE_BG_IMAGE_BORDER 13 13 13 13 +#define CTXPOPUP_BG_IMAGE_BORDER 3 3 3 3 +#define CTXPOPUP_BG_IMAGEEDITOR_BORDER 10 10 10 10 +#define CTXPOPUP_BG_COLOR_INC 22 27 30 165 +#define CTXPOPUP_BG_PRESS_COLOR_INC 42 137 194 255 +#define CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC 249 249 249 255 +#define CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC 249 249 249 255 +#define CTXPOPUP_SEPARATOR_COLOR_INC 200 200 200 255 +#define CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC 200 200 200 255 +#define CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC 1 0 +#define CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC 1 999999 +#define CTXPOPUP_VERTICAL_SEPARATOR_MIN_SIZE_INC 0 1 +#define CTXPOPUP_VERTICAL_SEPARATOR_MAX_SIZE_INC 999999 1 +#define CTXPOPUP_TP_BG_COLOR_INC 0 140 210 255 +#define CTXPOPUP_ITEM_TEXT_SIZE_INC 33 +#define CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC 33 +#define CTXPOPUP_ITEM_HEIGHT_INC 112 +#define CTXPOPUP_ITEM_ICON_INC 160 112 +#define CTXPOPUP_ICON_WIDTH_INC 64 +#define CTXPOPUP_ICON_HEIGHT_INC 64 +#define CTXPOPUP_ARROW_SIZE_INC 40 24 +#define CTXPOPUP_CONTENT_WIDTH_MAX_INC 630 +#define CTXPOPUP_ITEM_PADDING_INC 35 +#define CTXPOPUP_IE_ARROW_SIZE_INC 52 +#define CTXPOPUP_IE_FONT_SIZE_INC 40 +#define CTXPOPUP_IE_ITEM_PADDING_INC 22 +#define CTXPOPUP_IE_ITEM_HEIGHT_INC 75 +#define CTXPOPUP_IE_CONTENT_WIDTH_MAX_INC 720 +#define CTXPOPUP_IE_ICON_WIDTH_INC 60 +#define CTXPOPUP_IE_ICON_HEIGHT_INC 60 +#define CTXPOPUP_TP_ARROW_SIZE_INC 30 +#define CTXPOPUP_TP_HEIGHT_INC 106 + +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/scroller/base/video/ctxpopup"; + script { + public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer; + public timer0(val) { + new v; + v = get_int(sbvis_v); + if (v) { + v = get_int(sbalways_v); + if(!v) { + emit("do-hide-vbar", ""); + set_int(sbvis_v, 0); + } + } + v = get_int(sbvis_h); + if (v) { + v = get_int(sbalways_h); + if(!v) { + emit("do-hide-hbar", ""); + set_int(sbvis_h, 0); + } + } + set_int(sbvis_timer, 0); + return 0; + } + } + images { + image: "white/common/01_scroller.png" COMP; + } + parts { + part { + name: "clipper"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + } + } + part { + name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + align: 0.5 0.5; + } + } + part { + name: "sb_vbar_clip_master"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + } + description { + state: "hidden" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { + name: "sb_vbar_clip"; + clip_to:"sb_vbar_clip_master"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel2{ to:"clipper"; relative: 1.0 1.0;} + } + description { + state: "hidden" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { + name: "sb_vbar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + visible: 0; + align: 1.0 0.0; + rel1{ to:"clipper"; relative: 1.0 0.0; } + rel2{ to:"clipper"; relative: 1.0 1.0;} + } + } + part { + name: "elm.dragable.vbar"; + clip_to: "sb_vbar_clip"; + mouse_events: 0; + scale: 1; + dragable { + x: 0 0 0; + y: 1 1 0; + confine: "sb_vbar"; + } + description { + state: "default" 0.0; + fixed: 1 1; + min: 14 32; + rel1 { + relative: 0.5 0.5; + to: "sb_vbar"; + } + rel2 { + relative: 0.5 0.5; + to: "sb_vbar"; + } + image { + normal: "white/common/01_scroller.png"; + border: 0 0 6 6; + border_scale: 1; + } + } + } + part { + name: "sb_hbar_clip_master"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + } + description { + state: "hidden" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { + name: "sb_hbar_clip"; + clip_to: "sb_hbar_clip_master"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel2{ to:"clipper"; relative: 1.0 1.0;} + } + description { + state: "hidden" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { + name: "sb_hbar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + visible: 0; + align: 0.0 1.0; + rel1 {to:"clipper"; relative: 0.0 1.0;} + rel2 {to:"clipper"; relative: 1.0 1.0;} + } + } + part { + name: "elm.dragable.hbar"; + clip_to: "sb_hbar_clip"; + mouse_events: 0; + scale: 1; + dragable { + x: 1 1 0; + y: 0 0 0; + confine: "sb_hbar"; + } + description { + state: "default" 0.0; + fixed: 1 1; + min: 32 12; + rel1 {relative: 0.5 0.5; to: "sb_hbar";} + rel2 {relative: 0.5 0.5; to: "sb_hbar";} + image { + normal: "white/common/01_scroller.png"; + border: 6 6 0 0; + border_scale: 1; + } + } + } + } + programs { + program { + name: "load"; + signal: "load"; + source: ""; + script { + set_state(PART:"sb_vbar_clip", "hidden", 0.0); + set_state(PART:"sb_hbar_clip", "hidden", 0.0); + set_int(sbvis_v, 0); + set_int(sbvis_h, 0); + set_int(sbalways_v, 0); + set_int(sbalways_h, 0); + set_int(sbvis_timer, 0); + } + } + program { + name: "vbar_show"; + signal: "elm,action,show,vbar"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "sb_vbar_clip_master"; + } + program { + name: "vbar_hide"; + signal: "elm,action,hide,vbar"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "sb_vbar_clip_master"; + } + program { + name: "vbar_show_always"; + signal: "elm,action,show_always,vbar"; + source: "elm"; + script { + new v; + v = get_int(sbvis_v); + v |= get_int(sbalways_v); + if (!v) { + set_int(sbalways_v, 1); + emit("do-show-vbar", ""); + set_int(sbvis_v, 1); + } + } + } + program { + name: "vbar_show_notalways"; + signal: "elm,action,show_notalways,vbar"; + source: "elm"; + script { + new v; + v = get_int(sbalways_v); + if (v) { + set_int(sbalways_v, 0); + v = get_int(sbvis_v); + if (!v) { + emit("do-hide-vbar", ""); + set_int(sbvis_v, 0); + } + } + } + } + program { + name: "sb_vbar_show"; + signal: "do-show-vbar"; + source: ""; + action: STATE_SET "default" 0.0; + transition: LINEAR 1.0; + target: "sb_vbar_clip"; + } + program { + name: "sb_vbar_hide"; + signal: "do-hide-vbar"; + source: ""; + action: STATE_SET "hidden" 0.0; + transition: LINEAR 1.0; + target: "sb_vbar_clip"; + } + program { + name: "hbar_show"; + signal: "elm,action,show,hbar"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "sb_hbar_clip_master"; + } + program { + name: "hbar_hide"; + signal: "elm,action,hide,hbar"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "sb_hbar_clip_master"; + } + program { + name: "hbar_show_always"; + signal: "elm,action,show_always,hbar"; + source: "elm"; + script { + new v; + v = get_int(sbvis_h); + v |= get_int(sbalways_h); + if (!v) { + set_int(sbalways_h, 1); + emit("do-show-hbar", ""); + set_int(sbvis_h, 1); + } + } + } + program { + name: "hbar_show_notalways"; + signal: "elm,action,show_notalways,hbar"; + source: "elm"; + script { + new v; + v = get_int(sbalways_h); + if (v) { + set_int(sbalways_h, 0); + v = get_int(sbvis_h); + if (!v) { + emit("do-hide-hbar", ""); + set_int(sbvis_h, 0); + } + } + } + } + program { + name: "sb_hbar_show"; + signal: "do-show-hbar"; + source: ""; + action: STATE_SET "default" 0.0; + transition: LINEAR 1.0; + target: "sb_hbar_clip"; + } + program { + name: "sb_hbar_hide"; + signal: "do-hide-hbar"; + source: ""; + action: STATE_SET "hidden" 0.0; + transition: LINEAR 1.0; + target: "sb_hbar_clip"; + } + program { + name: "scroll"; + signal: "elm,action,scroll"; + source: "elm"; + action: STATE_SET "default" 0.0; + script { + new v; + v = get_int(sbvis_v); + v |= get_int(sbalways_v); + if (!v) { + emit("do-show-vbar", ""); + set_int(sbvis_v, 1); + } + v = get_int(sbvis_h); + v |= get_int(sbalways_h); + if(!v) { + emit("do-show-hbar", ""); + set_int(sbvis_h, 1); + } + v = get_int(sbvis_timer); + if (v > 0) cancel_timer(v); + v = timer(2.0, "timer0", 0); + set_int(sbvis_timer, v); + } + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/bg/video/pass_event"; + alias: "elm/ctxpopup/bg/video/extended/entry/pass_event"; + alias: "elm/ctxpopup/bg/video/extended/entry"; + alias: "elm/ctxpopup/bg/video/timepicker"; + parts { + part { + name: "bg"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "visible" 0.0; + visible: 0; + } + } + } + programs { + program { + name: "show"; + signal: "elm,state,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "bg"; + } + program { + name: "hide"; + signal: "elm,state,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/bg/video/default"; + parts { + part { + name: "bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "visible" 0.0; + color: 0 0 0 0; + visible: 1; + } + } + } + programs { + program { + name: "clicked_event"; + signal: "mouse,clicked,1"; + source: "bg"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { + name: "show"; + signal: "elm,state,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "bg"; + } + program { + name: "hide"; + signal: "elm,state,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + } + } + } + + group { + name: "elm/ctxpopup/base/video/default"; + images { + image: CTXPOPUP_BUBBLE_BG_IMAGE COMP; + image: CTXPOPUP_BG_IMAGE COMP; + } + parts { + part { + name:"frame_shadow_left_top_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + min: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING; + max: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING; + rel2 { relative: 0 0; } + align: 1 1; + fixed: 1 1; + visible: 0; + } + } + part { + name:"frame_shadow_right_bottom_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + min: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING; + max: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING; + rel1{relative: 1 1;} + align: 0 0; + fixed: 1 1; + visible: 0; + } + } + + part { + name: "frame_shadow"; + type: IMAGE; + scale: 1; + mouse_events: 0; + clip_to: "ctxpopup_clip"; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.2 0.2; + to:"frame_shadow_left_top_padding"; + } + rel2 { + relative: 0.8 0.8; + to:"frame_shadow_right_bottom_padding"; + } + image { + normal: CTXPOPUP_BUBBLE_BG_IMAGE; + border: CTXPOPUP_BUBBLE_BG_IMAGE_BORDER; + border_scale: 1; + } + } + } + + part { name: "arrow_area_left"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + description { state: "default" 0.0; + visible: 0; + min: 40 0; + fixed: 1 1; + align: 1 0.5; + rel1 { + relative: 0 1; + to_y: "ctxpopup_frame_left_top"; + } + rel2 { + relative:0 0; + to:"ctxpopup_frame_left_bottom"; + } + } + } + part { name: "arrow_area_right"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + description { state: "default" 0.0; + visible: 0; + min: 40 0; + fixed: 1 1; + align: 0 0.5; + rel1 { + relative: 1 1; + to:"ctxpopup_frame_right_top"; + } + rel2 { + relative: 1 0; + to_y: "ctxpopup_frame_right_bottom"; + } + } + } + part { name: "arrow_area_up"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + description { state: "default" 0.0; + visible: 0; + min: 0 40; + fixed: 1 1; + align: 0.5 1; + rel1 { + relative: 1 0; + to_x: "ctxpopup_frame_left_top"; + } + rel2 { + relative: 0 0; + to:"ctxpopup_frame_right_top"; + } + } + } + part { name: "arrow_area_down"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + description { state: "default" 0.0; + visible: 0; + min: 0 40; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 1 1; + to:"ctxpopup_frame_left_bottom"; + } + rel2 { + relative: 0 1; + to_x: "ctxpopup_frame_right_bottom"; + } + } + } + part { name: "elm.swallow.arrow_up"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + dragable { + x: 1 1 0; + y: 1 1 0; + confine: "arrow_area_up"; + } + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + visible: 1; + } + } + part { name: "elm.swallow.arrow_down"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + dragable { + x: 1 1 0; + y: 1 1 0; + confine: "arrow_area_down"; + } + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + visible: 1; + } + } + part { name: "elm.swallow.arrow_left"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + dragable { + x: 1 1 0; + y: 1 1 0; + confine: "arrow_area_left"; + } + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + visible: 1; + } + } + part { name: "elm.swallow.arrow_right"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + dragable { + x: 1 1 0; + y: 1 1 0; + confine: "arrow_area_right"; + } + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + visible: 1; + } + } + + part { + name: "ctxpopup_frame_left_top"; + type: RECT; + scale: 1; + description { + visible: 0; + align: 0 0; + min: CTXPOPUP_FRAME_CORNER_SIZE; + max: CTXPOPUP_FRAME_CORNER_SIZE; + } + } + + part { + name: "ctxpopup_frame_right_top"; + type: RECT; + scale: 1; + description { + visible: 0; + align: 1 0; + min: CTXPOPUP_FRAME_CORNER_SIZE; + max: CTXPOPUP_FRAME_CORNER_SIZE; + } + } + + part { + name: "ctxpopup_frame_left_bottom"; + type: RECT; + scale: 1; + description { + visible: 0; + align: 0 1; + min: CTXPOPUP_FRAME_CORNER_SIZE; + max: CTXPOPUP_FRAME_CORNER_SIZE; + } + } + + part { + name: "ctxpopup_frame_right_bottom"; + type: RECT; + scale: 1; + description { + visible: 0; + align: 1 1; + min: CTXPOPUP_FRAME_CORNER_SIZE; + max: CTXPOPUP_FRAME_CORNER_SIZE; + } + } + part { + name:"list_shadow_right_bottom_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + min: CTXPOPUP_LIST_SHADOW_PADDING CTXPOPUP_LIST_SHADOW_PADDING; + max: CTXPOPUP_LIST_SHADOW_PADDING CTXPOPUP_LIST_SHADOW_PADDING; + align: 0 0; + fixed: 1 1; + visible: 0; + rel1 {to:"elm.swallow.content"; relative: 1 1;} + } + } + part { + name:"content_left_top_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING; + max: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING; + align: 0 0; + fixed: 1 1; + visible: 0; + } + } + part { + name:"content_right_bottom_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + min: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING; + max: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING; + rel1 { relative: 1 1;} + rel2 { relative: 1 1;} + align: 1 1; + fixed: 1 1; + visible: 0; + } + } + + + part { + name: "frame_bg"; + type: IMAGE; + scale: 1; + mouse_events: 0; + clip_to: "ctxpopup_clip"; + description { + state: "default" 0.0; + visible: 1; + rel1 {to:"ctxpopup_frame_left_top";} + rel2 {to:"ctxpopup_frame_right_bottom";} + image { + normal: CTXPOPUP_BG_IMAGE; + border: CTXPOPUP_BG_IMAGE_BORDER; + border_scale: 1; + } + } + } + part { + name: "elm.swallow.content"; + type: SWALLOW; + clip_to: "ctxpopup_clip"; + description { + state: "default" 0.0; + align: 0 0; + rel1 {to:"ctxpopup_frame_left_top"; relative: 0.5 0.5;} + rel2 {to:"ctxpopup_frame_right_bottom"; relative: 0.5 0.5;} + } + } + part { name: "ctxpopup_clip"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + rel1 { to:"ctxpopup_frame_left_top"; relative: 0.5 0.5; } + rel2 { to:"ctxpopup_frame_right_bottom"; relative: 0.5 0.5; } + } + description { state: "show_up" 0.0; + color: 255 255 255 0; + rel1 { to:"arrow_area_down"; relative: 0 1; } + rel2 { to:"arrow_area_down"; relative: 1 1; } + } + description { state: "show_left" 0.0; + color: 255 255 255 0; + rel1 { to:"arrow_area_right"; relative: 1 0; } + rel2 { to:"arrow_area_right"; relative: 1 1; } + } + description { state: "show_right" 0.0; + color: 255 255 255 0; + rel1 { to:"arrow_area_left"; relative: 0 0; } + rel2 { to:"arrow_area_left"; relative: 0 1; } + } + description { state: "show_down" 0.0; + color: 255 255 255 0; + rel1 { to:"arrow_area_up"; relative: 0 0; } + rel2 { to:"arrow_area_up"; relative: 1 0; } + } + description { state: "hide_up" 0.0; + color: 255 255 255 255; + rel1 { to:"arrow_area_down"; relative: 0 1; } + rel2 { to:"arrow_area_down"; relative: 1 1; } + } + description { state: "hide_left" 0.0; + color: 255 255 255 255; + rel1 { to:"arrow_area_right"; relative: 1 0; } + rel2 { to:"arrow_area_right"; relative: 1 1; } + } + description { state: "hide_right" 0.0; + color: 255 255 255 255; + rel1 { to:"arrow_area_left"; relative: 0 0; } + rel2 { to:"arrow_area_left"; relative: 0 1; } + } + description { state: "hide_down" 0.0; + color: 255 255 255 255; + rel1 { to:"arrow_area_up"; relative: 0 0; } + rel2 { to:"arrow_area_up"; relative: 1 0; } + } + description { state: "visible" 0.0; + color: 255 255 255 255; + rel1 { to_x:"arrow_area_left"; to_y:"arrow_area_up"; } + rel2 { to_x:"arrow_area_right"; to_y:"arrow_area_down"; } + } + } + } + programs { + program { name: "show"; + signal: "elm,state,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "show_up"; + signal: "elm,state,show,up"; + source: "elm"; + action: STATE_SET "show_up" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "show_left"; + signal: "elm,state,show,left"; + source: "elm"; + action: STATE_SET "show_left" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "show_right"; + signal: "elm,state,show,right"; + source: "elm"; + action: STATE_SET "show_right" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "show_down"; + signal: "elm,state,show,down"; + source: "elm"; + action: STATE_SET "show_down" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "hide_up"; + signal: "elm,state,hide,up"; + source: "elm"; + action: STATE_SET "hide_up" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + after: "hide_finished"; + } + program { name: "hide_left"; + signal: "elm,state,hide,left"; + source: "elm"; + action: STATE_SET "hide_left" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + after: "hide_finished"; + } + program { name: "hide_right"; + signal: "elm,state,hide,right"; + source: "elm"; + action: STATE_SET "hide_right" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + after: "hide_finished"; + } + program { name: "hide_down"; + signal: "elm,state,hide,down"; + source: "elm"; + action: STATE_SET "hide_down" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + after: "hide_finished"; + } + program { name: "hide_finished"; + action: SIGNAL_EMIT "elm,action,hide,finished" ""; + } + } + } + +/////////////////////////////////////////////////////////////////////////////// + group { name: "elm/ctxpopup/arrow/video/default"; + images { + image: "white/common/00_popup_tail_left.png" COMP; + image: "white/common/00_popup_tail_right.png" COMP; + image: "white/common/00_popup_tail_top.png" COMP; + image: "white/common/00_popup_tail_bottom.png" COMP; + image: "white/common/T01-2_popup_arrow.png" COMP; + } + parts { + part { + name: "ctxpopup_arrow"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + visible: 0; + align: 0.5 0.5; + } + description { + state: "left" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + align: 1.0 0.5; + image { + normal: "white/common/00_popup_tail_left.png"; + } + } + description { + state: "right" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.0 0.5; + image { + normal: "white/common/00_popup_tail_right.png"; + } + } + description { + state: "top" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 1.0; + image { + normal: "white/common/T01-2_popup_arrow.png"; + } + } + description { + state: "bottom" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + image { + normal: "white/common/00_popup_tail_bottom.png"; + } + } + } + } + programs { + program { + name: "enable_left_arrow"; + signal: "elm,state,left"; + source: "elm"; + action: STATE_SET "left" 0.0; + target: "ctxpopup_arrow"; + } + program { + name: "enable_right_arrow"; + signal: "elm,state,right"; + source: "elm"; + action: STATE_SET "right" 0.0; + target: "ctxpopup_arrow"; + } + program { + name: "enable_top_arrow"; + signal: "elm,state,top"; + source: "elm"; + action: STATE_SET "top" 0.0; + target: "ctxpopup_arrow"; + } + program { + name: "enable_bottom_arrow"; + signal: "elm,state,bottom"; + source: "elm"; + action: STATE_SET "bottom" 0.0; + target: "ctxpopup_arrow"; + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/text_style_item/video/default"; + parts { + part { + name: "event_blocker"; + mouse_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } + part { + name: "bg"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + color: CTXPOPUP_BG_COLOR_INC; + visible: 0; + } + description { + state: "clicked" 0.0; + color: CTXPOPUP_BG_PRESS_COLOR_INC; + visible: 1; + } + } + part { + name: "separator"; + mouse_events: 0; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 1 0; + max: 1 999999; + visible: 0; + } + description { + state: "horizontal" 0.0; + color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC; + align: 0 0.5; + min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC; + max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC; + visible: 1; + } + description { + state: "vertical" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 0 1; + max: 999999 1; + visible: 1; + } + } + part { + name: "left_padding"; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 30 CTXPOPUP_ITEM_HEIGHT_INC; + max: 30 CTXPOPUP_ITEM_HEIGHT_INC; + align: 0 0.5; + fixed: 1 1; + visible: 0; + } + } + part { + name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 1 CTXPOPUP_ITEM_HEIGHT_INC; + max: (CTXPOPUP_CONTENT_WIDTH_MAX_INC-2*CTXPOPUP_ITEM_PADDING_INC) CTXPOPUP_ITEM_HEIGHT_INC; + fixed: 0 1; + align: 0.5 0.5; + rel1 {relative: 1.0 0.0; to: "left_padding";} + rel2 {relative: 0.0 1.0; to: "right_padding";} + color: CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC; + text { + font: "SLP:style=Regular"; + size: CTXPOPUP_ITEM_TEXT_SIZE_INC; + align: 0 0.5; + min: 1 1; + text_class: "list_item"; + } + } + description { + state: "text_horizontal" 0.0; + inherit: "default" 0.0; + text { + size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC; + align: 0.5 0.5; + min: 1 1; + } + } + description { + state: "compress" 0.0; + inherit: "default" 0.0; + max: -1 -1; + text { + min: 0 1; + } + } + description { + state: "compress.text_horizontal" 0.0; + inherit: "default" 0.0; + max: -1 -1; + text { + size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC; + align: 0.5 0.5; + min: 0 1; + } + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC; + } + description { + state: "clicked.text_horizontal" 0.0; + inherit: "default" 0.0; + color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC; + text { + size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC; + align: 0.5 0.5; + min: 0 1; + } + } + } + part { + name: "right_padding"; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 30 CTXPOPUP_ITEM_HEIGHT_INC; + max: 30 CTXPOPUP_ITEM_HEIGHT_INC; + fixed: 1 0; + align: 1.0 0.5; + } + } + part { + name: "over1"; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { + state: "default" 0.0; + } + } + part { + name: "over2"; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "disclip"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "disabled" 0.0; + visible: 1; + color: CTXPOPUP_ITEM_DISABLED_COLOR; + } + } + } + programs { + program { + name: "item_unclick"; + signal: "mouse,up,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { + name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "default"; + signal: "elm,state,default"; + source: "elm"; + script { + set_state(PART:"separator", "default", 0.0); + } + } + program { + name: "compress"; + signal: "elm,state,compress"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"separator", st, 30, vl); + if (!strcmp(st, "horizontal")) + set_state(PART:"elm.text", "compress.text_horizontal", 0.0); + else + set_state(PART:"elm.text", "compress", 0.0); + } + } + program { + name: "vertical"; + signal: "elm,state,vertical"; + source: "elm"; + script { + set_state(PART:"separator", "vertical", 0.0); + set_state(PART:"elm.text", "vertical", 0.0); + } + } + program { + name: "horizontal"; + signal: "elm,state,horizontal"; + source: "elm"; + script { + set_state(PART:"separator", "horizontal", 0.0); + set_state(PART:"elm.text", "text_horizontal", 0.0); + } + } + program { + name: "text_horizontal"; + signal: "elm,state,text_horizontal"; + source: "elm"; + script { + set_state(PART:"separator", "default", 0.0); + set_state(PART:"elm.text", "text_horizontal", 0.0); + } + } + program { + name: "item_click2"; + signal: "mouse,down,1"; + source: "over2"; + script { + new st[31]; + new Float:vl; + get_state(PART:"separator", st, 30, vl); + if (!strcmp(st, "horizontal")) + set_state(PART:"elm.text", "clicked.text_horizontal", 0.0); + else + set_state(PART:"elm.text", "clicked", 0.0); + set_state(PART:"bg", "clicked", 0.0); + } + } + program { + name: "item_unclick2"; + signal: "mouse,up,1"; + source: "over2"; + script { + new st[31]; + new Float:vl; + get_state(PART:"separator", st, 30, vl); + if (!strcmp(st, "horizontal")) + set_state(PART:"elm.text", "compress.text_horizontal", 0.0); + else + set_state(PART:"elm.text", "compress", 0.0); + set_state(PART:"bg", "default", 0.0); + } + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/icon_style_item/video/default"; + parts { + part { + name: "event_blocker"; + mouse_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } + part { + name: "bg"; + scale: 1; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + color: CTXPOPUP_BG_COLOR_INC; + visible: 0; + min: CTXPOPUP_ITEM_ICON_INC; + max: CTXPOPUP_ITEM_ICON_INC; + } + description { + state: "clicked" 0.0; + color: CTXPOPUP_BG_PRESS_COLOR_INC; + visible: 1; + } + } + part { + name: "left_top_padding"; + scale: 1; + description { + min: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC; + max: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC; + visible: 0; + align: 0 0; + fixed: 1 1; + } + } + part { + name: "separator"; + mouse_events: 0; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 1 0; + max: 1 999999; + visible: 0; + } + description { + state: "horizontal" 0.0; + color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC; + align: 0 0.5; + min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC; + max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC; + visible: 1; + } + description { + state: "vertical" 0.0; + color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: CTXPOPUP_VERTICAL_SEPARATOR_MIN_SIZE_INC; + max: CTXPOPUP_VERTICAL_SEPARATOR_MAX_SIZE_INC; + visible: 1; + } + } + part { + name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: (CTXPOPUP_ICON_WIDTH_INC - 10) (CTXPOPUP_ICON_HEIGHT_INC - 10); + max: (CTXPOPUP_ICON_WIDTH_INC - 10) (CTXPOPUP_ICON_HEIGHT_INC - 10); + align: 0.5 0.5; + aspect: 1.0 1.0; + rel1 { to: "left_top_padding"; relative: 1 1; } + rel2 { to: "right_bottom_padding"; relative: 0 0; } + } + } + part { + name: "right_bottom_padding"; + scale: 1; + description { + min: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC; + max: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC; + visible: 0; + align: 1 1; + fixed: 1 1; + } + } + part { + name: "over1"; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { + state: "default" 0.0; + } + } + part { + name: "over2"; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "disclip"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "disabled" 0.0; + visible: 1; + color: CTXPOPUP_ITEM_DISABLED_COLOR; + } + } + } + programs { + program { + name: "default"; + signal: "elm,state,default"; + source: "elm"; + script { + set_state(PART:"separator", "default", 0.0); + } + } + program { + name: "vertical"; + signal: "elm,state,vertical"; + source: "elm"; + script { + set_state(PART:"separator", "vertical", 0.0); + } + } + program { + name: "horizontal"; + signal: "elm,state,horizontal"; + source: "elm"; + script { + set_state(PART:"separator", "horizontal", 0.0); + } + } + program { + name: "item_unclick"; + signal: "mouse,up,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { + name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "item_click2"; + signal: "mouse,down,1"; + source: "over2"; + script { + set_state(PART:"bg", "clicked", 0.0); + } + } + program { + name: "item_unclick2"; + signal: "mouse,up,1"; + source: "over2"; + script { + set_state(PART:"bg", "default", 0.0); + } + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/icon_text_style_item/video/default"; + parts { + part { + name: "event_blocker"; + mouse_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "bg"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + color: CTXPOPUP_BG_COLOR_INC; + visible: 0; + } + description { + state: "clicked" 0.0; + color: CTXPOPUP_BG_PRESS_COLOR_INC; + visible: 1; + } + } + part { + name: "icon_left_padding"; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + align: 0 0; + fixed: 1 1; + visible: 0; + } + } + part { + name: "separator"; + mouse_events: 0; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 1 0; + max: 1 999999; + visible: 0; + } + description { + state: "horizontal" 0.0; + color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC; + align: 0 0.5; + min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC; + max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC; + visible: 1; + } + description { + state: "vertical" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 0 1; + max: 999999 1; + visible: 1; + } + } + part { + name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: CTXPOPUP_ICON_WIDTH_INC CTXPOPUP_ICON_HEIGHT_INC; + max: CTXPOPUP_ICON_WIDTH_INC CTXPOPUP_ICON_HEIGHT_INC; + align: 0 0.5; + aspect: 1.0 1.0; + rel1 { to:"icon_left_padding"; relative: 1 0; } + } + } + part { + name: "icon_right_padding"; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + align: 0 0.5; + fixed: 1 1; + visible: 0; + rel1 { to:"elm.swallow.icon"; relative: 1 1; } + } + } + part { + name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 1 CTXPOPUP_ITEM_HEIGHT_INC; + max: (CTXPOPUP_CONTENT_WIDTH_MAX_INC-(3*CTXPOPUP_ITEM_PADDING_INC)-CTXPOPUP_ICON_WIDTH_INC) CTXPOPUP_ITEM_HEIGHT_INC; + fixed: 0 1; + align: 0.5 0.5; + rel1 {relative: 1.0 0.0; to_x: "icon_right_padding";} + rel2 {relative: 0.0 1.0; to_x: "text_right_padding";} + color: CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC; + text { + font: "SLP:style=Roman"; + size: CTXPOPUP_ITEM_TEXT_SIZE_INC; + align: 0.0 0.5; + min: 1 1; + text_class: "list_item"; + } + } + description { + state: "compress" 0.0; + inherit: "default" 0.0; + max: -1 -1; + text { + min: 0 1; + } + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC; + } + } + part { + name: "text_right_padding"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + fixed: 1 0; + align: 1.0 0.5; + } + } + part { + name: "over1"; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { + state: "default" 0.0; + } + } + part { + name: "over2"; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "disclip"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "disabled" 0.0; + visible: 1; + color: CTXPOPUP_ITEM_DISABLED_COLOR; + } + } + } + programs { + program { + name: "item_unclick"; + signal: "mouse,up,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { + name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "default"; + signal: "elm,state,default"; + source: "elm"; + script { + set_state(PART:"separator", "default", 0.0); + } + } + program { + name: "compress"; + signal: "elm,state,compress"; + source: "elm"; + action: STATE_SET "compress" 0.0; + target: "elm.text"; + } + program { + name: "vertical"; + signal: "elm,state,vertical"; + source: "elm"; + script { + set_state(PART:"separator", "vertical", 0.0); + } + } + program { + name: "horizontal"; + signal: "elm,state,horizontal"; + source: "elm"; + script { + set_state(PART:"separator", "horizontal", 0.0); + } + } + program { + name: "item_click2"; + signal: "mouse,down,1"; + source: "over2"; + script { + set_state(PART:"elm.text", "clicked", 0.0); + set_state(PART:"bg", "clicked", 0.0); + } + } + program { + name: "item_unclick2"; + signal: "mouse,up,1"; + source: "over2"; + script { + set_state(PART:"elm.text", "compress", 0.0); + set_state(PART:"bg", "default", 0.0); + } + } + } + } + + + + diff --git a/res/edc/vp-custom-winset-style.edc b/res/edc/vp-custom-winset-style.edc new file mode 100755 index 0000000..7e12a69 --- /dev/null +++ b/res/edc/vp-custom-winset-style.edc @@ -0,0 +1,12 @@ +#include "image_res.edc" + +collections { + #include "vp-button-white.edc" + #include "vp-controlbar.edc" + #include "custom/vp-naviframe-custom.edc" + #include "vp-layout.edc" + #include "vp-check.edc" + #include "vp-progressbar-list.edc" + #include "vp-ctxpopup.edc" + #include "vp-nocontents.edc" +} diff --git a/res/edc/vp-layout.edc b/res/edc/vp-layout.edc new file mode 100755 index 0000000..dff249c --- /dev/null +++ b/res/edc/vp-layout.edc @@ -0,0 +1,377 @@ + /*************************************************/ + /* elm_layout -> video style */ + /*************************************************/ + +group { + name: "elm/layout/application/video"; + parts { + part { + name: "elm.swallow.bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "elm.swallow.indicator"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 50; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: 0 0 0 255; + visible: 1; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + fixed: 0 1; + } + } + + part { + name: "elm.swallow.pixmap.bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 255; + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "elm.swallow.pixmap"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "elm.swallow.event"; + type: SWALLOW; + mouse_events: 1; + repeat_events : 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.subtitle"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + repeat_events : 1; + description { + state: "default" 0.0; + rel1.to_y: "elm.swallow.indicator"; + rel1.relative: 0.0 1.0; + } + } + + part { + name: "elm.swallow.volume.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 813; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: 0 255 0 128; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 336; + } + } + + part { + name: "elm.swallow.volume"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 616 104; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; } + rel2 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; } + } + } + + part { + name: "elm.swallow.subtitle.sync"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.controlbar"; + type: SWALLOW; + description { + state: "default" 0.0; + visible: 0; + } + } + } /* parts */ + + programs { + program { + signal: "signal.layout.pixmap.bg.show"; + source: "*"; + script { + set_state(PART:"elm.swallow.pixmap.bg", "show", 0.0); + } + } + program { + signal: "signal.layout.pixmap.bg.hide"; + source: "*"; + script { + set_state(PART:"elm.swallow.pixmap.bg", "default", 0.0); + } + } + program { + signal: "signal.layout.indicator.show"; + source: "*"; + script { + set_state(PART:"elm.swallow.indicator", "default", 0.0); + } + } + program { + signal: "signal.layout.indicator.hide"; + source: "*"; + script { + set_state(PART:"elm.swallow.indicator", "hide", 0.0); + } + } + program { + signal: "signal.volume.potrait.mode"; + source: "*"; + script { + set_state(PART:"elm.swallow.volume.top", "default", 0.0); + } + } + program { + signal: "signal.volume.landscape.mode"; + source: "*"; + script { + set_state(PART:"elm.swallow.volume.top", "landscape", 0.0); + } + } + + } +} /* group */ + +group { + name: "elm/layout/application/video_no_indicator"; + parts { + part { + name: "elm.swallow.bg"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + color: 0 0 0 255; + } + } + part { + name: "elm.swallow.pixmap.bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 255; + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "elm.swallow.pixmap"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "elm.swallow.event"; + type: SWALLOW; + mouse_events: 1; + repeat_events : 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.subtitle"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.content"; + type: SWALLOW; + mouse_events: 1; + repeat_events : 1; + scale: 1; + description { + state: "default" 0.0; + } + } + part { + name: "elm.swallow.subtitle.sync"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.controlbar"; + type: SWALLOW; + description { + state: "default" 0.0; + visible: 0; + } + } + + part { + name: "elm.swallow.volume.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 813; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: 0 255 0 128; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 336; + } + } + + part { + name: "elm.swallow.volume"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 616 104; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; } + rel2 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; } + } + } + } /* parts */ + + programs { + program { + signal: "signal.layout.pixmap.bg.show"; + source: "*"; + script { + set_state(PART:"elm.swallow.pixmap.bg", "show", 0.0); + } + } + program { + signal: "signal.layout.pixmap.bg.hide"; + source: "*"; + script { + set_state(PART:"elm.swallow.pixmap.bg", "default", 0.0); + } + } + program { + signal: "signal.volume.potrait.mode"; + source: "*"; + script { + set_state(PART:"elm.swallow.volume.top", "default", 0.0); + } + } + program { + signal: "signal.volume.landscape.mode"; + source: "*"; + script { + set_state(PART:"elm.swallow.volume.top", "landscape", 0.0); + } + } + } +} /* group */ + + diff --git a/res/edc/vp-naviframe.edc b/res/edc/vp-naviframe.edc new file mode 100755 index 0000000..49bde21 --- /dev/null +++ b/res/edc/vp-naviframe.edc @@ -0,0 +1,4830 @@ +#include "image_res.edc" + +#define NAVIFRAME_TITLE_H_INC_PORTRATE 90 +#define NAVIFRAME_TITLE_H_INC_LANDSCAPE 72 + +#define NAVIFRAME_TITLE_H_INC 100 +#define NAVIFRAME_SEGMENT_TITLE_H_INC 136 +#define NAVIFRAME_OH_OPENED_H_INC 106 +#define NAVIFRAME_OH_CONTENT_H_INC 74 +#define NAVIFRAME_OH_PADDING_INC 16 +#define NAVIFRAME_OH_ARROW_SIZE_INC 19 12 +#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 196 +#define NAVIFRAME_PREV_BTN_W_INC 124 +#define NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 10 +#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 124 80 +#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144 +#define NAVIFRAME_TEXT_PADDING_INC 144 +#define NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 52 +#define NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 186 +#define NAVIFRAME_TITLE_SEGMENT_H_INC 74 +#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 28 +#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 50 +#define NAVIFRAME_TITLE_FONT_SIZE_INC 36 +#define NAVIFRAME_ICON_SIZE_INC 32 32 +#define NAVIFRAME_ICON_PADDING_INC 16 0 +#define NAVIFRAME_CONTROLBAR_BG_COLOR_INC 37 48 54 255 +#define NAVIFRAME_TITLE_TEXT_COLOR_INC 235 236 237 255 +#define NAVIFRAME_TITLE_BG_COLOR_INC 50 65 74 255 +#define NAVIFRAME_OH_BORDER_INC 0 0 4 0 + +#define CONTROLBAR_LARGE_HEIGHT_INC 122 +#define CONTROLBAR_SMALL_HEIGHT_INC 102 +#define CONTROLBAR_WIDTH_INC 122 + + +#define NAVIFRAME_VIEW_TRANS_TIME 0.3 + + group { name:"elm/naviframe/base/video/default"; + parts { + part { name: "base"; + description { state: "default" 0.0; + } + } + } + } + group { name:"elm/naviframe/item/video/basic/default"; + alias:"elm/naviframe/item/video/1line/default"; + images { + image: "naviframe_optionheader.png" COMP; + image: "naviframe_optionheader_arrow.png" COMP; + image: "T01_title_bg.png" COMP; + image: "T01_title_bg_h.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "title_bg"; + type: IMAGE; // ORIGINAL - type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC_PORTRATE; // ORIGINAL - min: 1 NAVIFRAME_TITLE_H_INC + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + image { normal: "T01_title_bg.png"; } // ORIGINAL - color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC_LANDSCAPE; + image { normal: "T01_title_bg_h.png"; } + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "naviframe_optionheader.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader_bottom_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_before_more_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_more_btn"; } + rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } + rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.025; to: "title_more_btn"; } + rel2 { relative: 1.0 1.025; to: "title_more_btn"; } + image.normal: "naviframe_optionheader_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2.to: "controlbar_bg"; + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + if (get_int(more_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,elm.swallow.icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,elm.swallow.icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + program { + name: "title_portrate_mode"; + signal: "signal.naviframe.portrate.mode"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "title_bg"; + } + program { + name: "title_landscape_mode"; + signal: "signal.naviframe.landscape.mode"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "title_bg"; + } + } + } + + + + + group { name:"elm/naviframe/item/basic2/default"; + alias:"elm/naviframe/item/video/2line/default"; + images { + image: "naviframe_optionheader.png" COMP; + image: "naviframe_optionheader_arrow.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "naviframe_optionheader.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_DOUBLE_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader.mid.padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader2"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader.mid.padding";} + rel2 { relative: 1.0 1.0; to: "optionheader.mid.padding";} + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader.bottom.padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader2"; } + rel2 { relative: 1.0 1.0; to: "optionheader2"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_before_more_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_more_btn"; } + rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } + rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 0; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.025; to: "title_more_btn"; } + rel2 { relative: 1.0 1.025; to: "title_more_btn"; } + image.normal: "naviframe_optionheader_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + if (get_int(more_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,elm.swallow.icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,elm.swallow.icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name: "elm/naviframe/item/segment/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_SEGMENT_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "title_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + min: 0 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC; + fixed: 1 1; + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0; + rel1.to: "padding_before_left_btn"; + rel1.relative: 1 0; + rel2.to: "padding_after_right_btn"; + rel2.relative: 0 1; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0; + rel1.relative: 1.0 1.0; + rel1.to_x: "padding_before_left_btn"; + rel1.to_y: "elm.text.title"; + rel2.relative: 1.0 1.0; + rel2.to_x: "padding_before_left_btn"; + rel2.to_y: "elm.text.title"; + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.0; + fixed: 1 1; + rel1.relative: 0.0 1.0; + rel1.to_x: "padding_after_right_btn"; + rel1.to_y: "elm.text.title"; + rel2.relative: 0.0 1.0; + rel2.to_x: "padding_after_right_btn"; + rel2.to_y: "elm.text.title"; + } + } + part { name: "segment2"; + type: "SWALLOW"; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC; + fixed: 0 1; + align: 0.5 0; + rel1.to_y: "elm.text.title"; + rel1.to_x: "title_bg"; + rel1.relative: 0.28 1; + rel2.to_y: "elm.text.title"; + rel2.to_x: "title_bg"; + rel2.relative: 0.72 1; + } + } + part { name: "segment3"; + type: "SWALLOW"; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC; + fixed: 0 1; + align: 0.5 0; + rel1.to_y: "elm.text.title"; + rel1.relative: 0.2 1; + rel1.to_x: "title_bg"; + rel2.to_y: "elm.text.title"; + rel2.to_x: "title_bg"; + rel2.relative: 0.8 1; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "title_bg"; + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name: "elm/naviframe/item/tabbar/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel1.to: "base"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name:"elm/naviframe/item/basic/instant/default"; + alias:"elm/naviframe/item/video/1line/instant/default"; + alias:"elm/naviframe/item/video/instant/default"; + images { + image: "naviframe_optionheader.png" COMP; + image: "naviframe_optionheader_arrow.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + } + parts { + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "naviframe_optionheader.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader_bottom_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_before_more_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_more_btn"; } + rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } + rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.025; to: "title_more_btn"; } + rel2 { relative: 1.0 1.025; to: "title_more_btn"; } + image.normal: "naviframe_optionheader_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,tltle_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + if (get_int(more_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,elm.swallow.icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,elm.swallow.icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name:"elm/naviframe/item/basic2/instant/default"; + alias:"elm/naviframe/item/video/2line/instant/default"; + alias:"elm/naviframe/item/video/instant2/default"; + images { + image: "naviframe_optionheader.png" COMP; + image: "naviframe_optionheader_arrow.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + } + parts { + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "naviframe_optionheader.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_DOUBLE_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader.mid.padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader2"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader.mid.padding";} + rel2 { relative: 1.0 1.0; to: "optionheader.mid.padding";} + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader.bottom.padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader2"; } + rel2 { relative: 1.0 1.0; to: "optionheader2"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_before_more_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_more_btn"; } + rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } + rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 0; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.025; to: "title_more_btn"; } + rel2 { relative: 1.0 1.025; to: "title_more_btn"; } + image.normal: "naviframe_optionheader_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + if (get_int(more_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,elm.swallow.icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,elm.swallow.icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name: "elm/naviframe/item/segment/instant/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_SEGMENT_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_y: "title_bg"; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + min: 0 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC; + fixed: 1 1; + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0; + rel1.to: "padding_before_left_btn"; + rel1.relative: 1 0; + rel2.to: "padding_after_right_btn"; + rel2.relative: 0 1; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0; + rel1.relative: 1.0 1.0; + rel1.to_x: "padding_before_left_btn"; + rel1.to_y: "elm.text.title"; + rel2.relative: 1.0 1.0; + rel2.to_x: "padding_before_left_btn"; + rel2.to_y: "elm.text.title"; + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.0; + fixed: 1 1; + rel1.relative: 0.0 1.0; + rel1.to_x: "padding_after_right_btn"; + rel1.to_y: "elm.text.title"; + rel2.relative: 0.0 1.0; + rel2.to_x: "padding_after_right_btn"; + rel2.to_y: "elm.text.title"; + } + } + part { name: "segment2"; + type: "SWALLOW"; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC; + fixed: 0 1; + align: 0.5 0; + rel1.to_y: "elm.text.title"; + rel1.relative: 0.28 1; + rel2.to_y: "elm.text.title"; + rel2.relative: 0.72 1; + } + } + part { name: "segment3"; + type: "SWALLOW"; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC; + fixed: 0 1; + align: 0.5 0; + rel1.to_y: "elm.text.title"; + rel1.relative: 0.2 1; + rel2.to_y: "elm.text.title"; + rel2.relative: 0.8 1; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "title_clip"; + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_clip"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name: "elm/naviframe/item/tabbar/instant/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bgp_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } diff --git a/res/edc/vp-naviframe_white.edc b/res/edc/vp-naviframe_white.edc new file mode 100755 index 0000000..059d987 --- /dev/null +++ b/res/edc/vp-naviframe_white.edc @@ -0,0 +1,853 @@ +#define NAVIFRAME_TITLE_H_INC 108 +#define NAVIFRAME_SEGMENT_TITLE_H_INC 126 +#define NAVIFRAME_OH_OPENED_H_INC 114 +#define NAVIFRAME_OH_CONTENT_H_INC 72 +#define NAVIFRAME_OH_PADDING_INC 16 +#define NAVIFRAME_OH_SHADOW_INC 10 +#define NAVIFRAME_OH_ARROW_SIZE_INC 28 24 +#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 202 +#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 120 72 +#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144 +#define NAVIFRAME_TITLE_SEGMENT_H_INC 62 +#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 38 +#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 54 +#define NAVIFRAME_TITLE_FONT_SIZE_INC 52 +#define NAVIFRAME_ICON_SIZE_INC 32 32 +#define NAVIFRAME_PADDING_INC 16 0 +#define NAVIFRAME_ICON_PADDING_INC 64 0 +#define NAVIFRAME_TITLE_TEXT_COLOR_INC 249 249 249 255 +#define NAVIFRAME_SUBTITLE_TEXT_COLOR_INC 249 249 249 255 +#define NAVIFRAME_OH_BORDER_INC 1 1 5 1 +#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 200 + +#define NAVIFRAME_VIEW_TRANS_TIME 0.3 + +#define CONTROLBAR_LARGE_HEIGHT_INC 122 +#define CONTROLBAR_SMALL_HEIGHT_INC 114 +#define CONTROLBAR_WIDTH_INC 122 + + +group { + name:"elm/naviframe/base/video/default"; + parts { + part { + name: "base"; + description { + state: "default" 0.0; + } + } + } +} + +group { + name:"elm/naviframe/item/video/basic/default"; + alias:"elm/naviframe/item/video/1line/default"; + images { + image: "white/common/00_winset_control_top_bg.png" COMP; + image: "white/common/00_winset_control_top_arrow.png" COMP; + image: "white/common/00_winset_title_line.png" COMP; + image: "white/common/00_winset_control_toolbar_bg.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { + name: "base"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { + state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { + name: "title_bg"; + scale: 1; + type: RECT; + description { + state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + visible: 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { + name: "title_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { + name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { + normal: "white/common/00_winset_control_top_bg.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_H_INC; + visible: 1; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { + name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { + name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { + name: "optionheader_bottom_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "optionheader_shadow"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_OH_SHADOW_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_bottom_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_bottom_padding"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { + name: "content_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { + name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { + state: "default" 0.0; + min: NAVIFRAME_PADDING_INC; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { + state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_ICON_PADDING_INC; + } + } + part { + name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + min: NAVIFRAME_PADDING_INC; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "title_more_btn"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "title_more_btn"; to_y: "title_bg"; } + visible: 0; + } + } + part { + name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + text_class: "slp_medium"; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.0 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + } + part { + name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { + state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "elm.text.title"; } + rel2 { relative: 0.0 1.0; to: "elm.text.title"; } + fixed: 1 0; + min: NAVIFRAME_PADDING_INC; + visible: 0; + } + } + part { + name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { + name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { + state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { + name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + } + } + part { + name: "left_btn_separator"; + type: IMAGE; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + min: 2 48; + max: 2 48; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + image.normal: "white/common/00_winset_title_line.png"; + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + } + } + part { + name: "right_btn_separator"; + type: IMAGE; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + min: 2 48; + max: 2 48; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + image.normal: "white/common/00_winset_title_line.png"; + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + } + } + part { + name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.1; to: "title_more_btn"; } + rel2 { relative: 1.0 1.2; to: "title_more_btn"; } + image.normal: "white/common/00_winset_control_top_arrow.png"; + color: 255 255 255 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { + name: "controlbar_bg"; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + image.normal: "white/common/00_winset_control_toolbar_bg.png"; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { + name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2.to: "controlbar_bg"; + } + } + part { + name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { + name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { + state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { + name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { + state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { + name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { + name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { + name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { + name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { + name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { + name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { + name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { + name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { + name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { + name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { + name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { + name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { + name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { + name: "icon_show"; + signal: "elm,state,icon,show"; + source: "elm"; + action: STATE_SET "icon" 0.0; + target: "padding_center_text1"; + } + program { + name: "icon_hide"; + signal: "elm,state,icon,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "padding_center_text1"; + } + program { + name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "left_btn_separator"; + } + program { + name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "left_btn_separator"; + } + program { + name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "right_btn_separator"; + } + program { + name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "right_btn_separator"; + } + program { + name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { + name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { + name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { + name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { + name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { + name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { + name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { + name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { + name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { + name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { + name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { + name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { + name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { + name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { + name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { + name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { + name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { + name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { + name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } /* programs */ +} /* group */ + + diff --git a/res/edc/vp-nocontents.edc b/res/edc/vp-nocontents.edc new file mode 100755 index 0000000..903694a --- /dev/null +++ b/res/edc/vp-nocontents.edc @@ -0,0 +1,72 @@ +#define NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC 32 +#define NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC 173 170 165 255 + + group { + name: "elm/layout/nocontents/video"; + styles{ + style { name: "nocontent_style"; + base: "font=SLP:style=Roman text_class=slp font_size="NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC" align=center color=#ffffff wrap=word"; + tag: "br" "\n"; + tag: "hilight" "+ font=SLP:style=Bold text_class=slp"; + tag: "b" "+ font=SLP:style=Bold text_class=slp"; + tag: "tab" "\t"; + } + } + images { + image: "T01_Nocontents_multimedia.png" COMP; + } + parts { + part { name: "bg"; + scale: 1; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 255 255 255; + } + } + part { name: "nocontents.image"; + description { state: "default" 0.0; + visible: 1; + align: 0.5 0.0; + rel1 { relative: 203/720 296/1016; to: "bg";} + rel2 { relative: (203+314)/720 (296+310)/1016; to: "bg";} + image { + normal: "T01_Nocontents_multimedia.png"; + border: 1 1 1 1; + border_scale: 1; + } + aspect: 1.0 1.0; + aspect_preference: BOTH; + } + } + part { name: "middle.padding"; + scale: 1; + type: RECT; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { relative: 0.0 1.0; to_y: "nocontents.image";} + rel2 { relative: 1.0 (296+310+54)/1016; to: "bg";} + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + description { state: "default" 0.0; + fixed: 0 1; + align: 0.5 0.0; + visible: 1; + rel1 { relative: 0.0 1.0; to_x: "bg"; to_y: "middle.padding";} + rel2 { relative: 1.0 1.0; to: "bg";} + color: NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC; + text { + style: "nocontent_style"; + align: 0.5 0.5; + min: 0 0; + max: 0 1; + } + } + } + } + } diff --git a/res/edc/vp-progressbar-list.edc b/res/edc/vp-progressbar-list.edc new file mode 100755 index 0000000..b9c9041 --- /dev/null +++ b/res/edc/vp-progressbar-list.edc @@ -0,0 +1,584 @@ +#define PROGRESSBAR_TITLE_FONT_SIZE_INC 28 +#define PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC 20 + +#define PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC 0 0 0 255 +#define PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC 224 224 224 255 +#define PROGRESSBAR_LIST_PROCESS_WIDTH_INC 66 +#define PROGRESSBAR_LIST_PROCESS_HEIGHT_INC 66 +#define PROGRESSBAR_LIST_PROCESS_SMALL_INC 35 +#define PROGRESSBAR_LIST_PROCESS_SMALL_IMAGE "32x32" +#define PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC 8 + +#define GALLERY_EDC_IMAGE_LIST_PROGRESS_BG "00_winset_list_progress_bg.png" +#define GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR "T01_video_list_progress_bar.png" + + group { name: "elm/progressbar/horizontal/video/list_progress"; + images { + image: GALLERY_EDC_IMAGE_LIST_PROGRESS_BG COMP; + image: GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR COMP; + } + parts { + part { name: "elm.padding.left"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + } + color: 0 0 0 0; + align: 0.0 0.0; + } + } + part { name: "elm.padding.right"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + } + color: 0 0 0 0; + align: 1.0 0.0; + } + } + part { name: "elm.background.progressbar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to_x: "elm.padding.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to_x: "elm.padding.right"; + relative: 0.0 1.0; + offset: 0 0; + } + } + } + part { name: "elm.swallow.bar"; + mouse_events: 0; + scale: 1; + type: SWALLOW; + description { + min: 1 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC; + max: 99999 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC; + state: "default" 0.0; + rel1 { + to: "elm.background.progressbar"; + relative: 0.0 0.0; + } + rel2 { + to: "elm.background.progressbar"; + relative: 1.0 1.0; + } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { + offset: 0 0; + to_y: "elm.background.progressbar"; + } + rel2 { + offset: 0 -1; + relative: 0.0 1.0; + to_y: "elm.background.progressbar"; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + rel2.offset: 4 -1; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + fixed: 1 1; + align: 0.0 0.5; + rel1.to_x: "elm.swallow.content"; + rel1.relative: 1.0 0.0; + rel2.to_x: "elm.swallow.content"; + rel2.relative: 1.0 1.0; + color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC; + min: 0 0; + align: 0.0 0.5; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 0; + text.min: 1 1; + } + } + part { name: "background"; + mouse_events: 0; + scale: 1; + clip_to: "elm.background.progressbar"; + description { + state: "default" 0.0; + rel1 { + to: "elm.swallow.bar"; + relative: 0.0 0.0; + } + rel2 { + to: "elm.swallow.bar"; + relative: 1.0 1.0; + } + image { + normal: GALLERY_EDC_IMAGE_LIST_PROGRESS_BG; + border: 0 0 1 1; + } + } + } + part { name: "elm.text.status"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + rel1 { + to: "background"; + relative: 0.5 0.5; + } + rel2 { + to: "background"; + relative: 0.5 0.5; + } + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC; + min: 0 0; + align: 0.5 0.0; + } + color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 0; + text.min: 1 1; + } + } + part { name: "elm.progress.progressbar"; + mouse_events: 0; + scale: 1; + clip_to: "elm.background.progressbar"; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 1; + rel1 { + to: "elm.swallow.bar"; + relative: 0.0 0.0; + } + rel2 { + to_y: "elm.swallow.bar"; + to_x: "elm.cur.progressbar"; + offset: -1 -1; + } + image { + normal: GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR; + border: 0 0 1 1; + } + } + description { + state: "invert" 0.0; + inherit: "default" 0.0; + rel1 { + to_y: "elm.swallow.bar"; + to_x: "elm.cur.progressbar"; + } + rel2 { + to: "elm.swallow.bar"; + relative: 1.0 1.0; + } + } + description { + state: "state_begin" 0.0; + inherit: "default" 0.0; + rel1 { + to: "elm.swallow.bar"; + relative: 0.0 0.0; + } + rel2 { + to: "elm.swallow.bar"; + relative: 0.1 1.0; + } + } + description { + state: "state_end" 0.0; + inherit: "default" 0.0; + rel1 { + to: "elm.swallow.bar"; + relative: 0.9 0.0; + } + rel2 { + to: "elm.swallow.bar"; + relative: 1.0 1.0; + } + } + } + part { name: "text-bar"; + type: TEXT; + mouse_events: 0; + scale: 1; + clip_to: "progress-rect"; + //effect: SOFT_SHADOW; + scale: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + fixed: 1 1; + visible: 0; + rel1.to: "elm.text.status"; + rel1.offset: -1 -1; + rel2.to: "elm.text.status"; + text { + text_source: "elm.text.status"; + font: "SLP:style=Medium"; + text_class: "slp"; + size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC; + min: 0 0; + align: 0.0 0.0; + } + color: PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 0; + text.min: 1 1; + } + } + part { name: "elm.cur.progressbar"; + mouse_events: 0; + scale: 1; + dragable { + confine: "background"; + x: 1 1 1; + y: 0 0 0; + } + description { state: "default" 0.0; + min: 0 28; + fixed: 1 1; + visible: 0; + rel1 { + to: "background"; + relative: 0 0; + } + rel2.to: "background"; + } + } + part { name: "progress-rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1.to: "elm.progress.progressbar"; + rel2.to: "elm.progress.progressbar"; + } + } + } + programs { + program { name: "label_show"; + signal: "elm,state,text,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + program { name: "label_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "units_show"; + signal: "elm,state,units,visible"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "text-bar"; + target: "elm.text.status"; + } + program { name: "units_hide"; + signal: "elm,state,units,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "text-bar"; + target: "elm.text.status"; + } + program { name: "slide_to_end"; + action: STATE_SET "state_end" 0.0; + transition: LINEAR 0.5; + target: "elm.progress.progressbar"; + after: "slide_to_begin"; + } + program { name: "slide_to_begin"; + signal: "elm,state,slide,begin"; + action: STATE_SET "state_begin" 0.0; + target: "elm.progress.progressbar"; + transition: LINEAR 0.5; + after: "slide_to_end"; + } + program { name: "start_pulse"; + signal: "elm,state,pulse,start"; + source: "elm"; + // after: "slide_to_end"; + } + program { name: "stop_pulse"; + signal: "elm,state,pulse,stop"; + source: "elm"; + action: ACTION_STOP; + target: "slide_to_begin"; + target: "slide_to_end"; + target: "start_pulse"; + //after: "state_pulse"; + } + program { name: "state_pulse"; + signal: "elm,state,pulse"; + source: "elm"; + action: STATE_SET "state_begin" 0.0; + target: "elm.progress.progressbar"; + after: "units_hide"; + } + program { name: "state_fraction"; + signal: "elm,state,fraction"; + source: "elm"; + action: ACTION_STOP; + target: "slide_to_begin"; + target: "slide_to_end"; + target: "start_pulse"; + action: STATE_SET "default" 0.0; + target: "elm.progress.progressbar"; + } + program { name: "set_invert_on"; + signal: "elm,state,inverted,on"; + source: "elm"; + action: STATE_SET "invert" 0.0; + target: "elm.progress.progressbar"; + } + program { name: "set_invert_off"; + signal: "elm,state,inverted,off"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.progress.progressbar"; + } + } + } + + +/* +#define PROGRESS_BG_DESC( param_num ) \ + description { state: "pulse" 0.#param_num; \ + inherit: "default" 0.0; \ + image { \ + normal: GALLERY_EDC_IMAGE_LIST_PROCESS_##param_num; \ + } \ + } + +#define PROGRESSING_DELAY 0.03 + + group { name: "elm/progressbar/horizontal/gallery/list_process"; + images { + image: GALLERY_EDC_IMAGE_LIST_PROCESS_01 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_02 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_03 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_04 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_05 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_06 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_07 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_08 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_09 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_10 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_11 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_12 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_13 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_14 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_15 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_16 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_17 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_18 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_19 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_20 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_21 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_22 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_23 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_24 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_25 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_26 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_27 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_28 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_29 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_30 COMP; + } + parts { + part { name: "elm.background.progressbar"; + mouse_events: 0; + scale: 1; + type: RECT; + description { + state: "default" 0.0; + } + } + part { name: "elm.swallow.bar"; + mouse_events: 0; + scale: 1; + type: SWALLOW; + description { state: "default" 0.0; + min: 0 0; + max: 0 0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 0 0; + visible: 0; + } + } + part { name: "background"; + mouse_events: 0; + scale: 1; + clip_to: "elm.background.progressbar"; + description { + state: "default" 0.0; + min: PROGRESSBAR_LIST_PROCESS_WIDTH_INC PROGRESSBAR_LIST_PROCESS_HEIGHT_INC; + max: PROGRESSBAR_LIST_PROCESS_WIDTH_INC PROGRESSBAR_LIST_PROCESS_HEIGHT_INC; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: BOTH; + image { + normal: GALLERY_EDC_IMAGE_LIST_PROCESS_01; + } + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + image { + normal: GALLERY_EDC_IMAGE_LIST_PROCESS_01; + } + } + PROGRESS_BG_DESC( 01 ) + PROGRESS_BG_DESC( 02 ) + PROGRESS_BG_DESC( 03 ) + PROGRESS_BG_DESC( 04 ) + PROGRESS_BG_DESC( 05 ) + PROGRESS_BG_DESC( 06 ) + PROGRESS_BG_DESC( 07 ) + PROGRESS_BG_DESC( 08 ) + PROGRESS_BG_DESC( 09 ) + PROGRESS_BG_DESC( 10 ) + PROGRESS_BG_DESC( 11 ) + PROGRESS_BG_DESC( 12 ) + PROGRESS_BG_DESC( 13 ) + PROGRESS_BG_DESC( 14 ) + PROGRESS_BG_DESC( 15 ) + PROGRESS_BG_DESC( 16 ) + PROGRESS_BG_DESC( 17 ) + PROGRESS_BG_DESC( 18 ) + PROGRESS_BG_DESC( 19 ) + PROGRESS_BG_DESC( 20 ) + PROGRESS_BG_DESC( 21 ) + PROGRESS_BG_DESC( 22 ) + PROGRESS_BG_DESC( 23 ) + PROGRESS_BG_DESC( 24 ) + PROGRESS_BG_DESC( 25 ) + PROGRESS_BG_DESC( 26 ) + PROGRESS_BG_DESC( 27 ) + PROGRESS_BG_DESC( 28 ) + PROGRESS_BG_DESC( 29 ) + PROGRESS_BG_DESC( 30 ) + } + } + script { + public pulse_state; + } + programs { + program { name: "continue_pulse"; + script { + new Float:state; + state = get_float(pulse_state); + set_state(PART:"background", "pulse", state); + state += 0.01; + if( state > 0.30 ) + state = 0.01; + set_float(pulse_state, state); + } + after: "delay"; + } + program { name: "delay"; + action: STATE_SET "pulse" 0.10; + target: "background"; + in: PROGRESSING_DELAY 0.0; + after: "continue_pulse"; + } + program { name: "start_pulse"; + signal: "elm,state,pulse,start"; + source: "elm"; + script { + set_float(pulse_state, 0.0); + } + after: "continue_pulse"; + } + program { name: "stop_pulse"; + signal: "elm,state,pulse,stop"; + source: "elm"; + action: ACTION_STOP; + target: "continue_pulse"; + target: "delay"; + target: "start_pulse"; + after: "init_pulse"; + } + program { name: "init_pulse"; + action: STATE_SET "default" 0.0; + target: "background"; + } + } + } +*/ diff --git a/res/edc/vp-speedbox-popup.edc b/res/edc/vp-speedbox-popup.edc new file mode 100644 index 0000000..fe751fb --- /dev/null +++ b/res/edc/vp-speedbox-popup.edc @@ -0,0 +1,314 @@ +#include "image_res.edc" +#include "vp_font.edc" + +#define SPEED_BOX_BG_COLOR 0 0 0 77 +#define SPEED_BOX_PRESS_BG_COLOR 42 137 194 255 +#define SPEED_BOX_LINE_COLOR 153 153 153 178 + +collections { + group { + name: "speedbox"; + parts { + part { + name: "speedbox.bg"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + image {normal: "white/common/T01-2_popup_bg.png"; border: 10 10 10 10;} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.1"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 112 99; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 1.0; to: "speedbox.bg";} + rel2 { relative: 0.5 1.0; to: "speedbox.bg";} + color: SPEED_BOX_BG_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "focus" 0.0; + inherit: "default" 0.0; + visible: 1; + color: SPEED_BOX_PRESS_BG_COLOR; + } + } + + part { + name: "speedbox.step.2"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 112 99; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to: "speedbox.step.1";} + rel2 { relative: 0.5 0.0; to: "speedbox.step.1";} + color: SPEED_BOX_BG_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "focus" 0.0; + inherit: "default" 0.0; + visible: 1; + color: SPEED_BOX_PRESS_BG_COLOR; + } + } + + part { + name: "speedbox.step.3"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 112 99; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to: "speedbox.step.2";} + rel2 { relative: 0.5 0.0; to: "speedbox.step.2";} + color: SPEED_BOX_BG_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "focus" 0.0; + inherit: "default" 0.0; + visible: 1; + color: SPEED_BOX_PRESS_BG_COLOR; + } + } + + part { + name: "speedbox.step.1.line"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 110 1; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to: "speedbox.step.1";} + rel2 { relative: 0.5 0.0; to: "speedbox.step.1";} + color: SPEED_BOX_LINE_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.2.line"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 110 1; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to: "speedbox.step.2";} + rel2 { relative: 0.5 0.0; to: "speedbox.step.2";} + color: SPEED_BOX_LINE_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.1.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "speedbox.step.1";} + rel2 { relative: 1.0 1.0; to: "speedbox.step.1";} + color: FONT_PLAYBACK_SPEED_BTN_COLOR; + text { + font: FONT_PLAYBACK_SPEED_FONT; + text_class: FONT_PLAYBACK_SPEED_CLASS; + size: FONT_PLAYBACK_SPEED_BTN_SIZE; + text: "x2"; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.2.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "speedbox.step.2";} + rel2 { relative: 1.0 1.0; to: "speedbox.step.2";} + color: FONT_PLAYBACK_SPEED_BTN_COLOR; + text { + font: FONT_PLAYBACK_SPEED_FONT; + text_class: FONT_PLAYBACK_SPEED_CLASS; + size: FONT_PLAYBACK_SPEED_BTN_SIZE; + text: "x3"; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.3.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "speedbox.step.3";} + rel2 { relative: 1.0 1.0; to: "speedbox.step.3";} + color: FONT_PLAYBACK_SPEED_BTN_COLOR; + text { + font: FONT_PLAYBACK_SPEED_FONT; + text_class: FONT_PLAYBACK_SPEED_CLASS; + size: FONT_PLAYBACK_SPEED_BTN_SIZE; + text: "x4"; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } /* parts */ + programs { + program { + signal: "signal.speedbox.visible.on"; + source: "*"; + after: "set.speedbox.visible.on"; + } + + program { + signal: "signal.speedbox.visible.off"; + source: "*"; + after: "set.speedbox.visible.off"; + } + + program { + name: "set.speedbox.visible.on"; + source: "*"; + action: STATE_SET "show" 0.0; + + target: "speedbox.bg"; + target: "speedbox.step.1"; + target: "speedbox.step.2"; + target: "speedbox.step.3"; + target: "speedbox.step.1.line"; + target: "speedbox.step.2.line"; + target: "speedbox.step.1.txt"; + target: "speedbox.step.2.txt"; + target: "speedbox.step.3.txt"; + } + + program { + name: "set.speedbox.visible.off"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "speedbox.bg"; + target: "speedbox.step.1"; + target: "speedbox.step.2"; + target: "speedbox.step.3"; + target: "speedbox.step.1.line"; + target: "speedbox.step.2.line"; + target: "speedbox.step.1.txt"; + target: "speedbox.step.2.txt"; + target: "speedbox.step.3.txt"; + } + program { + signal: "signal.speedbox.set.mode.1"; + source: "*"; + script { + set_state(PART:"speedbox.step.1", "focus", 0.0); + set_state(PART:"speedbox.step.2", "show", 0.0); + set_state(PART:"speedbox.step.3", "show", 0.0); + } + } + program { + signal: "signal.speedbox.set.mode.2"; + source: "*"; + script { + set_state(PART:"speedbox.step.1", "show", 0.0); + set_state(PART:"speedbox.step.2", "focus", 0.0); + set_state(PART:"speedbox.step.3", "show", 0.0); + } + } + program { + signal: "signal.speedbox.set.mode.3"; + source: "*"; + script { + set_state(PART:"speedbox.step.1", "show", 0.0); + set_state(PART:"speedbox.step.2", "show", 0.0); + set_state(PART:"speedbox.step.3", "focus", 0.0); + } + } + + } /* programs */ + } /* groups */ +} /* collections */ diff --git a/res/edc/vp-toolbar.edc b/res/edc/vp-toolbar.edc new file mode 100755 index 0000000..0a937fb --- /dev/null +++ b/res/edc/vp-toolbar.edc @@ -0,0 +1,1733 @@ +#define ITEM_STATE_ENABLED 0 +#define ITEM_STATE_DISABLED 1 + +group { name: "elm/toolbar/base/default"; + images { + image: "00_winset_control_toolbar_bg.png" COMP; + } + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + image.normal: "00_winset_control_toolbar_bg.png"; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/item/default"; + images { + image: "00_winset_toolbar_press.png" COMP; + } + styles{ + style { name: "toolbar_style"; + base: "font=SLP:style=Medium font_size="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC" align=center color="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC" wrap=mixed ellipsis=1 text_class=slp"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Bold"; + tag: "b" "+ font=SLP:style=Bold"; + tag: "tab" "\t"; + } + } + + data.item: "transition_animation_on" "1"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "bg"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: 4 4; + } + rel2 { + relative: 1.0 1.0; + offset: -5 -5; + } + image { + normal: "00_winset_toolbar_press.png"; + border: 3 3 3 3; + } + image.middle: SOLID; + fill.smooth: 0; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: 10 8; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: 10 5; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.5 1.0; + rel1 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "elm.text"; + } + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.swallow.icon_new"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon_new.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text_new.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.text_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "event2"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "pressed"; + signal: "mouse,down,1"; + source: "event"; + script { + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"bg", "selected", 0.0); + } + transition: LINEAR 0.2; + } + program { name: "unpressed"; + signal: "mouse,up,1"; + source: "event2"; + action: STATE_SET "default" 0.0; + target: "bg"; + transition: LINEAR 0.1; + } + program { name: "go"; + signal: "mouse,up,1"; + source: "event"; + action: SIGNAL_EMIT "elm,action,click" "elm"; + } + program { name: "mouse,in"; + signal: "mouse,in"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,in" "elm"; + } + program { name: "mouse,out"; + signal: "mouse,out"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,out" "elm"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + script { + set_int(item_state, ITEM_STATE_DISABLED); + set_state(PART:"bg", "disabled", 0.0); + set_state(PART:"elm.text.clipper", "disabled", 0.0); + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + run_program(PROGRAM:"label_set,animation,done"); + run_program(PROGRAM:"icon_set,animation,done"); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + script { + set_int(item_state, ITEM_STATE_ENABLED); + set_state(PART:"bg", "default", 0.0); + set_state(PART:"elm.text.clipper", "default", 0.0); + set_state(PART:"elm.icon.clipper", "default", 0.0); + run_program(PROGRAM:"label_set,animation,done"); + run_program(PROGRAM:"icon_set,animation,done"); + } + } + program { name: "label_set,animation,forward"; + signal: "elm,state,label_set,forward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation,backward"; + signal: "elm,state,label_set,backward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation"; + signal: "elm,state,label_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.text.clipper"; + target: "elm.text_new.clipper"; + transition: LINEAR 0.2; + after: "label_set,animation,done"; + } + program { name: "label_set,animation,done"; + action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; + } + program { name: "label,reset"; + signal: "elm,state,label,reset"; + source: "elm"; + script { + set_state(PART:"elm.text_new.clipper", "default", 0.0); + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"elm.text.clipper", "default", 0.0); + else + set_state(PART:"elm.text.clipper", "disabled", 0.0); + } + } + program { name: "icon_set,animation,forward"; + signal: "elm,state,icon_set,forward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation,backward"; + signal: "elm,state,icon_set,backward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation"; + signal: "elm,state,icon_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.icon.clipper"; + target: "elm.icon_new.clipper"; + transition: LINEAR 0.2; + after: "icon_set,animation,done"; + } + program { name: "icon_set,animation,done"; + action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; + } + program { name: "icon,reset"; + signal: "elm,state,icon,reset"; + source: "elm"; + script { + set_state(PART:"elm.icon_new.clipper", "default", 0.0); + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"elm.icon.clipper", "default", 0.0); + else + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + } + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + } + } + } +} + +group { name: "elm/toolbar/item/item_horizontal"; + inherit: "elm/toolbar/item/default"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "icon_rect"; + description { state: "default" 0.0; + fixed: 1 0; + align: 0.0 0.5; + } + description { state: "visible" 0.0; + fixed: 1 0; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + } + part { name: "padding_after_icon"; + description { state: "default" 0.0; //when only icon or no icon is there + rel1.relative: 1.0 0.0; + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: 6 0; + } + } + part { name: "padding_before_text"; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: 6 0; + } + } + part { name: "elm.swallow.icon"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.swallow.icon_new"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + } +} + +group { name: "elm/toolbar/separator/default"; + parts { + part { name: "base"; + type: RECT; + description { state: "default" 0.0; + min: 3 1; + max: 3 9999; + color: 0 0 0 0; + } + } + part { name: "separator_left"; + type: RECT; + description { state: "default" 0.0; + min: 1 1; + max: 1 9999; + fixed: 1 1; + rel1 { + relative: 0.0 0.1; + offset: 0 0; + } + rel2 { + relative: 0.0 0.9; + offset: 1 0; + } + color: TOOLBAR_ITEM_SEPARATOR_LEFT_COLOR_INC; + } + } + part { name: "separator_middle"; + type: RECT; + description { state: "default" 0.0; + min: 1 1; + max: 1 9999; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "separator_left"; + } + rel2 { + relative: 1.0 1.0; + offset: 1 -1; + to: "separator_left"; + } + color: TOOLBAR_ITEM_SEPARATOR_MIDDLE_COLOR_INC; + } + } + part { name: "separator_right"; + type: RECT; + description { state: "default" 0.0; + min: 1 1; + max: 1 9999; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "separator_middle"; + } + rel2 { + relative: 1.0 1.0; + offset: 1 -1; + to: "separator_middle"; + } + color: TOOLBAR_ITEM_SEPARATOR_RIGHT_COLOR_INC; + } + } + } +} + +group { name: "elm/toolbar/object/default"; + parts { + part { name: "elm.swallow.object"; // object group + type: SWALLOW; + description { + state: "default" 0.0; + } + } + } +} + +group { name: "elm/toolbar/base/tabbar"; + alias: "elm/toolbar/base/tabbar/item_horizontal"; + images { + image: "00_winset_control_tabbar_bg_top.png" COMP; + } + + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + image.normal: "00_winset_control_tabbar_bg_top.png"; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/item/tabbar"; + images { + image: "00_winset_tabbar_focus.png" COMP; + } + + data.item: "transition_animation_on" "1"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "bg"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + image { + normal: "00_winset_tabbar_focus.png"; + } + image.middle: SOLID; + fill.smooth: 0; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: 10 8; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: 10 5; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.5 1.0; + rel1 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "elm.text"; + } + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.swallow.icon_new"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon_new.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text_new.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.text_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg"; + transition: LINEAR 0.2; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + transition: LINEAR 0.1; + }/* + program { name: "pressed"; + signal: "mouse,down,1"; + source: "event"; + action: STATE_SET "selected" 0.0; + target: "bg"; + target: "elm.text"; + target: "elm.text_new"; + transition: LINEAR 0.2; + } + program { name: "unpressed"; + signal: "mouse,up,1"; + source: "event"; + action: STATE_SET "default" 0.0; + target: "bg"; + target: "elm.text"; + target: "elm.text_new"; + transition: LINEAR 0.1; + }*/ + program { name: "go"; + signal: "mouse,up,1"; + source: "event"; + action: SIGNAL_EMIT "elm,action,click" "elm"; + } + program { name: "mouse,in"; + signal: "mouse,in"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,in" "elm"; + } + program { name: "mouse,out"; + signal: "mouse,out"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,out" "elm"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + script { + set_int(item_state, ITEM_STATE_DISABLED); + set_state(PART:"bg", "disabled", 0.0); + set_state(PART:"elm.text.clipper", "disabled", 0.0); + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + run_program(PROGRAM:"label_set,animation,done"); + run_program(PROGRAM:"icon_set,animation,done"); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + script { + set_int(item_state, ITEM_STATE_ENABLED); + set_state(PART:"bg", "default", 0.0); + set_state(PART:"elm.text.clipper", "default", 0.0); + set_state(PART:"elm.icon.clipper", "default", 0.0); + run_program(PROGRAM:"label_set,animation,done"); + run_program(PROGRAM:"icon_set,animation,done"); + } + } + program { name: "label_set,animation,forward"; + signal: "elm,state,label_set,forward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation,backward"; + signal: "elm,state,label_set,backward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation"; + signal: "elm,state,label_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.text.clipper"; + target: "elm.text_new.clipper"; + transition: LINEAR 0.2; + after: "label_set,animation,done"; + } + program { name: "label_set,animation,done"; + action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; + } + program { name: "label,reset"; + signal: "elm,state,label,reset"; + source: "elm"; + script { + set_state(PART:"elm.text_new.clipper", "default", 0.0); + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"elm.text.clipper", "default", 0.0); + else + set_state(PART:"elm.text.clipper", "disabled", 0.0); + } + } + program { name: "icon_set,animation,forward"; + signal: "elm,state,icon_set,forward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation,backward"; + signal: "elm,state,icon_set,backward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation"; + signal: "elm,state,icon_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.icon.clipper"; + target: "elm.icon_new.clipper"; + transition: LINEAR 0.2; + after: "icon_set,animation,done"; + } + program { name: "icon_set,animation,done"; + action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; + } + program { name: "icon,reset"; + signal: "elm,state,icon,reset"; + source: "elm"; + script { + set_state(PART:"elm.icon_new.clipper", "default", 0.0); + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"elm.icon.clipper", "default", 0.0); + else + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + } + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + } + } + } +} + +group { name: "elm/toolbar/item/tabbar/item_horizontal"; + inherit: "elm/toolbar/item/tabbar"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "icon_rect"; + description { state: "default" 0.0; + fixed: 1 0; + align: 0.0 0.5; + } + description { state: "visible" 0.0; + fixed: 1 0; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + } + part { name: "padding_after_icon"; + description { state: "default" 0.0; //when only icon or no icon is there + rel1.relative: 1.0 0.0; + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: 6 0; + } + } + part { name: "padding_before_text"; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: 6 0; + } + } + part { name: "elm.swallow.icon"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.swallow.icon_new"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + } +} + +group { name: "elm/toolbar/base/naviframe"; + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/object/naviframe"; + parts { + part { name: "elm.swallow.object"; // object group + type: SWALLOW; + description { + state: "default" 0.0; + rel1.offset: 5 0; + rel2.offset: -6 -1; + } + } + } +} + diff --git a/res/edc/vp-volume-popup.edc b/res/edc/vp-volume-popup.edc new file mode 100644 index 0000000..6229e06 --- /dev/null +++ b/res/edc/vp-volume-popup.edc @@ -0,0 +1,318 @@ +#include "image_res.edc" + +#define BG_WIDTH 126 + +collections { + group { + name: "volume"; + parts { + part { + name: "volume.bg"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 128; + } + } + + part { + name: "volume.left"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 10 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.0 1.0; } + color: 255 0 0 255; + } + } + + part { + name: "volume.right"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 10 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 0 0 255; + } + } + + part { + name: "volume.icon.1"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 58 58; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 1.0 0.5; to_x: "volume.left"; } + rel2 { relative: 1.0 0.5; to_x: "volume.left"; } + image { normal: "volume/T01-2_volume_icon_01.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.icon.2"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 58 58; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.5; to_x: "volume.right"; } + rel2 { relative: 0.0 0.5; to_x: "volume.right"; } + image { normal: "volume/T01-2_volume_icon_02.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.icon.1.right"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 6 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to_x: "volume.icon.1"; } + rel2 { relative: 1.0 1.0; to_x: "volume.icon.1"; } + color: 0 255 0 255; + } + } + + part { + name: "volume.icon.2.left"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 6 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 0.0 0.0; to_x: "volume.icon.2"; } + rel2 { relative: 0.0 1.0; to_x: "volume.icon.2"; } + color: 0 255 0 255; + } + } + + part { + name: "volume.icon.handle.start"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 58 58; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 1.0 0.5; to_x: "volume.icon.1.right"; } + rel2 { relative: 1.0 0.5; to_x: "volume.icon.1.right"; } + image { normal: "volume/T01-2_player_volume_handle.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.icon.handle.end"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 58 58; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.5; to_x: "volume.icon.2.left"; } + rel2 { relative: 0.0 0.5; to_x: "volume.icon.2.left"; } + image { normal: "volume/T01-2_player_volume_handle.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.txt.start"; + type: TEXT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "volume.icon.handle.start";} + rel2 { relative: 1.0 1.0; to: "volume.icon.handle.start";} + color: 42 137 194 255; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 38; + text: "0"; + align: 0.5 0.5; + } + } + } + + part { + name: "volume.txt.end"; + type: TEXT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "volume.icon.handle.end";} + rel2 { relative: 1.0 1.0; to: "volume.icon.handle.end";} + color: 42 137 194 255; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 38; + text: "15"; + align: 0.5 0.5; + } + } + } + + part { + name: "volume.progress.bg"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 8; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 1.0 0.5; to_x: "volume.icon.handle.start"; } + rel2 { relative: 0.0 0.5; to_x: "volume.icon.handle.end"; } + image { normal: "volume/T01-2_player_progress_bg.png"; } + } + } + + part { + name: "volume.progress.bar"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + state: "default" 0.0; + min: 0 8; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_x: "volume.progress.bg"; } + rel2 { relative: 1.0 0.5; to_x: "volume.progress.drag"; } + image { normal: "volume/T01-2_player_progress_bar.png"; } + } + } + + part { name: "volume.progress.confine.rect"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to_x: "volume.progress.bg"; } + rel2 { relative: 1.0 1.0; to_x: "volume.progress.bg"; } + color: 255 255 255 0; + } + } + + part { + name: "volume.progress.circle"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to_x: volume.progress.drag; } + rel2 { relative: 0.5 0.5; to_x: volume.progress.drag; } + image { normal: "volume/T01-2_player_volume_handle_press.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.progress.circle.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "volume.progress.circle";} + rel2 { relative: 1.0 1.0; to: "volume.progress.circle";} + color: 255 255 255 255; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 38; + text: "12"; + align: 0.5 0.5; + } + } + } + part { + name: "volume.progress.drag"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to: "volume.progress.bg"; } + rel2 { relative: 1.0 0.5; to: "volume.progress.bg"; } + color: 255 255 255 0; + } + dragable { + confine: "volume.progress.confine.rect"; + x: 1 1 1; + } + } + } /* parts */ +// programs { + +// } /* programs */ + } /* group */ +} + diff --git a/res/edc/vp_font.edc b/res/edc/vp_font.edc new file mode 100755 index 0000000..560bbbf --- /dev/null +++ b/res/edc/vp_font.edc @@ -0,0 +1,28 @@ +#define FONT_BOLD_TYPE "SLP:style=Bold" +#define FONT_MEDIUM_TYPE "SLP:style=Medium" +#define FONT_REGULAR_TYPE "SLP:style=Regular" +#define FONT_ROMAN_TYPE "SLP:style=Roman" + +#define FONT_COLOR 255 255 255 255 + +#define FONT_START_COLOR 255 255 255 255 +#define FONT_END_COLOR 142 142 142 255 +#define FONT_TRIM_START_COLOR 56 56 56 255 +#define FONT_TRIM_END_COLOR 255 255 255 255 +#define FONT_BOOKMARK_TITLE 249 249 249 255 + +#define FONT_PLAYBACK_SPEED_COLOR 255 255 255 255 +#define FONT_PLAYBACK_SPEED_BTN_COLOR 255 255 255 255 + +#define FONT_PLAYBACK_SPEED_SIZE 90 +#define FONT_PLAYBACK_SPEED_BTN_SIZE 36 + +#define FONT_PLAYBACK_SPEED_FONT FONT_REGULAR_TYPE +#define FONT_PLAYBACK_SPEED_BTN_FONT FONT_REGULAR_TYPE + +#define FONT_PLAYBACK_SPEED_CLASS "slp" +#define FONT_PLAYBACK_SPEED_BTN_CLASS "slp" + + +#define TITLE_FONT_SIZE 28 +#define TEXT_TRIM_SIZE 25 \ No newline at end of file diff --git a/res/images/00_Option_header_bt.png b/res/images/00_Option_header_bt.png new file mode 100755 index 0000000000000000000000000000000000000000..659fc232d0bc0147d1618ca3c862c8d488b53914 GIT binary patch literal 3040 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 IM6N<$f|iw?q5uE@ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8a05504a2bd6179045ee247cf93599ce24172ce5 GIT binary patch literal 2993 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 literal 0 HcmV?d00001 diff --git a/res/images/00_grid_select_check.png b/res/images/00_grid_select_check.png new file mode 100755 index 0000000000000000000000000000000000000000..43855678aa0b4452df24358fbb796e79ff90ba28 GIT binary patch literal 4247 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9f31c89edf61bb3f28683b8378f5cd26cff9ae0f GIT binary patch literal 3163 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4f7d66f96207c0e684c0f77b94f7746b8bd2646f GIT binary patch literal 3114 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0472430cd87fea487ad0747a8e65e08027cf24c4 GIT binary patch literal 3208 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 RVSiRNFg3J-*Faq&{|m8xxhDVs literal 0 HcmV?d00001 diff --git a/res/images/01_controlbar_icon_delete.png b/res/images/01_controlbar_icon_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..07e28980ca496293af5ea94b0205464b6465e951 GIT binary patch literal 3072 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..771ebb835a70c58c5aa6a8c99745df99334ea851 GIT binary patch literal 313 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5cb7824b43e480e22362e4817d43cf908d1dc92c GIT binary patch literal 3231 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 literal 0 HcmV?d00001 diff --git a/res/images/T01_Nocontents_multimedia.png b/res/images/T01_Nocontents_multimedia.png new file mode 100755 index 0000000000000000000000000000000000000000..a59046fe550b78271f126e2342283c409f7e88c0 GIT binary patch literal 9146 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 literal 0 HcmV?d00001 diff --git a/res/images/T01_Option_header_bt.png b/res/images/T01_Option_header_bt.png new file mode 100755 index 0000000000000000000000000000000000000000..94b1e2f5e5f7829171f8742daea0f1d20ab3fc7d GIT binary patch literal 2984 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 literal 0 HcmV?d00001 diff --git a/res/images/T01_Trim_handle_ending.png b/res/images/T01_Trim_handle_ending.png new file mode 100755 index 0000000000000000000000000000000000000000..adf7c824961158011c0fda6b9e276542eaae9500 GIT binary patch literal 3279 zcmV;=3^4PFP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005{Nkl8`&KVLKO20p;n_Pe^VZf~y5O6DubQ^IsJ1Gc4!PyLS zH3eZ1yZ|BIg|57V7X+bYCGK$vOGuoV+>4a=GL_#Bg1A z?M{y4Tsaq!L%;+2j^li}t$(lATWM39zKMvuu`KIzwOVZho`{tGWt@Wz5uVoib-i9k zYt4KD~dqtQTX4M4G2#I|iuL{4`C5s`<$$6Bq1X_{BAC2hwd z(%Cj73wY&nnM@|L`t=(I$t-n6q`ghZ+k8In<#M?jZ_rv(uh%gQW?P@NTCLv|vQCD> zA(P4E1dvP35%9_P{fob*Tiv55Cr_WolGVZq9{7?egBo= zy6%x_njf0Y=8cGLC5~eTg8|d&^tl4ON~N-M1b|YCa=8rPDd5nutiA2J$#OqZfM$;| z3@k`6p}(xND4_IDI|rYkQDM4$VC)Idjl*M3xID5csCx8_XbIxeXf9h7>0yl z_)E8w%w{u2qY+^k_JRHZ@O`;lJ_v%q3xePo;Oxlq6*vd_zVAmr2LL{~p4nL5>>U6A N002ovPDHLkV1gDdA$0%% literal 0 HcmV?d00001 diff --git a/res/images/T01_back.png b/res/images/T01_back.png new file mode 100755 index 0000000000000000000000000000000000000000..73d57a546a268ceda5bdc8729bd61c67d3d27319 GIT binary patch literal 3928 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 literal 0 HcmV?d00001 diff --git a/res/images/T01_checkbox.png b/res/images/T01_checkbox.png new file mode 100755 index 0000000000000000000000000000000000000000..61dc76a36e5e2ed78f3376c5867fbc2a520beec9 GIT binary patch literal 2944 zcmV-`3xD*9P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00021NklPi7>3~&v=AaRBm}Oox0HevSi{yONOTEWOIJAyESZ4BkX(C5 zX>%hSR{uM|_q1PB*EPTuxB)F;djkXT+yi}CmiMN)P!vT_#Te6$I7DW+*U$3T@N2e!&@S22G|Ab|uDNFad(+6tPjwVMHcdyauYYmIYjaKyP4 qtu??9`2*Se16c*OzWzWyeggpB*D33BO_u5a0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000MfNklK2FZPh;V&$rwSjmFMwc9uZsam|^ zf*wImgc^_i@w8LFv2we@&ObAC;-3^a47&u z0Mh^_$KTP$<;o@pxF1$z#9~l|BaplUD zOAj7AcnIJJ05c@ga%&vNqo$??1qB7~bXdD~t^M@r(}zhd)5t|0&;SZN9uI4?*|I|7ZTt4^ zy8slCw58+%iZPi?cBj)R*h#C^GJE&#T}vWL7NB_TBsiLQtFErLk^7JZDDFc);)jNY zo)KS84xr`%%q9|v`1?2|5{dDvSFb)MYF##<5<^2nk*TRE!A{X=^afGsNm+q9d-iNc ze}Df&Ar50>V{xC)cMiY=i6~jfgGB(Z0Q@5q3N_!od-q`$NTY#3;0S;?>G|Z*!Vq+>s+kE&^x= zpd~O;0A>M9k-GGXq+CiA{gTTWj=*^ouc34#Lh^}#%p)naK*lNj;pb6{kw}DNSymSF zC>~Ni083?Mpia5>lvHP2DMs^#>U3q#N+Xo-QC@7t*xzJ0r)3Lxkb5wq5+r!fxstTulKmk zW@FrLH)xt(y1?yr7kjX!rL^vG&nrJ4`L8&B;CLMrPKA-Q`X0!P%NW3u&gJ3Y& zi1cV!BgG#pC8#_A`ihDQ=bANZs$DMEe}%-G#bPNVX__ZDP&5Fe-|yc^(=@DB>pL&j z>2wT)up`Sa&-UKYp+6rXkuyWRftl9H0F4kIHY!$fc{$O)7h zfWhzg`-G$&09?O*{VzmE&C3N8pLRx<%k@hkkdnz{^1_7+gCwG4lX@zopZ*qFt=38* zX%~yd28lAy`P^wafl>o71cSj(H5!essHjK?s3_kAOVPea0g57m(O6koxz%d5zEeB# z77mBI0sKp&W>eD1O@Q(XfKB6u~@8Pfl`YF%5Jy2 zi;If|Ih;Isa*#kuu`J6!ZZ7~(+|tt0Tv}SX_vX!;pNGTYCt@jfl?e5T24JvSt(8LR z69ClJ)j3Iu6(GI!TT)e3^|Q;DFSnJHlx*wl?A+hd((>1g8n)t#xe5SXTU%QubVvsP zhYlU`cXf4*05AYh?b)+u!@hm{PEi!~>fE_=hx_{aMv&fU5p6WA79pb4<>lpehG7KN zCjh9guits;(j`MQ8vXmab?YjePUp7S+1bAH=gg_VEsi|peZEfw=>FH@qOicWlW!W!~Uee$piK^CfU86Vv3)9onlON(-R#t}L;o%EA zcI@~qfM)>4rGO*`s1$(L*REX~oSB)KeILg}A~D|F+}wQd;K4rt7?l!|SUPGJz{}gW zZ(p6C7dE8q?d|=huCDI$ix)5c5x`SYxFzlR)FPzbYXIY?PMr!nozDD*hK72rR?GYk zMc#Yn%$YAcJ3FHQUXbZQ5MdKgY)qw6DvF}GM~@yo zYHx4v9T*sRN{aOq$m8>DfW+G26l>X)BGIcwddG>ukK4W+(xcuafis8ngM|04MIQsG zOkgU~pQ$oH@e_dm>mR9CEU1sklrM--Kq;UUPzopolmbdI1=NSxzXt%|%40nDsJ`F; O0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000O0NklCPO6|xclI6l>h>@_@40YC-dEdYfCm=Hj5 z1QG*a0l++fB?64gCMb$P+HE$Q&8JSCI#XI&`W^s^<2XTh6h%?o($Z3BbaZsEtE=li zfLQ`70RQ4R?s+z|o)kc#Mx)tpG#UjB z2>=QT3X~+qO0$~vQkjn9IEh-V&bb>8hr=@r!z}v!{vR2JdExW<0%K!i&)jZz5J2ID z3l~0aYiqmslKYor8x(dryM;obS(arN(qZ^~zNh!@-TOBHmc$ztK%Bg;kW8m)Z*Py8 z&F1QchK3KeRY&cldA;6%)9Gvv1Okr%ydWt)o(3hJ24($90MG!?1cSkFFc^fvV8~BU zkx1mHKp^l8KoCHL09p@&+d@NeG)@-zs%W z0mx-CS<&kzAwhsrDwPE{Zrr$f{P^)>0QQo~KqlIZK}`wzjK||ikYG)bdy%BQ zUjs@elc_SPPh~=a1eYBi$K=q0z?{VkH+ zOBO&urqUp%K}}CjM`~+puTD%%OaS;#DkiOmWVKp<=X5$-OG-)<7K;Uym6dIYM54LB zzyBKm&jA!^wc2+wZ4KqLM?rfS5{W09~c<8YBU<(1)u|E5TQ}fAIkWwa>%VDutaP;U==(^QvJ<-(E^f@0$**3u_ z^8*JC(B0kLXK9-L#Ubr@)|;N5j-&!NpX)Um4J;PRj(pc0^Qdq*JX2d+`&ms*&1aL7 zlQX&Q(K`Z)lqH`|OiX+q2n4>j+wGrDO-%*g2vAD1Je*KW7Fav4_EKslYxcAL%CdhXo0E753_;Zfj*Nl$4Jz})2Iq_4KN_D_DlKa{ti zLZQ$s8BY4|+`04B>C>nGydKsDU4Ya~E)HPn$&)8@&CSh&^Yioh35sRe1tcf95dhBy z1_u6l_Uze93kwS|AlbfkI2?c6q*bB>P+U_}Q(0G6_lL)iALksXtjGhu-~S_$LrIpr z&i3{7eO**k6m4l~X=-e2yh7Tyk&Rj-l`X0D-aU@pw{aB^LqwM7G+0g$yZc9_91-o~C&e z2rLfkrX)gzlr>P~d{P|z#z(sV?6%wO$DB^5ARuK0R5%=-A=_?+c+zG@0oYYvU;m-a zX8SVLzRh(=S&2~$!z^O$c!-y&)oKU@QdT^QNCTE9C=S4KPfyRIXf%4Mva+&GE|)8W z04f_El`akV*fM~h-EQ}{XU?2y-l*KkJ5cG;V5@7>q{9M$+5Z0iZAV^Cvb zW6xgEqf%Rt1@PSC@%(W9{P};x4vJwI20#(HVU5G#;9de_{VFgTjk>C;Dzi?fdt0Say<;|;e-n*H^U9;v=p=VleA9r+g#E?A8%^`UbE*(Z$adGipyo3xQPdh(*REZ=c<9if>R>P!rfIrNCX*Fy1Vf|IKq{4HbgCrFw$=Ic*8;T)fLU5v z3IW)k{)dK!h7W?lAY!ptF2dNfmBu#-y-L50yFu-Iop|rGA5Rk^l z$G=0e*%;prQ1e|~UH5O_zWsNWWn&PijgOCi=W@BeAnl)JKA(A&2OCpQ02Be(4WJmw zv))2FFqP literal 0 HcmV?d00001 diff --git a/res/images/T01_control_icon_reduce.png b/res/images/T01_control_icon_reduce.png new file mode 100755 index 0000000000000000000000000000000000000000..fbdb90624bfa6888587ec3a519573348b2c4dbc1 GIT binary patch literal 4817 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 literal 0 HcmV?d00001 diff --git a/res/images/T01_icon_expand.png b/res/images/T01_icon_expand.png new file mode 100755 index 0000000000000000000000000000000000000000..ba1158ee9bb0b61f378551aae166fdeae58915b3 GIT binary patch literal 3156 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 literal 0 HcmV?d00001 diff --git a/res/images/T01_icon_soundPath_press.png b/res/images/T01_icon_soundPath_press.png new file mode 100755 index 0000000000000000000000000000000000000000..9fcc466b2f533a57a092fc067e45d6e3da963be2 GIT binary patch literal 3681 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 literal 0 HcmV?d00001 diff --git a/res/images/T01_player_progress_bar.png b/res/images/T01_player_progress_bar.png new file mode 100755 index 0000000000000000000000000000000000000000..2f2545216b594fac728c49ee0476a62b64072005 GIT binary patch literal 2802 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 literal 0 HcmV?d00001 diff --git a/res/images/T01_player_progress_point.png b/res/images/T01_player_progress_point.png new file mode 100755 index 0000000000000000000000000000000000000000..0e8c5c544f22f44e450b688e3705438fb9c792ee GIT binary patch literal 2825 zcmV+k3-004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGi!~g&e!~vBn4jTXf06IxT zK~y+TWBB;-(_ruz?Cak{)5b7VxTe@HIVWE9Sy_LFeD=cMw1O0frh4q b>R|`~BhF5AbZAKd00000NkvXXu0mjf?JQ3z literal 0 HcmV?d00001 diff --git a/res/images/T01_sound_path.png b/res/images/T01_sound_path.png new file mode 100755 index 0000000000000000000000000000000000000000..d4f38430caaab0752053a66b98313c36d6132090 GIT binary patch literal 3081 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 NoIZc5=){ef{{s(gnHvBA literal 0 HcmV?d00001 diff --git a/res/images/T01_title_bg_h.png b/res/images/T01_title_bg_h.png new file mode 100755 index 0000000000000000000000000000000000000000..7d0cec4f1e592ff805bd79e910cca4273f928084 GIT binary patch literal 36828 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%0A=$(gNJ;09I0R4weF7)LYrsnw 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�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 literal 0 HcmV?d00001 diff --git a/res/images/T01_title_btn.png b/res/images/T01_title_btn.png new file mode 100755 index 0000000000000000000000000000000000000000..20c31f1bec9b990153e9670941d8b965060d41a0 GIT binary patch literal 3129 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 Th#9g>00000NkvXXu0mjfQ@YYe literal 0 HcmV?d00001 diff --git a/res/images/T01_title_btn_press.png b/res/images/T01_title_btn_press.png new file mode 100755 index 0000000000000000000000000000000000000000..49861ed6816e1d36764e2f327b59ebf50dd904da GIT binary patch literal 3126 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d14c5f6bc7a6590e2d61dfd3dbf01649180dbdac GIT binary patch literal 2962 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b8fa147fe429dd1732101e25f25885b82c2701e4 GIT binary patch literal 3037 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 literal 0 HcmV?d00001 diff --git a/res/images/bookmark/T01-2_bookmark_thumbnail.png b/res/images/bookmark/T01-2_bookmark_thumbnail.png new file mode 100755 index 0000000000000000000000000000000000000000..2d4a8ca1ca5fa9efc01111f2bb39bfda01d87f92 GIT binary patch literal 3761 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 LNkvXXu0mjf5?ay4 literal 0 HcmV?d00001 diff --git a/res/images/bookmark/T01-2_btn_bookmark_press.png b/res/images/bookmark/T01-2_btn_bookmark_press.png new file mode 100755 index 0000000000000000000000000000000000000000..34ef87ff74a0928b86a20c5805a91e6abcc78289 GIT binary patch literal 3992 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 literal 0 HcmV?d00001 diff --git a/res/images/bookmark/T01-2_function_tray.png b/res/images/bookmark/T01-2_function_tray.png new file mode 100755 index 0000000000000000000000000000000000000000..2df684bfd47504b418e9a38ee8c2c7f38676fd8f GIT binary patch literal 1409 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 literal 0 HcmV?d00001 diff --git a/res/images/com.samsung.video-player.png b/res/images/com.samsung.video-player.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc2384a7d59bfc2d230623dd14cf99b842f8e54 GIT binary patch literal 14891 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 T0BZr9#s?H-Rb{HB%!2<9B-@#e literal 0 HcmV?d00001 diff --git a/res/images/com.samsung.video-player.png_old b/res/images/com.samsung.video-player.png_old new file mode 100755 index 0000000000000000000000000000000000000000..aa8b1914c6a890e6fdc38a19d1187a5e153c7622 GIT binary patch literal 22981 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 KMNUMnLSTZnIGM8m literal 0 HcmV?d00001 diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_ff.png b/res/images/desktop/controlbar/DM_Key screen_icon_ff.png new file mode 100755 index 0000000000000000000000000000000000000000..4bc3885287d8565def3cb8625f596bf59cde3a39 GIT binary patch literal 3783 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 literal 0 HcmV?d00001 diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png new file mode 100755 index 0000000000000000000000000000000000000000..c5b9e8f7bc06f6297950bf8ef603b60391b373d7 GIT binary patch literal 4070 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 literal 0 HcmV?d00001 diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_play.png b/res/images/desktop/controlbar/DM_Key screen_icon_play.png new file mode 100755 index 0000000000000000000000000000000000000000..9bf836df6e7a5f7d1b6a43b29bbe4dbda5555d8c GIT binary patch literal 3476 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 literal 0 HcmV?d00001 diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_rew.png b/res/images/desktop/controlbar/DM_Key screen_icon_rew.png new file mode 100755 index 0000000000000000000000000000000000000000..1140a01fca9a1dd58ce4435e4afaf842e8a92959 GIT binary patch literal 3761 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 bh5sG^X`p_(UfsS%00000NkvXXu0mjfl{OI5 literal 0 HcmV?d00001 diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png new file mode 100755 index 0000000000000000000000000000000000000000..306af4e9b98204134bd63fe2e33e899edd623823 GIT binary patch literal 3988 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 bf&U%=0)Wn6$=N(400000NkvXXu0mjfOFr%m literal 0 HcmV?d00001 diff --git a/res/images/desktop/winset/T01-2_controller_progress_bar.png b/res/images/desktop/winset/T01-2_controller_progress_bar.png new file mode 100755 index 0000000000000000000000000000000000000000..03f54cf44807136c9bad2412feb4d6486404468e GIT binary patch literal 2797 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 literal 0 HcmV?d00001 diff --git a/res/images/desktop/winset/T01-2_controller_progress_handle_press.png b/res/images/desktop/winset/T01-2_controller_progress_handle_press.png new file mode 100755 index 0000000000000000000000000000000000000000..d14c5f6bc7a6590e2d61dfd3dbf01649180dbdac GIT binary patch literal 2962 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 literal 0 HcmV?d00001 diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png new file mode 100755 index 0000000000000000000000000000000000000000..b8fa147fe429dd1732101e25f25885b82c2701e4 GIT binary patch literal 3037 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_01.png b/res/images/gallery_loading_ani_01.png new file mode 100755 index 0000000000000000000000000000000000000000..9402e71cbe3df5780a3ef7f2ec9e2d29f1a5ad1f GIT binary patch literal 5221 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_02.png b/res/images/gallery_loading_ani_02.png new file mode 100755 index 0000000000000000000000000000000000000000..e71d4918f01a1fc76810251bb70b3faa42690865 GIT binary patch literal 5234 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 N002ovPDHLkV1hP3>I(n> literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_04.png b/res/images/gallery_loading_ani_04.png new file mode 100755 index 0000000000000000000000000000000000000000..18cc497ee1d1a6fe07eb27a110676f8a2c1f199b GIT binary patch literal 5350 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 Ef`9@Qxc~qF literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_05.png b/res/images/gallery_loading_ani_05.png new file mode 100755 index 0000000000000000000000000000000000000000..036c49b5424e77202c5e962cfb50ad58d9b2c8a1 GIT binary patch literal 5285 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_06.png b/res/images/gallery_loading_ani_06.png new file mode 100755 index 0000000000000000000000000000000000000000..3cb5e33da0286eadaf7ed349a32f710d7c900d4c GIT binary patch literal 5333 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_07.png b/res/images/gallery_loading_ani_07.png new file mode 100755 index 0000000000000000000000000000000000000000..fae06de739cf948e7a7395c4bd2493e1d54416aa GIT binary patch literal 5297 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 Du0QV` literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_08.png b/res/images/gallery_loading_ani_08.png new file mode 100755 index 0000000000000000000000000000000000000000..70eaaf013ed6361db1d88be45becbd19288f7117 GIT binary patch literal 5426 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 czU}`500j<{9 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_09.png b/res/images/gallery_loading_ani_09.png new file mode 100755 index 0000000000000000000000000000000000000000..7fb390c187da6b83e4433da35fc7be473cd72aa4 GIT binary patch literal 5452 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 XvF#uC<-*V<00000NkvXXu0mjfIXDLs literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_12.png b/res/images/gallery_loading_ani_12.png new file mode 100755 index 0000000000000000000000000000000000000000..b36421a5235ee85c33b50335ffe9fbf4f5c5b245 GIT binary patch literal 5348 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 C!uz=Z literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_13.png b/res/images/gallery_loading_ani_13.png new file mode 100755 index 0000000000000000000000000000000000000000..d70d60934fc0837084b8c5638dd5cc8f3555c508 GIT binary patch literal 5435 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_15.png b/res/images/gallery_loading_ani_15.png new file mode 100755 index 0000000000000000000000000000000000000000..1de8adbd813e51263d802705628c1b6595cd85f2 GIT binary patch literal 5536 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%0APZ{Wxh)MCF zwS4Q^g(qA1Aedt6j zl|;-xR}I*qt8&)c!)+cvE2Bfg$lgQ@k7uGaCrY1mXgR3ySgrOyQp)d-Hp6CKSJFC i-U8mT7Vzxa{{{dArrG&gvdpRg0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000U7NklREaeCKz*=gc{0mDZYWG%hk-1YO`=;N3_sa<+r>S5LR<^&YYu zQ$P{8)hZV`GCq|Ic$1?S*e`Go0DEPx48UPe>MdYN_BVieV7;Xk-h>zejsnMkk$`&R zgf>1qBHM&@)NZ`G|;{tiV1F(*9Oa+end-LZJU=;Y8DE|Z5);j_C5HKl< z?lZvHa&r(g0gzFjwH3q&@B;9RDE@pSRiA6HqQ5MvRu*O2z`9b3ikW6Ime2d=?*pEc z?E~O#seE?@@JYF`{t(4x0tMizBvnWbR|yKmd6bJ!0lWpwwOhky68N?O+or6rw4sd+N1nHxM_WFtEPLgslt+Q@ z1JAaL!t=n_frlK5jAt1bA4B&Od$|__IK7hnTZC5f$RspA)s$75G;oe6}`}{g$MYc8X#Ex^}o2|NdX9 zC-5%<`z-1X=IwRhY#YKhp`S5wx(>094<<=1Nr30^`m%Kha6jG#?$X{d2mC3fbNNzS z*OCPIq{RZ-^7uc2o9vFb2ApGOPh?Q#{lGWUY-tVxj}qPMcT<4ZEk-A%8x8&3+?6-R z#FdySMeW)5`Nwm;!v`ysQn9#vtxzi7Jqs+R0sKizKZv$ep6A(}@h0#?|2_xzAAh=k z?~&(Krl+vg8X7wE{L1YM*VdLk`bDiNC66~o#O$=!meleuU}ZPb9-Ww81kMfaKmPQA zqc8qspfEmV!Uj+(+t)ul_JgQg9!KFv9UW5`1+W2J+@=EDXYPKt&1YFu}ptaT?1E=D`1}GI5 zUI#ADUp<|vR^f+2l47AeQ&e0@~g$!zx^Co8X2FeR118J@Rtcb@OFk= z0DcVo2q+}`-|}2}W97Bt%FJ(97p`0%otQ2~%_s>2-Xj;_N+nuc$wCK${%mu7`Iieb zXMYVWk4{W)DSH0u=`GuA8@3zt0gt)p;;9;Ha8o1YDpvS~RpRD5F-vM5$0%AKqN^a-WZi7Hj?L$-D5DZ?U0D!eDe4yslFo`RxZQA)j&#-(7N z(NR-MX~ib^sV0MtlVV~6clCLzW*3Ck`l%{l*9)}Gk*I2Yc&jRWs)ZD7gI*KxsOfmk zh{YBG9XF@Paw)+R*oL$XGzs|WkiWfZxQ=?mc0moDRpA1D+XC2xuGu~XuwkK;`UIGk zMv4jgQKi)P8mMaJNGn^wN5-diWC3OCzm?S_zGX4;X6fCa&O;(vJhB$S>HzSKBq?Pn zplD_Et!TU%W1SpPQ_mB%GyzsECos282cC&YEs23ITU<%SPFfi$lbxpF%wjG8o)P=Tpm=o zSqNiPIUTx9)Sbt^u9gbqZe1&IfR6$vs~9Q8JbrAK0?!lO9qSL>CJo?4?$1oKxfLJ! zFiD5{wg>E7L`&1p1UfC?;4P}Sfx9Qnhkk^eOCGheE9r5-4vx7j#W`UT;G1}T;M!pm z%@lJCZ}vpHH{bh06ivXH=(K@@_m*YF;#4YupR>St8(T$x1)vO$w>fO@72HTtib>H2HFm|^4@i0$XcO33NrhS5Z*+pLq*8C- z;LSl_v^0QhKHXRPP#ZLC1`XIM!U~qDV$H5vmSDOhY7hEx+j2}9yp<>(YEjtz0^8P@ zv5g|GNIw&e1imR&(bnvDsr?|{VvYG0aw0?AU&q|F#-f?awZPVm1`gf`+W#8RT}n6M z4+3AnTi7Mr{pQ-C_G5Vc>DdN?-h=n@dw}p+ z3$95Bl?UatV5be-hkglf3F$qSoA4{4ilyP? z?{j#QatreNy5!B06o#!Cot6K~NKVd%C>7k(A%oXjGMpH#2;5i1WwC$#;e z`OtcXpJHx0a-geg!1bjYHbpB(CzGo%Y=x+d>s_iB?0PHQjGK7V#2@DVl=8S0stvlb zKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000UCNklOQ|DBls#aQS`qn%v^bz!d_ks5t|&gUvHNW zIX!bB8}K%;BLa64*f0ASu<}5U_e;P>vcE3-t+rNp3v3^7Lbf9oSOw^SvL6tbY%`Yn z{|U^=m(i2J2Lx0ndrz-v$2O3gs7Dq~^zg(*j*NfZ>3h zq;%gGp*$_%v%odr4Pd1kfe!*t0gnX~sT16WvV6Jn{EfEW<7zR((z?!y+Fx%5_+|k= z51f&U)By-C*e=DUeXn+Os;>Y0IPfvxZQu``415B3+K4jn0Py)<0zN!VC#o`>cL?~r zfPV#8?6kz^6Tk(5uB{8z9&q-1lKv)iE|;Q}!`0X=W*Yde!0!l!4+38V4(D{f+p^u2 z?IVX`$BbM$1Ci2E;6-2-SZFukp?%n|li1h&~MbwbBgmXPe71}7nlz$M^!z^8yuO2p&?t}VYm0(=|zX}!>kIl=z2 z0b2z^IP;?ZETGFx%mub2?0Z|le=gwi>@QWJ2=Kh&l9~qm3&5x+@~~B1 z27V*J+tIFwt4Q0AOatF&Ch#YWW~Dt@U=05b@N3||w6}eb5Q*4*)1xA~h68^{27Fw@ zskXB3h_dg{8MYwM7ZW=E*q+Yn&uanxnS?YPL)n*F*fG{>n~q3C1(LU~H4^w)Nd&Yc zH&utSwfMp-9SGZm{)&~-D^IIFn8meZ0lr5vHQ(Tp`TFG!aw8%4@^XrC7l0?zMlD%@ zpOJVwshM5PYuup?>_5^{Nx1G|$wzVnzK7`kV`x}a3+StKm;GMA+Zm|6ofCJP3-B|Z zXv9u#UZ*?lSDp^jR{N8A051{Mh-gO&Y;ISHhE}`LR)E(MVsn6xC;9R;z>nh|0c+)5hYBn1DxqHfcdC%Ki=zCSJ|L?=_8 z%qspTYrt|dulC@n7g`Pc*21;fm4V{O;o*J99xaWGpC}IQKVB#f9|EXsugL;%0JR#uwJwD2GEjN2b)>`WWz_Y+Jy1M zZdXldD~w$41HPx|Te`CSR<&AwZEN-BFV^n-;|BMu&r$)OaAZ?0)fNi;J2?W575ulXCvd3RW~Z`rny%47g@44b-K}oG zE|+3JHzT;tH^lsn=!6#m-5Rsny>5tTF?aA@en zBTPL#b0L!t_qmq%c(@g`l~T*Vb6V?j5~VCR8F0v7Cr#`{xq@?9zT+vPY1+PNBdc_8 zSwtEuc);G{G(B^n;`<|)ttWJnd+BX+&G!WNl=M`gwclAO#6{~r(5q1eZhJ?>7t<4&#!B?)*89m|cFb>Txj=*xZc^p)@oP6AE> zej9)BX1pEk!RW-7^u$}WR^UsPTXA)u6SVJQWsR_bq*%Kig>Oo6{U1@v_y;3jm9pDz>dFWc) z%1{?aCdGg&QEAkj7C7uKY14t@lU)kD!FBNS9t z+^rnZTwTB+S{7-C2Mh9T_zw&CZi%^zDaJ^&upv+2JM3PdAhhz@4DM37PJ=y2a+QJ- zSEBO<4$+DWtGK70*s=L>N6+3#o#Y_ld6{MyxRd2u%xZIlM-gMSj}R@oIM9Kxhvjn@ zNM4X^J8QGaYU}K-3pZVhJ-{_gG(Uf&gWSll1GFpNj@@jv(ZJ*EbH$a`T5bk`JwyAC zDh^n%?VQ6_cQvcJ>j4hYQqb$9Th_EdG*^GRO<@m;Fcjfcoy}`1*V=??wF>YrBUE&K zID05yN;=b08@Z5C$&d@|zA+q%PPVAA7^>c7^wx={4OTpWU1RC-x+{~k?kOvA$GF#s zvy%p;;_KO@j#9roE_j`2vgnQnvTqD#QicL1ng~7yJtljVLe0v`xU2OxsXS~$l)mEu zZI8W}U%-TbKh(g%uK{UU``KNx7 zo_|eRPCZ5cCFu+YNnY^XS0x;Wy1Bs48+Z);J)$-JMgvicc~N$2D2WosjA&p>TF;J^ z)oDY)1Kb}*HLt6h(5b5c?224dZq>q#xJwg9FVjXC=v$LE^d*=|Ee1McEH&D#N_mc5 zC4A=R*rEX|J~#5V*dozt_K)CRpH`>XCn-y%P;W@Z+9Q|^QjBf4veWe0rug-x6aze= zXuXBJl;N9wk0fxl1baq-Z#IU)J&D)X zS;prrv%7e;Vb;t$?b}4R>XsxF+!p|m6h-I+h`ukuKF4Mrv2{DS6d(9oL=U4gp9E+Q z@uqojQYdNBgzu`y>%6Sz4Lj-4n60cOsmet!OC&NX+lU1z=~+Dr_d`BRi$lwDqdLQO zR=7{~D@3>O=A{KJixRg|gq6xV*OsVvS)!%oMn)cKJIq!qJf!>$PnJ0p@bMk7(3$E# pX1zCEN*{RN`oR0Z`KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000T9Nkl7v`|YB3Pgf{C{V88!Vy<+0eppi zf_{Kram@u>L6H#n0wDxk1QewxL2W7#OQaSgl%$Sb$8nuBUhnRlUhFgS>G3&dX5V*q z_mPhFHSz3kp7}p7bLNcFS~IrZS#FGA415fHY@M@$>&?ye)j{3fPXHx(uB^}Q49Z5% zF0C{Nd;sie8BYQe^4x~3jMwJ-?*n`Ccn8=5Dg*7|eXuFuSs70UpeoP5*T#2F1GB(q zjQ6&HHQ+zM2crtS1S|r}A{8+lZGkmkYinm{$BxhruRjgEBqN5u)(_7w^vRo-f#(c8 zc6qaQz_-8a+5w3YE90xcI`EHPdVQhC9(`UwlOPQQK0N`ov;I3!PJ%^9oPxWz**o;;7XQ(p8_t(qXHra2xUQa1xMAw-_{9% z*8aaIfUf~dz@LE4tQ9_A0KN~*1P*x|UT6=j=Pt1J=h`Dtw)VSr$Sm+al(lpxze$!;J zQwDzEi3ME+e!;wirD%Jn30v6sM?<*?G8!_S1j1N;TJ$6(vL z!0U!SE5|T@*CO!sUI3pK;C5hiRf93?9kOAYlKyR_Y#Dq*3cRiY|4Pa-`@X( zWFltp&slQwy>0@3K|CBID{=KfDm41cS%Ymt|D#dThguMG;^`d+eq1WGq~?+aE@wza ze0C4`9qBriUrw8~@1TAO{a|B3U28f*$U27I@Zz>iB*PU98-Vz}(G zQ5+FSgFnyFCRxkCKZmJ-#gz9@Z-`qupyg| z2LgN)>>B>lZ84L%&GpskR)O2v?J9Kcj(~TYUVhUdE4Dq?D)0qIaJ2i~>x`CNbp%dZ z&!2Avc+rp(`#fL#`a_A}qh$B2-|XrtKHCcLlMe5;_3AxF({3gdL2RzCE;bANlqWDm z#_Np{1^#c`a~e%^dU+wi!!_=?d6Dd__eT`?ZNf8q!P6%Xd3YKBi3LVbyIorDs!2?K zO#wfF`xIKd10IZl2d!yIF=4wVyFVUr;Jc)sLY)Zwln1z}<2?sHclP4I(B8Roxt=dh ze#((9^LY2xZOK&TXO~ts(g3%$JF@m#BsuuNnb!Ioho=Eeo2GGLfXfyGx${fSZo}lv zXE$~?uD)K~zh7=fQV0YE)kmPyz^lMdJz)E8xk7pVG3V&^yWW)LJI--9&%$->`y+;TT10B|E!DBPzN%)IR&+BSUh`xu@#Ex(vsQ+4 zx<1p*W+}FgM^^BR2DR|$6>Q^q>OwFCe21gwFzw9c6l3%C#dWiV&o2He(Bk)J#vXn| zMpUaF9;Z#A`Glnr*K+S748CBR1pK~Hb=s9@{Ca-u-Og2vS^~c9$WH7DK{G&pgn;KP z@UG=ZS_WR>aPp69`3^wLb`d@s;XiO1ZCc)8EJ%}GE}J3%wn@tQ-s zP53#QynHT$miK75_DD<1!0UYcx<#L~JjKUXX&bgcsXT2C)1r0?AJaAh#g8d9i$m<) zDj+3^!LnK46&kawTqhz-;8R1GCgu}3ncCek;Lzv|*8)XQZ1VzsSb}68|Dt56gJmng z>m0rQQaQ98k(P4CVJoBck<_57lk&7zZ_mdr#;dV8Q>Q< zTqk@G^?D*@`WFK~a^+rAqG z7f-KyB*pGA#KH6ojka#CkDyB;bA=Q+HkM~=mv^VRSxF~;a16cX$Xx6Wqgfoxh`09= zd<^=S9A%2|f|gii`+={(Nqc9QPW{mR1bOi_dvY}9zAT8`bgTK5li)pRXti%0a}|&g zZ#9`lzoD~>{qECPL1)3C(K?W?$3JpX#)14_k7;ii>4I!W0rzUku1jfLo*kuuoz}xU zy_|I{FQ1gdHq-|2JugTvX3F@nH5qkJ8J#mmK^`^!>ywm2E_{i>K~mY?%#EhHp`CT{ z^lic`+lQ(*b4SFQJ021zW?vu1 z2SO*jubcdyOP}o>y`Q%G*X(W7x}6+P6iXyXQc}RP17k?Ht7+sTOTc4I+!Ak}5zWmR`MORi1)sHRqE%>?;;wv;`%_gBQ8uz z4xlct4&B7VJ{oEUKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000VENklGm-3q)UkiQH(X8?;mz)fq`@3Y_QQ^qmi+j2Yv{v`_7>;~Y&z}EzJ$pRVGa2v68 zF0OG0xSk&eD!@0z;@<^U4kGZw0{Tl9P#dBTrgB)m3j9Cc-J;J8$ldia@L{vSHw*Yz zfeT{MF01qTWZQBJH6XiOkLwPxR?T13wB}GJJFhP6!|#V5-L7P@X%&^*9K8 zOThmQc+hEu&sTsq1Udm1ffWEr@qTLjZb*5B8cM1FKNR>KVc{j zRF42Z0DcZEwhM3#yO^R7F@IJCZc7nTZD2fk0Q_EHPs%YEaBcQA4+!+1?H76>C)iUN zl&3A~AHWRoeuH7#O|Ex=tMZsOJJQgi;_AOJz!nH|0cKgYMV68R)Aj${4~Xv&ey+(yG`6s;Fo}* zl(}&g_=EWCc9eI3Ux?+aK!Kz`R~fj{OyCzJ-woxl`rHz5J&y?AV7Y5#A|~{Lqt63y zO6rY<10My>do0;*nJ$TCKcO?^K_LB84(op{t3R&?_(cnD3A$_p8+`&6Kq(dQpXnSPMu7D*$G zfVIaY?dZ|GfS>hbA+`ek&cT%55FX^vkC*cRUSzko9ZCgn1M3GA_%iTkN6fNa%sJdm zu}r{E80C9p{KLqAy+zVqJ;-v)$XY_a{M>$lk30OfovD1(!6{%`*%0Wp#$aFF5AZ`I z4R}|O)UqYOyFqRV_)v;Cwm3I4S}*X51=}_7d%p{;+qCjKfuAd*K&%V+xRH1J+{(vv zm)uH`t(>a|ct6RsG#hqgoO?V5wg}?o#0Y!9N?}^K7LaAMP8UjOhGs zU>?3a6g&s(aVg4^oy4?wB|)13cTFbB>{49$w>fwFX_o_E4h7AuS;{bb``xjTnM6hr z(9N>su<$);;^N#)IW6#hkHwpoztOYsXRO`!z?hXlxj*aU$}G4=1?nZsR=y7zZNHIg-OM6Tn64FnTVrh%6iX|!2csK56mm2 zZZztWvik7;lmRpCYJ^71TNZ4Wltl?sh7!>5MG>>2h}nH!kIHyH(~MWshexe&DJfuw zg1ODcu9McjTv?6X8ig3k;GPNgw zZlndi=FphkxN16ZrPS3pj(;qG8ZA?f7^36DY;}EMV{`5P3s0BlKgP3yqH<>X)2uEf z4m@v#g`SmJG^GP5-o>Xl>jTHu9B=`(3WTV=U3$UWYeyvP%QTqisioI@aci!@u~HtxtZ06 zAIxM0zJ+^Qo0h}vQh`X2n-{-px`0Uo{_95IY^WR>ed&$WhadbjEAVxa29|HVx{^Df zZAW}0?VDwHj-Xb=lz@N52%6>m{%_yl;K-@Wh0hARdyn{hd6^CzVsjNjQdDX96Y^Mh zeAxKx?#&}(-^dKy)eko#@+b#HB;~u|a7$)5Q_I)u7QSQGlHm0Xtm?e5Z0| z+Wg!bi*qw;1e$xbEF6+ubA~+mxc2Aw>5eHA&dj57W;%6WDNXZgQG!Jrs6?M9nT+2} zR{nYNusAofXY;d=0@BQ$T{4Owds(+0ax0MRoYr;L?NUJKO=*DdkPIi;qxO;Y{5ZR7 zfDS5f*80BVDe8U-BSe^yF}r|cgfSxnoB(EB~W?V>O9l#zO1Z1C*TZrhh@WfaA| zlsd?b6l+*FmfwyW4IBZ!ZdtT1gBcL_GS~qwr07ZSR2o+j+8KYpz_n|s;-5oqzAgy# zqiqVi&uDYFf@93HJ3nt{g}qSjL=bwR{)|KQ5Ttoka@B&(wB9wrykPJvSs`*tA$b(kOm!*%gZ#nkx_VIHPYf9UP^(@4EDc#JN^fc}qkx)K((dRXM< zo*JDURK?ntNk85hf*<-aCD*yM8~9>a^=2be)n*kS%VO;#Buf%Qd)0;l95wRgdIQ@| zo`JC)fa~D*M2eje391Fpt?x@Il_R~ZrHt6)VqyVZrHRXDT2W$a@H!P75+5IVf~azU z_bG!E{#yI!ZCbESsg*sANZibtq;i8&_Ll-#hVleX0vU*Q89M8TTKJjUrirv;z%R&k zl|&KBD8tiy`I5HWs8OliK>%)Be$`WOxT;1oy=;3?y{}nsuJpcyx(B=myeB>2oh$zz Y0N=!p5|FH4LjV8(07*qoM6N<$f}7J=2><{9 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_20.png b/res/images/gallery_loading_ani_20.png new file mode 100755 index 0000000000000000000000000000000000000000..14cc33921e472a91564c36b4f2a4863a3b1d6b8f GIT binary patch literal 5375 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_22.png b/res/images/gallery_loading_ani_22.png new file mode 100755 index 0000000000000000000000000000000000000000..80d592e63ed127c4264d180b019dbb419c231f3b GIT binary patch literal 5374 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000UpNkl z-sTU0WwK+5SdpEb6^PAD5+n-|h!QrC5Mm-F0*_bN<3iS&w(0=lxaSR%s4$ z@G{zeBp+TKSc?7J8E4saZp1wPKx>+=M@9XKK$?F$py5u<%TRfdzI99P3O;A^tY z0)NZHCBa##!O-RBxl#JxANU_|6}Xo2dmE1TCL}>0lH*F!@U9bb0C*mFyHg>i)?wIBi@pwp z16Lefk&5u5cyuRhPPX^O>z@+%!=A9JJXhkQ0{uFc@z+ZvC8&Ysvf~T9uS{LYVv?Ul}Rz&vw4*1Y< zwdp`xO&$2Lczj{NW6!Q7s1NhUTnGLFoX-)o3;YMbZzWd{kecSP54Q`w(q=e%QvOFX z!L#EZ@^87UAC#og><;h;@p=`IpQhD;A31VC*MUDJ9&W>R!Cwd711?cc`-ddOl|aE{ zdi+j-o*VE(QqX9Jmetk?SQOYdDYsn}=r=4rzUp;9QR`#Zfscs3wW~($@bX3Ro;&o0 zT^A*CBT&_vC*c@TM@d(KPX!c+>FIYRHm=cIwhX*(dAbTTs{Npwz@HEgH?3)SwHdQN z=|R{g^gqiZfd(`s9)7$Vz-vU^V7?YV)7w9y;I6C=g_pCA+~iU*M}b|P27Xv7NxOit z}FTW+gx01al3dV$75$7{K{i|ubJT34E zhevD2cAl+iZ+R+DQ@xPJ%hLd_8q!BQ%U9XN!?G9Jtde7i$u+HELz`V{!*p5jNf}Q_$U({N^QUd6y zyu6Y^nYap`BG&vE3w-vngqtE@XW~&wh~c(pn}dCZa{h6zCwzW7XXv|e&l@srDJ}5( z4)3;K=L%dYbp|+7BIvsVv0MRa-{gt;tVz?CK${dWi&-gkszlItw-RDQz?X1$trZ5` zfId?K==*RFWsaX;&I)`r;mmC-P#K(JqeHhS=;IzK7(ZXm3Vg+LxtJ}6^@6;70r-A_ z(4W9R`#F9+pB4Ch9&VPkw~@lcZ?Vviq^K~jWCgzLD0Xb%JBn<~$O!#t2fzBs!~j2e zA~W!&kvQ={uM`~1vp|2lL(s?BJZRIUzpu2SQcOMWlZ^2MBYFV(Scjm0o6XZtTp{Ir zyTI*!O;ZL9Q-bCAa)MqDgcCD~whVmLh~?m3U8ln4>4RGt`Y|5voUv_w-{gtgtpbN= z>WKEVsl?DnDaoRf2K0qaLT}7Y*Cm{Ul!@Zu851o5U$+3;V^vg<5-}&}rg!_a_Yw({ z64C%~k~~#APM*~gK|j|i=#AOwG2pu?wD(6OOiD-_1{QJ8;<8&4$0(6?5c>0u#Aquv zMYJ{xodCW@wDeJEoVX@xvfa_6&`)cv#~j}M9MM#F0?+~eMT((+SrXkHHpYR6`Z#wM zT@1Ad{it~Qm;w6`@GSl{6V2HDr!>cs1^Ak!SV9HSE=snLa8~Gz+35-3r-YaFh+n@? z$_ZszrQ99-<59Hre|M5@F|QIr*Y8w^MqVHq(3&*cp#i*`_83~x&I^u;({(^KiH$u7 zU43KEfoFeSt!=Mcp~H1`znSIx6M;JxA72$u*8$}cTa~CQs#-$mr-EQ=^@%-SdhV1! zSGdQ>ze~m`H;KSKtL2-aCA1Pyyv*q?^6%wOf0Et!`bl#_Y5L7@s<+uU|U*Y7+FJ z`rgL{@@up)RWcRu&|NzO`Yj$_9$I_6-CSd2R325Hpc}K(6+oHLtF`)XLeN*2ZeD2@ zc52`$ZZorHgcogvoo1j|QUZL0E_Y-Ypv^@81#|!(^!3$y7nko|{Usfk1l-ALa7_~F zh$s>r@NU=2%R_8T*jZD-Z)7~sPIA8jvpIZ)w9Xw_IMrmUSB0@J~h?V1m0~uyiU}4u|(_BRYEOwp=lmEP!nj!$uUD%Ie@nj z+aCz{6*e!*WrqhHfZEEuB0KE3npzb(&Rfc}%~}iiWugv>p+G#P#Y-CE|+X zI-vmT3*a~^()bnyRReq)bzxrt&7wWI?7&^>W<6t)Z_)#%2De$y*9JGC9snNzAJ_nR c@7n(d0D+F$JJ?(RBme*a07*qoM6N<$f|67&YXATM literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_23.png b/res/images/gallery_loading_ani_23.png new file mode 100755 index 0000000000000000000000000000000000000000..b4bd7ca8343b531619b369982b92d5690d53ed1e GIT binary patch literal 5527 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_24.png b/res/images/gallery_loading_ani_24.png new file mode 100755 index 0000000000000000000000000000000000000000..69445e4b384992839448a3abfa7b02c7eb6f9006 GIT binary patch literal 5481 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_25.png b/res/images/gallery_loading_ani_25.png new file mode 100755 index 0000000000000000000000000000000000000000..233a038de1dd202bdc4cdeaba0ecabd6aee1148d GIT binary patch literal 5409 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 LNkvXXu0mjfV%lSo literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_26.png b/res/images/gallery_loading_ani_26.png new file mode 100755 index 0000000000000000000000000000000000000000..d52a0175464fa9563b4bd6107623529586e3f60e GIT binary patch literal 5311 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_27.png b/res/images/gallery_loading_ani_27.png new file mode 100755 index 0000000000000000000000000000000000000000..4221eccb3e1654a0db9d08bc6985dcea291b0b3e GIT binary patch literal 5359 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_29.png b/res/images/gallery_loading_ani_29.png new file mode 100755 index 0000000000000000000000000000000000000000..41e97e170b195d65e28b7b0739e004d7ed22040c GIT binary patch literal 5489 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_loading_ani_30.png b/res/images/gallery_loading_ani_30.png new file mode 100755 index 0000000000000000000000000000000000000000..ac0bb550876682a642b1e880bf27e9847b59428c GIT binary patch literal 5600 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_control_ff.png b/res/images/gallery_video_control_ff.png new file mode 100755 index 0000000000000000000000000000000000000000..e0a49f1e6abd343eb0f1d870f8ff10c1fb357974 GIT binary patch literal 3168 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..93aa2be67da208e234e85f2665fbd742d242f6d6 GIT binary patch literal 3185 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 XC=wtW(Gu^i00000NkvXXu0mjfDofr+ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7a0428dd6896ef9c30b8878439012722cb1cbbc7 GIT binary patch literal 3143 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..af2b77608a63b624bccee8104e4fafb34312debb GIT binary patch literal 3154 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 a{SE;5EWUrtA literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_control_prev.png b/res/images/gallery_video_control_prev.png new file mode 100755 index 0000000000000000000000000000000000000000..029e57c596ba460726f1a34e9053ce09075769cd GIT binary patch literal 3175 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_control_rew.png b/res/images/gallery_video_control_rew.png new file mode 100755 index 0000000000000000000000000000000000000000..029e57c596ba460726f1a34e9053ce09075769cd GIT binary patch literal 3175 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ad63c27f03f66cac795df8ef4dd594bff2b52093 GIT binary patch literal 477 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg1|*MGNWTVB3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`!j8!i<;h*8O2%U`+OOaSX|Demmne zZ?geUi{wJ(l9s*;f>vJcFW6+4DjPVtzu>sb@JeCAB94x?#;ZhRh5pw(d{-=|6nng# z#iId%v{;T6?%_H7;ah{#mU-_(O_N?IzW)-^-Oc2Z{WolDo#O76jVw-ELX+n)&5SFr z++Qh?tKjnb zv1{#G(X&&Ww>(VLNjc4@cqPDrWgk9#CT0Gttwk=r8489oPSo`otdcd> znZWWhI@~0BpJhgI*_nRiR#H%jIW^LN(tMfKa zL2#|MeXZwIkj}t47uqI+ivIk&)Yp~&m#GR{2khx zofDsA{n)pfNA{o$oAaq(@nOwrt`c3x5)F#P{m*vaPFZ@2Eo!Cy`vZ%==e@FTTzu8~ zLGOHHrNjPKQ{}Q=boCtNY`ayqZff5T+bxY!{pT}X_B9><$L1U=u_V`KMQLXHVMn>8 zrKv9(1ah?-JIXXfJg3#ao6>SQ%XHh>^|?XOGpC6~9_RLQOe`4EoS=k8;oG9o(v)~TKl#U#hBWe-Hf$`1Y>FVdQ&MBb@ E0IZ?xY5)KL literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..60f2a1d8d7d5362a262d42ff6e728f0e1a584f3e GIT binary patch literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^AZ)_H1|%gL^X~vDg=CK)Uj~LMRR)HJW(J0z|AF*N z28L1t28LG&3=CE?7#PI!C&eFi1FGdL@Q5sCVBi)4Va7{$>;5n>Fn;uOaSW-5dpol+ zx7mTm)!51X1&3^-pp}>V2{y^4$|)^<7X)`PUJ-YE68HXq-T!Q@A08S(CHMdT*)Xy3 zawj|I1O_ZfX66ACU;W1xbz2M~wtTX#_{tH#K7ISwNoOL@-F|3#F-qTK%KGy2AHJ@d zB-WQUL3ORD$}MreW5NNqe)yhSZ|&&rdToo?1lt?6x?m|OhdkHsHon$!uG#wX`F6x>Rfy<}^{ocD7B?ys9*bC8w6{&-cx+O@G-YgFg0I`{iWa&Pm8tyP7x iSYibjRe!9R?kgIlgIPKHS>O>_%)r1c1j3A$?$-TbU|{0)ba4!+hGeur1_aTPnZ>V)M-UwQGsh+)s(tWqz~fdHuaweg66Lt#_B4eR+hN zNuYs&MS+2l!+`;ndBA`tfBWsXx1E)ow5#_-C%Yfnddw$U|Kyyfe=8!JT{73Ixg6d4 zOnP74swF2Gx;ZaKt>wH}cz9uy*_4Z)HQ(RA#juuBGOCwTvQYQTp=(~7)=xUKwROFu z`^;OW!bXqV8n5PU3Gtj&IAv|Dk)rjwX?Ne1PI}O-QXIMJpQ&))rEO|5qUGi>XW1s5 zIezEO^`6DbTeot$AG>N$vVLPo&}~lJEk|4A3hy>-Z&6kB{%Rh3(YyLx;WOQ7&(0tB z`gQ3{-L*f02F`K9Jy-uT$4ECC2rubfSttGbd6rK>Q}>kCnE_@=GC$XFnkJeox--Ra z7EfKvY=hj4y*D$@)yuSRHTT3$T({PDg_Wgkp4N|@XRH6}tm(Wx%V2K&;#j7g?z6M{R8G&g zy6WN4x_4{k%1JvvZds~5KRsi*)j~Uew;11jE3;KT9#7WWDtW8nA~3ujm%C0k&fdA> zIwyl%W#MIR5x=Q#ZyGtRe%tb_Xv=BlY&o|KY_SE3!$uXR@~`d*%hC@V0j3%T22WQ% Jmvv4FO#n%f54`{Y literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_delete_btn.png b/res/images/gallery_video_delete_btn.png new file mode 100755 index 0000000000000000000000000000000000000000..fe620768ef94a7aa06304abf92600453c6167de0 GIT binary patch literal 3458 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2d2466fb686b9a161f7355a83cfdd3316d298c7a GIT binary patch literal 3411 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_fastforward_1x.png b/res/images/gallery_video_fastforward_1x.png new file mode 100755 index 0000000000000000000000000000000000000000..c1ea6b13ea51f3240a8bc2f5a6365bcb4df5cfcc GIT binary patch literal 3228 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_fastforward_4x.png b/res/images/gallery_video_fastforward_4x.png new file mode 100755 index 0000000000000000000000000000000000000000..a1eeacb745c8620ebc766e69ab677c3bef6fa76e GIT binary patch literal 3469 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..628c8e71c13d4ae1e3560439d8105e999ab53a5e GIT binary patch literal 3239 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 Z2LM{Nz4>9>;jRDx002ovPDHLkV1m1Q4;=si literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_icon_mute.png b/res/images/gallery_video_icon_mute.png new file mode 100755 index 0000000000000000000000000000000000000000..e92f3763833a18986be58aa52940d55dd5b51cfe GIT binary patch literal 3154 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 literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_icon_volume.png b/res/images/gallery_video_icon_volume.png new file mode 100755 index 0000000000000000000000000000000000000000..49d9cf55656f52e769ca49acc82f394b8b5691d4 GIT binary patch literal 3222 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 IM6N<$g6y^NCIA2c literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_player_bg.png b/res/images/gallery_video_player_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..611a7b7a150eb45afbee504cf5b6ce0b0e9010f9 GIT binary patch literal 3468 zcmV;74Ri8|P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0008FNkl4I;!M9Xu;8?IVkPe z;#}yWw0}TBTQ>_;u`yFEXfo9$XB#l2f>i8aiMi`w-Zb?GMiXtJ&jSa~y~lmt?|q-= z?xx2xJT$~fk+Q5&AOZ9Pw}H00%N1Z9$N(R-)^AT@c#gtTmUR!91T>Au67WcC{qa;`3ET(x zw7Sa5$_fVu2WLw5dcDMAG4A&Enx$7->jwaBp-_mFWhH^hN~OY^*;&@s)^HrBAwL|) zVRLhn;?@@7NCc(S9ox2ZU0q$DRrO&f0G5}R$=fzAocqYzHtBTQ>^T9@Ha$I^1Rid0 zZ!T2Rke??^LbhkdD}K= zzZbX#@O^g|w*~OMy*-oO@B%)7N&{`zNc`O2H|aISC5G1|?q$MpTaOo8#1<*26jYRp z^1rM6YTi&Os3;fZqFj`Va{0|kL8TR?6{VnJi`XKzT!Ag(xp@AsDVKsuL8YKlP=QM; zN-GNdf9`X6i3BcidHvmzyN_j z03f5ao-tBi03?&i3)>ToMj0C$GpEl1JfTnsfT^je+W5)B!UA)1bCk>FGoe18kCBlP z1_uYtQf>UC2Cr^V8=NVXN~F_iHa0dW6bi?n!C;VZI7~bq$M5%>fzN5S~v2u uxVU)Q4Wrc!%&^kYSg*G6(rLp=zXkv<1XFJQXa2DO0000TCZ20y4AN0H88?2#4Rj>*nR>PK_Gon|)eV9?ek;poeaCQeAe#WS0V(!^3t zk*{&*C4{|;j{SPN9Q4k8qUCsF@S<)~b+e3suNfw9r=Uqi$e7CEXo@v&GAxDlcJ(Z; ziK~ZD@p%I%MU4x$?>R37oM4reZ}YU1e*zHyZ`2f^-6*SF@-U zWH^tDJpMfrH#_Rwe~#l^tLfG2K<@Sois1d9H`;GsHcd~judPk#cWK%vfcK{}r&M)Q?$H~-kB%gUnYDY5FJ9Qg1^6%v#rR%Gi;{I7u^)Y7kgn+!LN$dV2S0F%I7oa~=ag+Xb&E{)rW5b9Xrxo| zrvK|mk<%g65<*F$(MNI3k$WZ@;uLGin?S*u5plxZfgoXwCm&t7G0^=A=RcT-)ZXLO+^aV!*%kgM_l}*G80*HvqpSs zudBq%zug=ub)%n2RE76Swr{bK%XB@K6z}=0S#?L0GTFJmil>aGwCDPVdu7DUF-OkB zRTvV+5bbtKc@m5!m*Y(hgr%XS@f4zn>js}J!wjVYC2_cEryx&qkwLA%M}|LLY);Zr zQI-f%-U-IUYZB0)Xn2 z$sm_#ty%uI-mKCzs_2^RKbf$>Fcv+7{PMh%Z`a*e-HsntZuxy=m`}NBoHl|Q>)+Ph zO4}kn#L&=2GKcj>qlMVB*vQ$?>=?Gnbi)GnZ*lCsNJ#~$AL*MJ^ch|jmLl~c&zO_G zQl;pp2&8a`NFa+#3Q87As4WN<{m8^(JM-WQ9Sa%r)ndx;sihVr_`5&MIn2?;N<~p6 z=prwq+Iy_kc?_A=XT#4X@b{*^1(P-0rlck^h9qbqQ1rPCt7p(wu(I z*&L@*Qv4PMm(iC&)tC`pyQ-0|raw8!_A{p36e>(3U}G1U_Jvo3ISOPAo1`AxcP~jz zOSLRTl$w_6{%Do2*e%2tv}!k7orch9^y&-V7t}>34w2$F&8N-h3#kfOj8qhlD#T0N z^Euu&Yhl_v3-{7TAb9z7mC?*zyMxCIQ1c8vBi z&5W7~gbS1ml?;0a2L|&7Co<%+RHP=QH?uagCbJeB9IXAVMeB>|8z1OZuUQvZ?bWw< zMp(nF@+~c_ZEJMO@#Xvz&E?I7424a`$;PEQ6X?$$e%F7gFK%G}us%gLTT$;(AMA*B zVnsJ}SA5<}ZcPsU82sW~g`75Ony!@7niK0=>%*jYPjMl0D0@#Wxce}5TLNu43>}`5 zS*^d;FWmJIZ=Ur{7tM-p@(m+I$Hf?g_KT;fif3{3%=fjf>H8f$v0V-vJHltxWOeQq z%~tNo?>*d$ntL-K`$jm&O2&8Ob02)kbbVBf`b~s}nSz$qX!ODI>p}nE6q2J`QSB`zeBK$e;rORdDsyuU4woLKa%e1Xd}gFDIf} zBK}BuM&YCEN3|YtSF3?>OT4AtV}lzoaghpn&&Qt@&vpq>EBF=a)gab%i9TEJfVV@P zhY^J=#o~;jimB>`(Z+XP|I&bp6tTqfA6&!mCr|}+a(1G5Bu3>&qo?5aMQ$1&AViD; zU;RvKkqhAKmdO`gZwePIe%WG3YdD{!n8T9!l*>a}MX^;X>{ZgsCz>VPM#=T)9rT9l z)Bdst5!Dyno^cHlH&e*JxYxWaBefEvs@E*oLRt$=ijY^MAD~>@24lX$QcH7g5AF`s ze4Tx%kiGxra+k4_arsq!exw0PjMH+Xwd@hBTKP%9EY&JA>FvmSWM#^YvGpPz<0hrM zsI&@ft3aTUdx%}f*U*kSi2Dy}3##>q;2(37yS65l5>|_Kj(;QZ9IDJQu@y|StZB^8 zr-bJG*EyoRzP4q|y{;`T?P_uvb{%uw-dGUJv7t*XN!v)H^Q4`gsij@KSG#-kulB4& z+Mv*Eb67pR>0O(0W6OiWFGGV$YRLD@R;!39**-}<^{_2B_IR?}OFTw=PR>hLKiTwsoO4VCX_h!~ z`-d)F@2yW4_{{we4fd#p9c_iZf5+gUXi4zukJuiRP4eq?vh; zsgq@%d1~Wi^U-8Lb#!89A@EFh_7;7%tg=;rJ^}gV;mmgEw`BCea6CQ*AB+|MGv_dy zS0A+LJhb?T-fRCO)NgrA`!a4*sYPk%{z0SPLG|qVHB=)ivr^ICW5;ht`6Bt7NpEv@ zb7n=;efOrlz}C7T*W+!D9EG9z!`6V`ESD4GIWU#^RzjfHarg1jBFjA1NAP^8zj+!X zxL4j{(qez8zN;|}pN|?>v$>d?+Mj#=s2!6_7@gBSCW{CgzDPPsq=%CxW+e7U(nkKs zxuXh$t*H5&Z=V&yhh2sRa#%0&F8V82StPJ0<3A>cM$<>%rX8duw|P9vKi_Hp!CpDr z)7f+L(-(gkDZ9gar@I}PISl9iyG44FwP#$i|G%uBWAe^q=`TFJ-uT zkB$7-WvOQ$TY(OH*=tCZ90EzCVIdOPPqtu;*fJ~rivQS-utX^EMgACBMnv{Y<;I5G zFrRAVj;70Pw5`a?b$0V(fHM|wNwv^bJxmZtsB&%_{`d5~Am3{?0ybbj&i?F^TVe6QD1B2Lv0SfHYCl0_A zJdEG$Z<29AmiTdVhlhs}nFYa1wx&W%bf@i>d+&MyALM=W3=d9AT}d^s?V~U72?`3@ z4|ro~Z+|&T2{;Z#CVkbdpUWM_wt<$_>_sxi3di^tKk&B(U8G}Pym(Rg+h2KN|2GXbc4}dBb&g{ z#w*!VaA*q48FcNHGYVS%qLl5}LcNmRRwW}VY^eJgQO)F|9_qVrc&$@1xy&1!gNMz6 zTXLZ}E|ZZdE_&buqG2y?Ox!0NTWuwtX3|K$%nlxq1UIc+=ueby>)Ziy;ZgnFt_A`j zkX+n|d(%`us?{4LQOxVfCx2m@H?DSpwCF&uJ`wxJIFv2=<6X|d5~ZfOGMTXatJFWEhD>+9=m zI6mhA_wZCz#@f5YWo2dWMN+LpJ1*ckd! zL0Uy99al7^O)bTS}NMt&TQ7!2wT(VyxRPaZ9vq-Zx1`|q^0(xF~d z4P?w6s1)C@=%wbd?hyEgX5F&!M;@_rSr)~}lC8(z?SA_1=`~x}&Fnt4u^6A+`l*|6 zbm!@7U%T~eLVth1J^rvN`Na%ulw&QLYfTF>Rl&<78LrI@{)Qwo)hEVkc`FXuh}k|4 z^!AhgscqZWWC|)r+8!SS-?(+ly{4vy9LNs+X}(FXM|7v!H>crh3=9ms4D!dAaXgzX zo^{VZ{&j2Ao7y2njpW@UyogR(@*_DZeir=77pq0fZ3yQ188VU3P6`J@1FtfkT+BJ; zFf^3Hp%zwyakQn7(B>gwZ+C0La#~%fAr`4>On{Ps)y`jiuCN;@hE5`f+HO0%FeCS4 zpz{i=P0Ae)<~gmIUqD^KyYi=)N3C|3y#^$dzZPqe(uzA98yjBq(0fuv*IlB)1!mV9 zgE`)unwl~Z=N-@k1kz7CXJ=;(TTBt0BAV|;-4YTKT>0CV+@p3nIy%y}F302R84fEU zzUKtcrhC2JH$APV_9#HJX8Q4q`1tt4U3iD>ny zPx}a>XbquEI$9VhEGI!SS6K#e f`M*TFd!_^$Jj;Lk9ehu|iejLrZLC$H=@9xq^Cg&@ literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_rewind_1x.png b/res/images/gallery_video_rewind_1x.png new file mode 100755 index 0000000000000000000000000000000000000000..31f3696bd52089d164827f3974a4f3836e3b1b3e GIT binary patch literal 3269 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 WTjE?_jqua}0000 literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_rewind_3x.png b/res/images/gallery_video_rewind_3x.png new file mode 100755 index 0000000000000000000000000000000000000000..badb98323a27593231f5c49359570b8b75e2f977 GIT binary patch literal 3396 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 a&jA3nNmhT>g1yE70000ol8Fe literal 0 HcmV?d00001 diff --git a/res/images/gallery_video_rewind_4x.png b/res/images/gallery_video_rewind_4x.png new file mode 100755 index 0000000000000000000000000000000000000000..a85551472c36b0dfb66f5952d392ab77b83f4f77 GIT binary patch literal 3464 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 N002ovPDHLkV1gka2wVUF literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7354c9e0ba511d21f78387ae11ea633cfe06d710 GIT binary patch literal 2840 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..eb9b26da3e339845243d8715cc92242336e4f342 GIT binary patch literal 4786 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b548ecd5006d393ed4fca913b3e677b8f9294587 GIT binary patch literal 5195 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 FV1f}b<(~im literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5122b35a62610af6238031413d71c7569a6fdda5 GIT binary patch literal 3798 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2e469177a32a0e3b75c851471d71ed89e74c5da1 GIT binary patch literal 3202 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 LNkvXXu0mjf++%R{ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..52b77bad333dce4ddea074e4d546e263184db22a GIT binary patch literal 1729 zcmV;y20rcdAjX9tBPwVTf)gDu)9LASa_>DK_5SQWbW=WbW8)hKk)pRXX#mvrM_~FN2_}=cB7PuVlTv+k{{Y+tZSzdNT8_3DLz`Q8* z;Egwc-<)lM<$o@OVtYBvw-MsFm}N^;cfR`1-@a_me&Hv-KC=SDe7ffOE?&$y8HQz} z%U0a_#y>V+`tI{z`_-#wQeah-6XgY=D2M<8>^Ks$HS*#|fBVH3*Rp3``tkEGyj-3s zf#p13@_9j+=LqpASTp!^q_J#B3&p!?HFK}mPC;Ny*sB%2NOUU105pYJ7qYPy$?Cvg)@87?l_5Ms`b92*X zvzd8?DG1D191H*>Q=aGbI``Ilu2+HXPEiyHvB>NT++XK>KBrfKA%yk4vbg@@I`@m* zUA>-xlIlSjiP*RRJ6CZn61aOUFN8p^0z(MeFHD5w;6f7djkMGpX(P77G23)Z33T_1 z*W&w>&4BRH}kK5Op+XzKmHb0tWVx&fGzA|PaH*2(7V8E*RGX7sn0(L?lA*9 zX?`TPUn9n%j?;hpqs$2*43mKoA+L~xq_~t;MM4L41Qf3UI-)`iW$k0B zF+Zp=N0WF>hg+B@Ay5K^cn-#8qL$xo>oOZs+m=|<7^^u~6E(9G;y6*eIU)@IOhj_r zoy;A%y1$H}W_vd$?5oEZM+irmBlqD2A_ots7U&(f9UZhC0PW{pcYKr1@r9#MOJq8o zhTYxWaQE(AA4Z^ohnRuww;kPJB0ATRu8J|DeGUV3;w+5gnve`xKq|E-t}4s2T3=tU z2HV0?6*I7x8~TnmBXZ)z?%o(OLmrS-Y;A3Yot>SkD2ibO;zFUKp3wbdl7<)9?5hre z26Drx5M#=+)PA{j>y{682D(?+QGsS4wMa5*q-MLT(YJ%{xuiH}cN{{B8N5w0M>0Rb8!13fbX51@b~tSt+r?$xe(nj$X@{a#t}6o5PBCVX>Mkdr4i%V%n4<{D>WV;8rJbRF%o0q&kf@E zt#d^>AC)%8GH}7P5Hibv0;m8VVhdM3T6$}Hw|J&3Fb@*ZaQpq4>B#=0biF{kQJfQDB~?)4wRB|y1^uI63lEBm;j@Lk^#nPBPw=4Kme)(c{70i z1xAU>fJJ#2rx(S7$IRMGK(=gD|5JX>C;o!%Qg1s8p~z5g3{{;`B%9UF+WOvG(3)pYxq>-NMN5 zz3bN6tpxyJU1$iEp&Rk~*UUusjW*C0=!PvYjR_wVCc#-OF$7RJ!bAue%4a1*42Z?a zP9K7N0l*OCMloR~J&eQ_^06#E1}o)@bZh|d^_PlR>@)~QCPK+v0U4aV-3ubQ95NW~ zNypPgK~M@eL?(s~%EF`AvNSf41N!?ReWfIw03U)`NGYEukdUNg@PjT%H`j0DK;#Dq zoJIzJF~y`uB7=lt2!4-mU~Z$s42wuOTvk>VHp?9=6er^dL?RJ~cf+~4x#|$El57FYlDY~c zJ605^kc2JfieRo#fYd9p5``Hs8PqxbB?Z3dldM4Uu}r#x;iN1Pj)2AMQ(6Ji>Hi4<#Z6i6Is&6h{e#yp<|OrU+r7BtNudG>%o4DnP%0VJDPXx=4vFX!NO1S@A_mfYya@yvf#T^A z80bat@bRI!;{%DFD_p9Ooxz6$@CujnE0?k=SKkVJkuEY75_2;lPOwCE8t2m45~_+heHmsY{yG)Oh&|D;bzRxpDet0+Dfe&C2!pg`jEwfwJrOf$9B&@G{-qjgUk{7 zzL^aMc_!9QOB+6`;d=d{o7)@Q8b3OIbKE9=o~M|XC)cY@EfsYVY44Oacl=$>vrFmO z*^jR(YB|g)evtAM(08s49!>FRyG2Wc)c2RyFfXQ!oO(NY_eRAFtW&3oq<|~GrXRBi zKqc5zlp*{Kb0hbH&A`j#1CCsd4L=WYG{P(7IeKUcm|M(Uo){Y&TV!J1HuUuTym_qF z_>SSx$&JS~-iG4u1nZi2M-=tzPrTn?=U-GD#dH=0WM0ihX=ey zVGQMeHBmb-FyO3?u_{sYQyh}vveDDcvm-e)AfSP7mK1fVyy*dL($) z#u+RcO){SShv(^^_V;vky-D%S-XfRFbESjkS35vv8{^D+5&548tz>d?a-s4F8iN@# zs5@_BC79V6bkZ#Q@e5$iRF;#Yddl-EdRTO%{U)He(0~~Jtg|jG0M(|YYKXK(6z*nC zP0e?%uC9Y>w|K4!^<#>Sfa&=orNQi;W-_URSzd7RTm>4@yW}g|dVP<0lhv4}!xe+U zobe8en?O~DU)pe2)Fd7r9{%m|0CgaR(&u%(j!vh`^SQl#M56ZCnA&^he9>Zme}8hp zS0jd1?+}-4^O*Mwlhj#%v~zG+-xu6{s@^9#(fPd;Ho2p5adDYdLe*O=4!J93;MOw~ zMo9QKVNuc1H$QKd$1oV3@`MDng{k)TND6F}>xcL@Qn@&_t0L?e7DOhR?%A`)a!q;O zaC!VAbO1B|(G5GT6p;!}S=%>VyhTX=JoT}S?CjJ%QwH`#!JS9>C2MH{xO zY8joN!^LLJrsEnHH2RgH_JG42NPKN=TxmHyHF9Xq_DXYej-R)8L47;`#ts#km5(aJ zEEv;M*~M^122ouNUT!q;;)XT=Zxe3Br{zOi`zu@e`Y4Wz8Qi%LP$w*ak0!-;c&cu*A=tfp|tf& z^IlcoOsc=Fe-&6Rv+$p#M?_erk~8muFESS>O(E5l-%~Fh1

jrkMU^k=Fb-^qFGn zv{e>EGq1&#m6Whbm+Y=Kq8tMdG4}TMgT_NDJT11(5P6!<N+|HZy07Jjit0G3&$d!0lC#rO!$w&=-j>(W)P(-)Yv1FkpGp{r8IuOu&{7BBP=*dWmM6-uIg;zOkiq{WrBR%yzLD-?!AMf<1FIu zGOMzGA4{}5n^-kk|mva?~t;gHQ0 z^fsPp$=A-xZR$ZCj#vgdU$>hq-(Ip#0OXeK=k=#g{qDrd_-PU8O z2BQxK-8r7aPIdN=wfCHRe~LWz%lF~8Xpo7xOxmhDU#^e2!xlnQo`j6K^VgW69r;AcA@QCEJgs( zvC$MZi7oL5lLUb(DHyH_j^L|=d@6wT-jDH8(sTkM5awc(q7<==rle!v>e6(3{WTGb zc?*GsbnNe@V%QvvKO_Y)6aop)C%KU^ZmtBfD~ak#-G^}|kx4|dGm+$uCzEItcN&R| zdG}y-(WF2EEsPQHE|%^@$0otBghnJP6bgdEg#bwtiDW93N+dZGot^PI1YUMb40Dxu zvCMu$fdR_+Qh@{(Kw^wuk;{YRFdeIN`g;l@$$MF`>|L331tTiC5+a#E(xl&9}uMZ`m`Ab1A3`rv(C}pFHoFoW_WJ!<& z;~!2TkTKB$F#suKZ}Dt4jU|@BTrnSHG3Z#G0zn`EXuj@lOhy2i>c{kOCzF|E4;KoV z>K+h4^7r*1`!c8-Tn5CKi$F2F!3F-{`fkeAkAg^|i_8F}f;12akU}EN+mva7&Aqs9 zs`riyZ0^NlQ!Y_whNy4se>HmJN;f_F?fbFS9o`Q+m1z$4L?KR+fnlqa9pwTpn_2VQCwowNhQ`^@hvti? z-!PeLfp-s__gUg|LQBs16*0oE7yV7tS99JiVDBJq_}9t`d2UAc)U)qrzRQ^LG28cI z>U-tLY-PsF*yEnrIF|X8S5F?vZhia6bMuDu-G-Myq_PQ1mizYe)#nayKBK{pt0{lX=!?BM8pa^EUcJ5bf-Ug_Os@3X+xwO~5_=1q&;1_-Nrb<>F@7|t-nky}~aiO7$2Na4|-T|xYQG4ST zmotC7+TOnQ!|?EMYS4IBWoVn7W1+Eap`v?r>&5*BnRSQeC>2>&PZmlRA9P_`Ij71A zmjCRktriG{E?VVya8_Y;&k$40|7=lXj%KEo6lR+4vw6Opi%t@YgBzQgymLO;)QYaZ`pNCHRU)^(@Q_$=Ya(T&ma{AGuN3-_!_92l#&vZ*mOY6nnS(|GV^U30& zrY_6=Qw^1smBM74vx`d=Bfe=A*?w@|Z!9+?Ea>Q)t;(zkpMU)&geMRPnmani*_wMC zYm3sOMiGGBR4Q_z>FzakZ7ujHBzH&B88bwm?^3!~KwR9!L{3gl_=;c@AYopoeEwV%Ntz_%))yl+Ler)Vm(7oAxy5G&0k` zQIqKN#+5aH{wC$dp}A!<$D%s}M(NyZ_yb+qmRG*B@>Ca0ZRqpzVZJ}(_8XE3= z?dZ%HlB^x?pV=wDCJGGjhpMPa#1x`>hGBe+pTp6NB*=BMguJLmGAvRlXib5R?4hmXneL6Nama55- zsXs0sv|g(6fuMyl^=RbXYCL z9U(+_YLii8yTV@}n5YZLajjN+6VuxFd7SYbWwW6p%d4@Wq4mMQz)zBgEs@{&-c~f& zn4gL&>wEI4>0SdY_;{qW)bjPn$OyIKegewcAU&6!k4s|-7qmeJyh|o+KN`&>cmbXN z*p5tJ7iL`x8rCdhCL@IxZOZQ=v1rtjZ9t^Wzhh!zR?CKN0MCpJ&zn_uDJw28RVvjR z+mAj{`f0~|qbN7N+}pLbj`*y|MUpTn6#M(vwUuQ9c8I6AN+5Z7?8Dbj% literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_icon_hide_panel.png b/res/images/mw/T01-2_icon_hide_panel.png new file mode 100755 index 0000000000000000000000000000000000000000..df600e10288ce5d7587199b90910aa9c84258b1b GIT binary patch literal 1724 zcmaJ?dr;GM94~^5A&A2{0Xd8j0VlKxw6qO$6etLTLIpfPaZ=h8DoxV00Sa#FfC;F` z#OWaiJ|+h^2Z$U#rmVa?Wr*NV@qvn?z)^WkoR3Y8r3kt|#*#~Zzu)&hpU?N1OP(lf zy`{OGIgLiM3=R@RP%A_|4rZp*ds|s)6Sdfq0WoAGAtTeoDwO6cB@$2|7!xO=5vW+2 z{$(5LO`{ou@~9XxMi`1n2#hW^VCWi5NwH}(Zy$|PEJ;R5AOTI3<2-Quk`@HyQXUx1 z5<)_yKbj;D%21(^8DUY9jARK{3i^BocxwcZb zY3dogP>2NMYEq0#&|m=%q!j3KxfJma6nJ{Teq6r*4jYC8U=GCOa#&0z3~{(jKY#8V zS3pQoFcc@}xYGAr-+8%)QNWaxX922`r=rq86@dXWDI@avV`0y$H_MgI9}8z*E`th& zVQB2X8a-#CrpK^-H@4K_-Qc4*HSH>DtSc{ea;dKc3KsZAY3`3icZRI+wRyPmPOGBO zv$ovS-#Vo#!6iR4&*)}WUqHCS^RX*C`4iw#lkm2VgBojIE~s0wq$%q=|1j($ebcu3 zuA>6Q)0(pC2QP2m%eqz7A!CEOto5mNULND4*Iy2<_+sP6v9&pkygw?<-rkzt%HOs( zPF_B-SibcMv0~9r(}|6iqQ<(XIrpFDpFY2JX68m5wsl!0 zXk2JgUQyxIdE-XhsVKeI*y(S0xvx$XUzm!Hr#Jw7~KOWAfbk9zf)U3={O!(DqQgw~+= zK%dnVKlI{7D(7SKhv`oyCPX88y>&rBfzR(Rj3+E5%RgThzdQe#;_IHD@B+sEgzL&4RQtz)C3Q!F++v1K6Hlp)A1 zSj$(JOpJ^uNRoWsWGazJq9Y?CzwfQ$d-M(FdaPbF-fiHny^|^6Kg7 z(e^##ow0gTRz{DuPENJ8x3S5s=$03B$kyrG2PV_2Yih!O9Z>xp+M3u`cwtj%>#f~) zf63Sz6Bp-N?7gtQ$s&%)VzJJa;qkI~`QoJgkwcTO!H|%U9dGQy0PW+N<|F3#`OPx! zhR)C?Ya_e#8pq(O_V#v_qxIT*StoB+W?HR^58PDb(coI{w`30xURt=F>3py)Xy;C? z{LiahT_Uke7MQR=>bXCuoTk5SneF84e6qj4zx>#0CnqQRO~S1`M<(mMZ0q@{`z4E} zp`}H5h0C6jWhY$B*&L1wrcl_|77x=nTGlFw=a0*hj7HAXR#jCYIW6Mh4;KxvSMI&C zP4sFM-o6Ho&M?oOcIo=+tgAM5%a-~Q?{B+@qc*e+J`oi+{53rg+HCxK!)U;9ezKX# z0@Q2hZ1cDs?p!;t857Vtb`^EV9(W;$p!)iOAV*wuxZC`AcS(X{ULNx{n^9E7bwx5C oEhk@T<8|SuTD!bLray_Nd7N2v;7x2si{XC~91td`_KVN_2iQ2S6#xJL literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_icon_open_panel.png b/res/images/mw/T01-2_icon_open_panel.png new file mode 100755 index 0000000000000000000000000000000000000000..df473a60da5351c5d58a36d5f2d0622d8b4abdc8 GIT binary patch literal 1738 zcmaJ?c~BE~7!3sKfg)6jf{1Id*aFFB!<9rpjvRy%L`VSzk&tXcfX&9uN&+-fP^bzx z9)K;1WjM+ql@5cVEtfcIK|G*Zs7RF}GE=Oepn!Px4v{K;D2_Z&0@z^f?fOyB3oo*!tE1VmFhoUlEBgSBoj}(oC0RbYG!y&L( zn!KkS_8^hS6on`Pj}Qj3B`87@>oGJfq9WKNlE+r9N-Rl$aUd3!E0ms;(S{ZZppbe} z!d-=Qp~?@AQ~0M~aA-=9NRpBuVM!@ly#Nm_n-D-?TnuQDM5UUo^`y+|vWdBV8>9fU z5In(?@-C?eVKCr_Vld!Jqf;exHwbWZp+PQmmJ7=XV9+5t2r)pqI~Ag{UESGq2$;Jl zL^Mn)V~22fbFqk(CnXNYRcsK{Xf!m9GY!S$AjD#^Ksp0tFsKBAs!mqoVl7pvwwqVr zz-kGmP~i$x3FsBYvFKjhlR{+r?g)r#K~|}rD-%&LP%Bn}5RI-s(mYTo{C_BdETGkR z2>d?Z{}fh>l2tGm0;|!zn1pDY%uXLl#rDHsF^*y)6iuA3VsIRaqv|+R1^9)!(jXvQ zp_HN;^(_voh!wj~w|#)p-J+cCn{jz?WfiLb>=!0{1jd;bc*z0KNZE$m}n zTz2?y{pP2|OF|NU@jtj^wQ#ug%Bij?yKC9eId7L;Yp{Pyj%H@Bkqj6oGPT=NNjY2N zR>zwci#kjE&A-2>D>{9?dqgR2hzXoJ{xy90){Ru>@upWN9wkTHS=#*k=d;QWz9k(o zunR8!R2XHb=(k`R+-h~+JW*n^(X?{x^&6CG`Ptba+sluh7e<`z)=XL1na7UC!P9rT z2X{tBYMP?an!AHN-QDL91hJ}r&90gpG>S4<^UzGE(;ZVWqZnhYF~L1|?u0&HpDxSN zeq!#u#oN)$#KzznFtoR~4-Bfv4eMK#@mphK z)CQzEo4hIgO+kUx!@j=0{N6#iTwV>0KwI33((1lE)>0o(km`LS?B%7<-1ZkK3Pn{_ zX{p~wV;vnGDK@7A-A?_^%Qcg0T1PYT26m*SooX=9hJ}YuUVECgP z;MT{v?dx4Gq=B&l$E%@{{a<+0ozps5-nX*0&Kjut#-s47{kw*JywZmF{ndq!DmQwo z%AHgf53RMe4T^bUVw*9IYc%U7Cnk&b1{x z1HHi`=B4Rw2Ls<$?geR^@8IYJ>-l+#!D$HE{#u5Ps_}7U7elJ!qa7S_i#R+j}N)G)1XOi^Y|IK6q^VL zvsjhsd!I}u*K#O(#y2nD>CpKC0GUCpNjq{jop74z?&;APxZxn| z^=)p;>vjCK?^tGL=H%4z1YU9?FZznrE1g5>AGIzue<+1 z^Woo+`DAt7iDgw5%_Af1pzX#Ud7bgL+C1ZTcON=q5kng9FW62tt>o+fE&^^4r^YvC F-#>FOtwjI; literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_multiscreen_bg.png b/res/images/mw/T01-2_multiscreen_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..e509e80ffabfddd245030d2ec2701124f504965d GIT binary patch literal 1617 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 literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_multiscreen_player_bg.png b/res/images/mw/T01-2_multiscreen_player_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..17b8cc82e903f5ed1bde0644e2a5e78e5838fe6e GIT binary patch literal 1020 zcmaJ=PiWIn9FAIa&J8@M;PCLw1QFIGFH6=XE{?A0TyZI-tF#9XX36Usy5z;=&1O4| zc~QZ`@aj(DN%7!Khs=YAi6D4XJSoZ$VTho&;Y-(cJ6Ini?+@Si{l4Gt{ob8I{&Iis zKrh2E{kbW~$`B9*DDY6^g;Wv>s+>{<2wH=s(E_`w7WK(iEV|R!8X>;Q^NmJ>YYcNZ znB$?MD7+x@qL`$JWVq-NGfH~lU|T^)p%pkjaj*wsMROJ}5RIiycT;fvj;t59%0vss zN2bq1PKZ-#0}bQvg&mAB6ZbkaqaG2 zp`b9%ZIef;ruy?iTz{a)~T)35t;eEj5a?V z{cTr|aL*q;c=@=pedTKT%rWuom-36%m1|pTJ3o5_20a=`eAqc(kKbc1o7bOCTwnPM DXSP3X literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_player_icon_FF.png b/res/images/mw/T01-2_player_icon_FF.png new file mode 100755 index 0000000000000000000000000000000000000000..c53ca33e4b83a502ba151431ea7992905140c5cc GIT binary patch literal 1330 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg1|*MGNWTVBk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh*)icxGNo zet9uiy|1s8XI^nhVqS8pr;Du;&;-5A%oHnEQ&S^zBS#k}R|`u+Lsvs5BWE)UH&X*= z6H6x-H%mj9UYGpj(%jU%5}4i;gkD#idO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZUD} z(>$o&6x?oc#;I2y=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6de?#;J_ZKHWu7jM zAr-gYL^b9%JMjE*;W@zOYvy6jA-zTV0`Ci!g~BFt7u;QNvms|fj)0Zp&4wS^%U20x zGTyiU@^rGF*Mv_$-h57un|ZY~*Xht57BAfN+m+FV92juE(KFqqOo38uuhU#S5$wmG?ySg01 zPeeUBd7}TooA>c;`>}t~UYu`fH*O zIR>$D-r79jvB)nMC5}wal%T47F46ph-VHM*&9*JneHPVvp>|Vg>UzDVfb+tKZx_5& qc=n`=d!NDO{l``)z{1jE4yy!%wIGMMuhl$oG3M#&=d#Wzp$Py&c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh*)icxGNo zet9uiy|1s8XI^nhVqS8pr;Du;&;-5A%oHnECnGZ>6K7{9R|`u+Lsvsfb5|25S4Sgf zb3+$5M?+VbUYGpj(%jU%5}4i;gkBe%dO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZUE2 z(>$o&6x?oc!l_pu=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6dPeicZUzR%W1cRK zAr-gY%xuhUHV|+<_=(}}f)wUWj5inDRk+#Ucfo-1B+E;-ROTBBIRcv)r7skhOj{(@ z)O^0-#oUrEkqNc$|I`bJ@6VLV_k3t9z-$OX6O7{EVfILpD*j) z_L^{qv#!zseDaD<1oLi0Gp%gZKEZ!g#c6?=r|Pb_i$xzsI;Y(!=J94exx{9Y{KDn?K2ILxz_^ ztdG}=^)kjYxL)+{=jiJEuqBAAzEe_E_;J+7DGp1HW_aHI;VtkhP`p^p;CDhjXTP13 zPK(mKXFZNFNks0azql{R^5@x?T@Pq%a4k3+(8cSH=gsmPh6 z_V#YHO0*0Ss@m{9;X=kOkxPzCWRyD7-Hz(jI5CDOcv!N}zrhg7F-h=mg~o(S#S)i} zsI#1(%;JBn@`PYbQGu$y@B-O}5SQ%ro%4M6CtqIJ6#XH763-C_2x|GLe1KuG=ZUZ7 S-WoSRrJSd$pUXO@geCyLUg0|c literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_player_icon_Pause.png b/res/images/mw/T01-2_player_icon_Pause.png new file mode 100755 index 0000000000000000000000000000000000000000..367d26d9a8d9f49f0c16df33cc9677607eddf1ee GIT binary patch literal 1092 zcmaJ=O-K|`93L&pB4sIvN`qq(05ZEO$D5$7I5oCwn=&lB}4ZL~(_xSyO|Iatlk~~zt zdDmuwAj;#1{pFX#FRigL;Bk zN9pMd$|Raa6&keSVQAN|FqJ&_0r9IhNsghOP5+tQe>hS&qzq6!vCoU1CaZ%KO5nFqK8f5*a3! z%h9?0G_<=JE))teEYI+~A0zxuzljvrZ#vZl1sOQ1ty@TkCg~|Eov;suDIDoa3Wl{R zYdZNd;es))Vlf=edMOoviNyb*hOvrvPztQY`%hsf-ERRV1svFCtGIDp)t)O$jM_j! z&`v|xTc~1779!|mp+!bp12jjr>81vA&N4oc5aXtU6jKFpIZR;%TGusE2sH(z7%xk) z0}+mkagr>sQbcA2c7I3`B)-6vq1tBv6BW4H8aGyy>y3h8Vb3zK^^-trvY|mPr!4Bl zW08vL<+)n%SfWL_3=W3z8v9413s-o0Jacty@nLoFfr+Qx#$)}sqVfrT61U@WB<(JI zTA1B5#QI`$qnV+T9r{s8Om19=T-w(@d|v)Kv)k8RKU1}7WMbT@7@VYkT_Z|L*MDfa zzm>oFW_Ib_h52|*|K3}|8U#<)nhll9e?|5@@#PMoLZaxK0nbsKKpQN zf)8BZdS!ZQ$JHvbamdpt^ZjMK=xKZ%{c+^<_C4Dwe-77upE&hs>E$7H@qMjF`I-7$ Zx`jA4dH2<#@8X>IuH&(!JSBCU`3=PpVsQWf literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_player_icon_Pause_press.png b/res/images/mw/T01-2_player_icon_Pause_press.png new file mode 100755 index 0000000000000000000000000000000000000000..65b0d49bc4cbefd375bb911accb71356c243ebae GIT binary patch literal 1087 zcmaJ=O=#0l98Wj*i31s4w!w_q6qz<3UArz}wQHBwR?L`Pp+kk4CU0x#k{6RVn+=3b zK^Z6r9tHzJ^dNZ9g9pJK^dd|YKT((n;z1BL=D{K8WxjN4Cuj}4y#IUre!u_cn;RND z($v`6NDxF*G9jk$?sr#xE&e}o+E(z^f?^|R7>=QWYyl#o!Ym+@x;ze2Kvt*DJOzCO zQB7&-5i}wl6BMY^vWuY|-NbBy=nFfhtmFYAvtV2^Le#g#M--{4Au1D)Sjij!IV~}5 zf#K=Fv@)Gnc$EqtCi@%#3+MpJq@zz5w%~-QqOO2#_nM)|A_V0_)Mij4(hxZSEkFin z)~m2R9NFWiIX}z$`9q|SKJwu|gmyupGJdQP`WMjtMC-zU2#_LR1bRQ(%}v zp+Fb9X=sfz9MAI%>tlRAFGhInDFexl*RVTE3L>x-OEZxM4boMVvv3lHC>-f#3c6XA zHSDc2;es)aY%(0px+#@_lJtM5u9wj^N`dWo|0!&zr%b@4fDI=t1vhT2!*yi}0~U}G zw9*hxl&UzCg9zF=Xp#fN0h%K-nxVpiUBpY0kTh&08wyB@Aqp$dnx+c=I3Ht!aXuRB zjc{Cyi}F!ltefNFtl#JF7TFS4gvz823{>K(+uTS+t~(04i9L(J(#`@kZb6+arYvZc zV+mH&+v2K~W9hBPWpFTz+t@!EUAn^495zdAoIUALF#yXtn- z?;`t8nhOV)?_5w8?>+mnaN^yl)zg}2&x5wXZ2bM#>Nh{;SGA4k&$Sy%>z>i0d$ig> zVi??9d@$R7e1`B;6(#;QUe+wE&u=k literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_player_icon_Play.png b/res/images/mw/T01-2_player_icon_Play.png new file mode 100755 index 0000000000000000000000000000000000000000..4ef93d9b645ae235c1f51694df9d64f1c51e40c4 GIT binary patch literal 1324 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 W+keIdcZ-CAN-R%TKbLh*2~7aUw9>i& literal 0 HcmV?d00001 diff --git a/res/images/mw/T01-2_player_icon_REW_press.png b/res/images/mw/T01-2_player_icon_REW_press.png new file mode 100755 index 0000000000000000000000000000000000000000..82f9b5e7258618368391d4e88a365e3e86b1c2e8 GIT binary patch literal 1346 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 literal 0 HcmV?d00001 diff --git a/res/images/naviframe_optionheader.png b/res/images/naviframe_optionheader.png new file mode 100755 index 0000000000000000000000000000000000000000..e90f19c2d6fdee228d03446b71197bbe1b89ae7c GIT binary patch literal 2788 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 literal 0 HcmV?d00001 diff --git a/res/images/option/T01-2_icon_controller_connection_info.png b/res/images/option/T01-2_icon_controller_connection_info.png new file mode 100755 index 0000000000000000000000000000000000000000..ac1beece300912cdcec524deb198e3db69fe2d83 GIT binary patch literal 3308 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 N002ovPDHLkV1hx&tyus7 literal 0 HcmV?d00001 diff --git a/res/images/option/T01-2_icon_controller_multiwin.png b/res/images/option/T01-2_icon_controller_multiwin.png new file mode 100755 index 0000000000000000000000000000000000000000..abc3dd42d8cf8e9bfae17b429ab921fb1cf5e932 GIT binary patch literal 3137 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 bvvC>##ny*}^ODgl00000NkvXXu0mjf$4kpk literal 0 HcmV?d00001 diff --git a/res/images/option/T01-2_icon_controller_repeat_off.png b/res/images/option/T01-2_icon_controller_repeat_off.png new file mode 100755 index 0000000000000000000000000000000000000000..3ab9f182a716235bd1df8106fc97c18a30d881a0 GIT binary patch literal 3498 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 Y0D>idHUzbeVgLXD07*qoM6N<$g1)nfW&i*H literal 0 HcmV?d00001 diff --git a/res/images/option/T01-2_icon_controller_repeat_on.png b/res/images/option/T01-2_icon_controller_repeat_on.png new file mode 100755 index 0000000000000000000000000000000000000000..42ea4cccd97659eacef9f11a5d398b120471f286 GIT binary patch literal 3480 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 literal 0 HcmV?d00001 diff --git a/res/images/option/T01-2_icon_function_bg.png b/res/images/option/T01-2_icon_function_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..7354c9e0ba511d21f78387ae11ea633cfe06d710 GIT binary patch literal 2840 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 literal 0 HcmV?d00001 diff --git a/res/images/option/T01-2_icon_function_screenmode02.png b/res/images/option/T01-2_icon_function_screenmode02.png new file mode 100755 index 0000000000000000000000000000000000000000..3a545b67a82b2e8324f0aac851ee74450c067a55 GIT binary patch literal 3052 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 Hu0mjf`vPMm literal 0 HcmV?d00001 diff --git a/res/images/org.tizen.video-player.png b/res/images/org.tizen.video-player.png new file mode 100755 index 0000000000000000000000000000000000000000..8814085e00168da1e7e966fa66fab3df6aa2f778 GIT binary patch literal 16946 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 E2lvm9WdHyG literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e58ce8455df5cbb3f747d6a851920697bd3b5541 GIT binary patch literal 3493 zcmb_eXHb)i68!>5?^UE2q>A+3OG2*#K|+&GKtzgYD2fR+luPdzib^jEXf)D7M|u&Z z_abnCM>8nx;g5S~-v9Sw=j`m+^J90;&TQOWGkrSh8`J;*&>0%&SY9FKDgr6V|6~oh z;#WZBZ(#cv0BBhL1PI7`c^v?#&Ap+}yLY|(g8UwP`T2tlp-`}Ypr5DrLk|E5p2k`s zU{;&#>csgYh%pA0VeDtgMhUirB%oMRg+%$N7>zJ|#Zzn+ZA`klWL&*P7}BI9R3e*& z7;QZDB*iMVjG4j2$Zy02C^3NDB21LFVkXV zPiObis)QDrTEHJ*q-=2Kdwk9h0#3r!)b89OP_zJ`;BgvCfMA+Wkm8QLWY~h_I)G47 zAVN^8k})NU70?Pzf|LSUdLR@wN5~2&A_JWJ-CS3IyW)Ve@Qd|v0EIot4Fdu88GLM@ zqErCP;(^ftyi|ee;d}AA09*=S^)&8O1}4P;DMK4i1K{09fH1^JQx8zm0#X*3=-U8U z7~tH?&mRm#DCAdrGb)Tl_2{FO5oD9|U)xs^N>Y?pPIzeo^3c^ak#0Kk160SQ=NgJusU0O%Bw23sKsmQc@DOp_jrZFJbcsPF&B}Z=b316E58FPXF_zQ;B;+Ao$ zyn(c3JPd4Yz;mD;NTM9;p!YddwHJ_yIE!i0m(D=fTd04f{Q$+6E8d9Gdqp$i9weQY z%wCi~68QdxdZI${#z>VH!*sF+v`32Y<2r?G=R+xp?hZ(uk{DIGTYufHYTByq8}IH_ zlQza3yA9VN$(Yf)1S$nGBn0fjt8D-`ftyVll!LhiwZ{r#eJ*iwR+aFRx1@$U$d&LE3tRCt+=cZ z6{_X2m56dbnC6>s+w(Yb+YXZsbLbn3qB^IQrfx8e8)rkX7@rSaRm>B#e5X*|;MB9H zqK!G{JdFwJl@-OxP+22cn+D6n3{Oppm7IW+mqBJ!8zN=dhvD(_tb4bYZ*!H(nc$^8 z9DFLXva{e-22~bS`rFM4wL4|l(q`R8+fy{Xc8`&;gRnj#dFUE;!)nTEu8g{j-BexW zxK^Ulr-ZAxQ3u)jsBAZ@3LckS~z(FtpNE9?a+0# zF8KgIH6F>HnSBeWV}};B#3j=udnqavKdSb6Lhmmy1B0&yzvas3t4n{E*~s6>|DM0_(b+E8P7GI$`{ZF*ziL-% zyNhdj6m6$$TLQPXb8OJ7!PW?VYpiK3V=BX&rJGe1d_#1++sA#uRea=pw>C*WQ;YM( zJ$FI4av(l-)pqQrH>W@U{QR$Tbqc!JDf%iNJD%{z?*my??y1b@4ZYmeeBO1GwJC{! z4>Jx=%C6v8`fqo7W3BSX^${Eh{Nu<&OhTM-M88C~hD1JB_gruDs!`B!fa6l=*fBQ0 zA-{d6eCF-0!mjsj>}=tHT;c5kTiM4W9lg*+i?vZrn!-#epM~mhbEr8Q@nM5s(oHhe zrsn&*k0r=TqRSqK#!rpF!WE4bHN|JuN+R;ud!fUf>Cr8vothLqfdG-FCQo~2w$Qeo< z@}`fz8~)?l2!+eKOF~CDt#EW~v`vg=l0OE1V^lg@9yvM-eY~LaTPI6rJ|7`%uKZTq zNM2N7@*x6UvL#|`_$c9ulqM58lev7A0`|P8U|$(^m1gP4wA7RUNF|?XIu5ag zSoeI|U+ocHf6?_Q;iDvPCdC(@hLq}Sw&K({Na+uloyd1lih6{Hjc4m%T%U4QRl%LX zoq>kFnH0sBdxe)f%ciTX~M zSMAtj*M>I>g_`=H@3-|uw0!{iY|~g%uSGxKp8dY#XbzXOUHIVgI|j?8!4?-^%R0l6 z&GuqaWHxw>E7q^CHFq}SeMMC#-hJ3}%yV;nUcA7bKC3c&J)8a!-PH7Zx`li1caDGR z&PZktip(@d;-L7~t!kf|Jj%Wd4XSFw-oTDvzhMfyV{;!|zMniA-Q@~v`YHGK#Eg9t z@m%9e%ZxS1+H}Hm!sFENw1KEu8&|n`l6C6qSYzfJu+u|2MtV-cPmlYK|2n}lrVg`A z{&r_upT6g2%LR51DNd(AXZ_d9?qz;|osiW{BGm$smriB+X<}IQ62w&p|6^k;4|yp&V34KX@|ees^&j2KTx91JI7GqKOZC4S91 z&%DBgZMY3BJYewK`^*@$G^Tr*u%X(dI^=NhDd?bnW{t(>lTF@R6(`@Vpe?nF^l|f^ z#+QwGwRi^~{BCIThcHj#CRc&t(A-gT$Ugh!w}}E}^||K5P(NZ9@pyrKE<8~9e5k*1 z3Msr>(`4S{bfmSTJq4YMozS$un4R34eer;REIJ&W)hCiiM-E@49w#$EuO;Uu_s7u1 zY!@hLC@U{(2A*%8l|hHyhlL6_E?!;q*K)8+hM!Dqe;*pn877425mt>?lhi7iG z;xkwOCfLou(i8wf1pxpR2>`z?uW%Cpo=5?}mNNjTmcN$y`aK|G|IDx&K37l?VQ`{Y(E*{j07Ec(g8ueQ31lR~X6#=h`RoFNWw;8}Ti0 zzM-WcsQFuv|01bq2l)fD8EsKw(wCe)8t+({3O!P8rl@d-5gaiM{;3rBrbQea+fAWyjGIoV!Bp#ClE%+nbqv4LFM~2%-Uv;3i3HzGQ zs898EJ9S8MRZN{8D9QD{_BUa0>}$E!g6*sTscKOK^Dr5L2T5+{D|;p^ETA7j%kaER z$hpYGz4|c$dXz_Y&bnuc?&8F!LWIdk%dp6Qx_bsHw0qfdj>lrI!2ub`IYYIb)~FQ^jjLRtS{t8rUhzW-2q^zYo=2RagO*e+TB)U literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..085224915aebd58521326cc2b9d840acd9c95a10 GIT binary patch literal 3972 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d07e67019300620a66da14ec131e265773f68aa0 GIT binary patch literal 4101 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 DMntH= literal 0 HcmV?d00001 diff --git a/res/images/panel/T01-2_btn_toolbar_volume.png b/res/images/panel/T01-2_btn_toolbar_volume.png new file mode 100755 index 0000000000000000000000000000000000000000..f7c10e8bf655e3d1ac1281f6cae558a4262a87cd GIT binary patch literal 3601 zcmaKuWl+?M_r|{n(j^iS%Uv2*x)fMqcZpq6O1fhaL|RI40ckJYun0((2m+E)(v9R2 z(j{;uTqJ+`;{W2_7yo(Y%yZ7n=goO$&diB=tffjt&O#0V02K|X zL-4nexgm``0f6G}pCSM3A_*vGFr7rj=VVrosK)o%0#Svxsimiv6wdu zIs%l@;5GIZwCXH;1q5X5_ajjsYr1hNepEvoc+$X z(BAHzm31M-U~+CZfR?n@j>GecivTzaf&o09+rdzKME0GK9o zFc9P>0N}g!kxGE0EKo7}Bw86T5&`HP)VrmDSwTPqW$1tesvCgz5n75GfRqvt(TNPZ z4-f?aR()JtzQF4YfL`Uu5c=am73~(}cTyQO&_-@)AUA>G_qNAZz9ZCCBO_9=_0*PvyPt_~IBjg!t~W-@-4p>} z#Vct1T0pp#1tUw0ak z^U)f4wXfm<;HcTP<10TYA;vLuWz^^9P~l27mj}Q&pc35yz(R>zNPnPKp_dc@lyZY1 z)iBnRj(Y;_#B3e67dj{|t)yPVxw|{zv~Y4e44a45{fZDcfB0}U2x2AtRS_i7uHzV< z*P3HKlE5a~h%1(qDI@HRqXS7q7sCzikEGY( zR8NpZit0w|gAI_NBRP*-(h+7VO$oAnfLO?7c#EoNa&V1~+*isvL}STAme(rz6k~Q? zqM31wxmjZ#A6ewyNabyfl{?bR$H^mlMcTLTk%)Ic6A|j^f`51)7?Kb@6r9b&exba;%M_d%>CBD!=Z4lN$2|?S{k#v3

4C=>~TIdB{A zW7R{K%9ccwp-Wu#6$*lkucC;JyEMAA5d}KAA1v2edcYL6%(cD(9L`kb;oiZL-Mk-$ z=U%>mG^byInq%b3O7o-<;%efCwYta24hke|>F#IQURq>Z{KaXY1rIhUoTr5cqZ%XP|C_gbZ@_KUGat;)^D7s1r9UNt^5K2>zw$ZhPF-kjcIF?lhg zrku=al~9>;A!}Z26WGy#XnfRIr)R)wMvPadd zn-m!z)VDkjGm$nfG%_$TuT`nUR`N_YS2h>lDQ?tC(kjoHMt4>JsPC^YZD6k6m?g$l z)w|ROTBB{4&<$Uzx(NZ(91lLS;`#AK2Qk!a+10u zj5Zpj9i0_ltG_#VzxydxFKbd2&4h0B3_XsFiBb<46iSm9%3|$V>}y?D^E!1mU-6$f z#b(uJb?%qo-XBOEJUxh5csnHV_I{4BxaU|`AL5(N#<&8-+Y}M!<%%F}gmy5xZi`FU zRye`1a;CbW(5DP@rYne&FDxR=FkB(lEz*c(Tr^G6XM6$SxvX@ql&Z9pg%;J8 zelMsd36U=oa)Qo3Y?5eF=n---9-1=38lj%4vq=jFAP^V6a*PUqSwetFFItN>H41{#l5jgKr7?5v-1@0}(?3-&F2^%lhS)YevS>+j`qO0g} zOlb_SX89L&kB!4U|?{2gkb(nD2*<2FLF{Mr|OWRDNeoi$v|B-6>$;bWE zpUODlv|)Z+b7(!H@!e1^oj36a902se_5dI_sIU=i>*g0WCizzE9yy zTku!%{cSh{0t3w{hbj9D)I}{`p(?6u=PdQY#k^9>#eKh*aDwoPgp0ajE6`JFGbmM;1?7{eCdsOi$%V%PqDZ`@7=5;7^ws7lSxJ3Fg;!4PKDo!^3#xeHu+Y)#gwr@0#O=6@xWRC$ z@V%Tz^3u|)3LaNGm&J%tyHVa8rtAFc!73(3;h?jry_u2m^zpp3qqL;YE-wqOcH8%u z-{X2Zd)V9heZ@sBPM%!scla#$fDYd+(`c{11i#|Has2h+RBx>KB8fRE>4u0f{rJ*W zToCvB-vrwtbu|INp9cUip#bpf=C|(vfVT($>{qlJ zyTf~4kzV<&r^j`sSFRW4L8KWhnfw+55k#b_{nITz21N))pVpgJZS34N`*xD8A147d zTlSBI<_}?ZkJyC{ZxYZifBf?g7$d(VLWBYTTL9^;|LWhspXvXB{^@KP4g?mi;s+fP z+mQ3fre|+OY7OP&nHq13H{?R-6B!f3_eBR$v}zg(Tqp%D=^U=5u|;(vzd%a3(?Z1I zjdCmwJTtIpcp#7T7U37wRv!}S)A`O)8_3hMxCXm&aS-|EyAl=7IPobm@OvDGKJ#MPCD4wO0rdCYqrwb|kQ2QKiHyI-m!F-SsLVkHNRV{?@z=w+ zl%@tt_K$wD8tz$Ne|CWTRzi?*7hX83@6A7lA{MVCs$a3p@+Rl<78CTz!!Sey|CS={ pe+B#-_%r<%QKbDpD41yr55QyaE<&qGlfQ2cKq+e}Rl%)7{s&)qgNXnD literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..03f54cf44807136c9bad2412feb4d6486404468e GIT binary patch literal 2797 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000ONklKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000ONklKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0006jNkl(&-4;z8=Xnk2;X-h3I3a#WyS> zIRlUZh|TE;Krcl7-IhX00K6FxH&M4`Kw;TL?y2YzYA-Q5t zvOZZxPdmP`K@pL(WCRWX%+6f1s3m|e%Wuz?HVuQBuf;5*1{Q-6$*jaT;)=abQR|y; z@I)kU;2J9t=>wPo$V1oP`e!8(nE>dUsq@$yJj)1pAvrZ>pO^X6!+<#fvRB!QZNce!Td)sg;c}Z^<(=zj+h>PQw=eI zjO46|&${a#}36J9CIvL*$4Xz>mN1Q8P{XsDFtQqACqRN8%g^Jop#uG z8pSbytp&~))%lsCK7&pr5m^G*d4dz+d~&m{QSVGUgL}--6P&pv)sWVK0+%G!&y9DD znu$o!^ad40o=~0JO94zPB59Y@wG)xmsgDLTUx#|)5`)YfS2S;ZymdY%2k>sDPTr<{ z%q_tz&9vFKap&8J$J7|oiCJ0FP?0fLj}iS(q`r1gFbc+_z6St0r>Op_>&oE(0000< KMNUMnLSTXzb1Fpu literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..941301f3a65265b302c6e7bb8719b571c645c9e9 GIT binary patch literal 3335 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 R!v_EW002ovPDHLkV1k)0FX{jQ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..bdd28af7cc60dcd7c8ca4e0c712f828042e9721b GIT binary patch literal 3510 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3b6b48816e2524e358ae745b3a6e1422ec71ca9a GIT binary patch literal 3869 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5cb7824b43e480e22362e4817d43cf908d1dc92c GIT binary patch literal 3231 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 literal 0 HcmV?d00001 diff --git a/res/images/subtitle/T01-2_sync_btn_bg.png b/res/images/subtitle/T01-2_sync_btn_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..a7a8fd0c20ac2123783e5fe33341ed1599790c69 GIT binary patch literal 3650 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 U&7*q=$N&HU07*qoM6N<$g5{UbUjP6A literal 0 HcmV?d00001 diff --git a/res/images/subtitle/T01-2_sync_faster.png b/res/images/subtitle/T01-2_sync_faster.png new file mode 100755 index 0000000000000000000000000000000000000000..44cb065775256c1f0c9122c274f69cb549343106 GIT binary patch literal 4114 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e58ce8455df5cbb3f747d6a851920697bd3b5541 GIT binary patch literal 3493 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3e09485ec3e866d463e4919d7e74c1fe0c600fcb GIT binary patch literal 4129 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 literal 0 HcmV?d00001 diff --git a/res/images/toolbar/T01-2_btn_toolbar_volume.png b/res/images/toolbar/T01-2_btn_toolbar_volume.png new file mode 100755 index 0000000000000000000000000000000000000000..f7c10e8bf655e3d1ac1281f6cae558a4262a87cd GIT binary patch literal 3601 zcmaKuWl+?M_r|{n(j^iS%Uv2*x)fMqcZpq6O1fhaL|RI40ckJYun0((2m+E)(v9R2 z(j{;uTqJ+`;{W2_7yo(Y%yZ7n=goO$&diB=tffjt&O#0V02K|X zL-4nexgm``0f6G}pCSM3A_*vGFr7rj=VVrosK)o%0#Svxsimiv6wdu zIs%l@;5GIZwCXH;1q5X5_ajjsYr1hNepEvoc+$X z(BAHzm31M-U~+CZfR?n@j>GecivTzaf&o09+rdzKME0GK9o zFc9P>0N}g!kxGE0EKo7}Bw86T5&`HP)VrmDSwTPqW$1tesvCgz5n75GfRqvt(TNPZ z4-f?aR()JtzQF4YfL`Uu5c=am73~(}cTyQO&_-@)AUA>G_qNAZz9ZCCBO_9=_0*PvyPt_~IBjg!t~W-@-4p>} z#Vct1T0pp#1tUw0ak z^U)f4wXfm<;HcTP<10TYA;vLuWz^^9P~l27mj}Q&pc35yz(R>zNPnPKp_dc@lyZY1 z)iBnRj(Y;_#B3e67dj{|t)yPVxw|{zv~Y4e44a45{fZDcfB0}U2x2AtRS_i7uHzV< z*P3HKlE5a~h%1(qDI@HRqXS7q7sCzikEGY( zR8NpZit0w|gAI_NBRP*-(h+7VO$oAnfLO?7c#EoNa&V1~+*isvL}STAme(rz6k~Q? zqM31wxmjZ#A6ewyNabyfl{?bR$H^mlMcTLTk%)Ic6A|j^f`51)7?Kb@6r9b&exba;%M_d%>CBD!=Z4lN$2|?S{k#v3

4C=>~TIdB{A zW7R{K%9ccwp-Wu#6$*lkucC;JyEMAA5d}KAA1v2edcYL6%(cD(9L`kb;oiZL-Mk-$ z=U%>mG^byInq%b3O7o-<;%efCwYta24hke|>F#IQURq>Z{KaXY1rIhUoTr5cqZ%XP|C_gbZ@_KUGat;)^D7s1r9UNt^5K2>zw$ZhPF-kjcIF?lhg zrku=al~9>;A!}Z26WGy#XnfRIr)R)wMvPadd zn-m!z)VDkjGm$nfG%_$TuT`nUR`N_YS2h>lDQ?tC(kjoHMt4>JsPC^YZD6k6m?g$l z)w|ROTBB{4&<$Uzx(NZ(91lLS;`#AK2Qk!a+10u zj5Zpj9i0_ltG_#VzxydxFKbd2&4h0B3_XsFiBb<46iSm9%3|$V>}y?D^E!1mU-6$f z#b(uJb?%qo-XBOEJUxh5csnHV_I{4BxaU|`AL5(N#<&8-+Y}M!<%%F}gmy5xZi`FU zRye`1a;CbW(5DP@rYne&FDxR=FkB(lEz*c(Tr^G6XM6$SxvX@ql&Z9pg%;J8 zelMsd36U=oa)Qo3Y?5eF=n---9-1=38lj%4vq=jFAP^V6a*PUqSwetFFItN>H41{#l5jgKr7?5v-1@0}(?3-&F2^%lhS)YevS>+j`qO0g} zOlb_SX89L&kB!4U|?{2gkb(nD2*<2FLF{Mr|OWRDNeoi$v|B-6>$;bWE zpUODlv|)Z+b7(!H@!e1^oj36a902se_5dI_sIU=i>*g0WCizzE9yy zTku!%{cSh{0t3w{hbj9D)I}{`p(?6u=PdQY#k^9>#eKh*aDwoPgp0ajE6`JFGbmM;1?7{eCdsOi$%V%PqDZ`@7=5;7^ws7lSxJ3Fg;!4PKDo!^3#xeHu+Y)#gwr@0#O=6@xWRC$ z@V%Tz^3u|)3LaNGm&J%tyHVa8rtAFc!73(3;h?jry_u2m^zpp3qqL;YE-wqOcH8%u z-{X2Zd)V9heZ@sBPM%!scla#$fDYd+(`c{11i#|Has2h+RBx>KB8fRE>4u0f{rJ*W zToCvB-vrwtbu|INp9cUip#bpf=C|(vfVT($>{qlJ zyTf~4kzV<&r^j`sSFRW4L8KWhnfw+55k#b_{nITz21N))pVpgJZS34N`*xD8A147d zTlSBI<_}?ZkJyC{ZxYZifBf?g7$d(VLWBYTTL9^;|LWhspXvXB{^@KP4g?mi;s+fP z+mQ3fre|+OY7OP&nHq13H{?R-6B!f3_eBR$v}zg(Tqp%D=^U=5u|;(vzd%a3(?Z1I zjdCmwJTtIpcp#7T7U37wRv!}S)A`O)8_3hMxCXm&aS-|EyAl=7IPobm@OvDGKJ#MPCD4wO0rdCYqrwb|kQ2QKiHyI-m!F-SsLVkHNRV{?@z=w+ zl%@tt_K$wD8tz$Ne|CWTRzi?*7hX83@6A7lA{MVCs$a3p@+Rl<78CTz!!Sey|CS={ pe+B#-_%r<%QKbDpD41yr55QyaE<&qGlfQ2cKq+e}Rl%)7{s&)qgNXnD literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..53500ff7ee5fb999ce8c75fe5c43320da85bfd12 GIT binary patch literal 3040 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..da41533f13e06987657a58d28f0061f22a2c98ad GIT binary patch literal 3961 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 TH`jEy00000NkvXXu0mjf{iscC literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5cb7824b43e480e22362e4817d43cf908d1dc92c GIT binary patch literal 3231 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 literal 0 HcmV?d00001 diff --git a/res/images/toolbar/T02_volume_icon_Mute.png b/res/images/toolbar/T02_volume_icon_Mute.png new file mode 100755 index 0000000000000000000000000000000000000000..2918312b233fbcd5f6f748b21bc1e730a52d6956 GIT binary patch literal 3367 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 literal 0 HcmV?d00001 diff --git a/res/images/trim/T01-2_controller_track_ball.png b/res/images/trim/T01-2_controller_track_ball.png new file mode 100755 index 0000000000000000000000000000000000000000..0f926330ce20abdc22dbd47ded222e57387e2a72 GIT binary patch literal 3162 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 R{s;g7002ovPDHLkV1mKzaHRkM literal 0 HcmV?d00001 diff --git a/res/images/trim/T01-2_controller_trimming_handle_ending.png b/res/images/trim/T01-2_controller_trimming_handle_ending.png new file mode 100755 index 0000000000000000000000000000000000000000..3984517dbd986a4df87460a3ca87580817ed0a14 GIT binary patch literal 3344 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 JPDHLkV1l)GnDqbv literal 0 HcmV?d00001 diff --git a/res/images/trim/T01-2_icon_toolbar_forward.png b/res/images/trim/T01-2_icon_toolbar_forward.png new file mode 100755 index 0000000000000000000000000000000000000000..a6aaf21bfa2311927ce902cda6813d9c32b267b5 GIT binary patch literal 3343 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 ZcK{7QfT28z=XC%8002ovPDHLkV1lq&I*9-P literal 0 HcmV?d00001 diff --git a/res/images/trim/T01-2_icon_toolbar_reverse.png b/res/images/trim/T01-2_icon_toolbar_reverse.png new file mode 100755 index 0000000000000000000000000000000000000000..6b9d2d8ba049527383436fcf3adb3e3ce1f9d826 GIT binary patch literal 3326 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 literal 0 HcmV?d00001 diff --git a/res/images/trim/gallery_video_fastforward_4x.png b/res/images/trim/gallery_video_fastforward_4x.png new file mode 100755 index 0000000000000000000000000000000000000000..a1eeacb745c8620ebc766e69ab677c3bef6fa76e GIT binary patch literal 3469 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 WTjE?_jqua}0000 literal 0 HcmV?d00001 diff --git a/res/images/trim/gallery_video_rewind_3x.png b/res/images/trim/gallery_video_rewind_3x.png new file mode 100755 index 0000000000000000000000000000000000000000..badb98323a27593231f5c49359570b8b75e2f977 GIT binary patch literal 3396 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 a&jA3nNmhT>g1yE70000ol8Fe literal 0 HcmV?d00001 diff --git a/res/images/trim/gallery_video_rewind_4x.png b/res/images/trim/gallery_video_rewind_4x.png new file mode 100755 index 0000000000000000000000000000000000000000..a85551472c36b0dfb66f5952d392ab77b83f4f77 GIT binary patch literal 3464 zcmV;34R`X1P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0008BNklSW>p*4$w+t*-@U_xP~*(owwTyigsv${^Ruk!urt$4(}b5kEN! z02=_IL#E%k1HcME75q8tnX3X&IOEm;o;{EL$p}GB4OHQbD*?QEif6eh0Hrh6Z_73H ze!rA}o$TszM`aH2I`P#uIlcRo<#~1j&Mj9FTZB|zoNE9x5!qiT#0tQ{1Iv2HJAlRs zs|2vK#gX*|Z10h~Yhb0|uoggj>D}u}cU0aTV~jgu`qWQt>zkoaJi8-eTGFWMA!f=F z5%V6I>&GS?t%xk{3@XYUiAhGW>4@3IjZu>XK)L%Af!!BYLrm#y>!}og*>-*bU{6$u zI7~!Z5t##6c1=16Ym05br82rM0FClOg2xNYR* zh&)+;^AzPTfVtPDBC@o&))DqkM9xoy)1x@70MOWID7(<#W&mFL7A4lDBC@wh&(gC< zf?V|@06VJ$aJY0tK}6oHC~uBJhA!PZ;_ASqo<$Pl(xiJ>hK{k673IaiwGII8U1;Fa zxyLzyOP^x<+vr}L%{dEie~a0LTCSz#@+^{VY=0Z=q$B8WVNs5b{&og%>X~ct$)$bb z+%DxYx9+%G9&^k49CM2~`P<%zS^h=O;>q90tu{5#NylMTo}Lr0000)G*y%)PUxRL zeHxI_-`5Kyfe0ub6B!O+cXxLIxe%3;CQXFMmJ}621c78jT`h#&P+wbp8S{JcG2ZVovUk-5CfpB5Shl`kN$^LHm+#Nmr`36z z_U$l8KBn;OR@r&3$H&6`FG$$}H9q%raSW-5dwcqL*kJ zOOsDOvGBTdtLgHlnvHAxCMUlzy_#T{*O`4>mEo+Hn|uzN@hwxS4OZq#Sy^VRwJQ_0 z?i0Ew6Co!NbW~`DG-IgLjEjmv$`1FrUNBWGe($lD`8v}s#(BG6@a+)4AXV{Vk=O+$ zCWqK1a*TquI|J@_Z_?;$*vJ0yjEqMA;~V`I&-hr*b?5AFV!E~K!nJO*GN0Ittn16Z d*K@VnF(z^vwrvX9*$MPAgQu&X%Q~loCIHx+=cfPw literal 0 HcmV?d00001 diff --git a/res/images/volume/T01-2_player_progress_bar.png b/res/images/volume/T01-2_player_progress_bar.png new file mode 100755 index 0000000000000000000000000000000000000000..00d960cfda3356c1faf3a96737f6dbac0b0a2dc1 GIT binary patch literal 2799 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 BG9CZ` literal 0 HcmV?d00001 diff --git a/res/images/volume/T01-2_player_volume_handle.png b/res/images/volume/T01-2_player_volume_handle.png new file mode 100755 index 0000000000000000000000000000000000000000..a5bb976f2474822b19103798f7e817f28b2690ad GIT binary patch literal 3127 zcma);_ahYk1IFJXdu8wJ)p53L?(7*(4k;s!B(to@CA*K2Jx)~i$f(m&@YM9##){U;(e#xtfh*r)`g(eoR%Lb3 zw4(linY!t&P|&Fe890j4)VwB)r|JM?q2qMa0B=!%m*a~+XWE42-6D&AMurbgzivhy z%?5PCQ($F4*N`k4lPhiuiYb80kh|LoxFG{vB%XX92ho_Lya+PjlqtkcR-6t5Sv?Z; zftLoT8M&Ec0FZKk&C{$$4NS`bITL$NV^H4=@C0VMMnFvuiLbCR91$Ax=L+;B)~wiRoZ zfE4}w=lcq!!ilgKQlG@e&hIWSLXOF`7nMQ%J#DgxbeRfgck`0DxgdB-zRt^Y zopdKID$ih|JzX$n813C?zCahLnx`)E?Z9-@_d#2bcZ9zT+9%{}FBP1dTa zEK!3inkw2i+3aU}>QJrZ1{@UzThgpcmgnq8B`vV+N-azAmMNLz9{mK`@+SmW`MM6&zr@nv74~^)Nluh)altg+0m*yws06$HBXdm&H zHQc#d7hdX`<(jkfEFCwh`Fg_eA48_+-o3Y0L|1%!eS2SvQ;G|Tn^|mH?Bv^6;L4=R zG|V;3`-VRczZ#y*Q!dbwpHf&aSTC3=SZsE240VKHE3h9tOd3}m%N%yFZ4Y7{)f`HZ zc8<Y_dKbv1ep7uRpHR4?6Zz>NdjpC>jxdi*E3RN!hopME zF}4NcMkr1cE+}R{Avw|P>5y!Wwrl}!?|gszs%h|Hfb&xL*deB%si14Sg7|hvWygCb ze(vRGrI%7g4vIlvy8GeZtk*_$=w4>Y`7G8%S;4K)sQ2q4P+Tb3EqscH==$_exY*x z?wZ^kMK2K>A8Q|{lj5I%D z)S}ZX>*?@$0*OJI+&AM>la;Phd2qjD@nm~Hei^e&w-Ujb3+;FI4=W*b9mJM%RLZhI z)U$QX6D+T1{?ucZuHbksw#OPGmO>lW#ovVzhK{O?CQQR`Nefu+8B1G)zxX%3O*u^T zlVT}k4fjl4XL1LO};qJ@x zZI&*Ur5D)JI5T@0e&qM|ntN)EngL-%+7yMfr+C0h!2*VmWh&PA>#9xHU&e;5W*QuiiqdUA2ZNHWNogg~3kxsP-I*4{;b`}$! z6CTGV$4w-iy2PrDqwHf}=UPkOfbBl=G4fL?5k~A3?&}2qm=?k&b@JMl5o6!gjx)?| zhzx@YgWW%cy~`s0`eCaZB$`E%0E7DMqvsJdOH|`mAMvC3q4!|Nq)|QAZP7Q-smn(UP3KoQ#jYk4sNC@mt()iM?ID0v!XPit@J) zZXR!UhRlWV@4jASvRZvC_(byD>rca>?U(Z74DO7Ka|-g@{S$XZ8REs?6m&PXu>c@k z41nku0REg`a07scasX_)Tzu19066_#-1%e(0GXSKz8)fU_FrPdy{;QvaZ9AaOc*&! zz<^$GNWepumfwuDmphe7w*CBU;WR0jLUpz4AFg}p3QJONuvt;DN-pS)?K(4_5WDkq znvjsAao#k*`Yqk_H~C|7sh`$YuU3Uz5)I%RIX>0KSW@};ieyb~9c~2T%$pzu0*vuF zv~4vd171q`8tY!+la8+>g_DHC+ZXP)-zJC1q+MTkM7Kdx+zW#g1sik~_!zx?vSb>1 za|5{IYGdPE6XZSb#|YxN#vLo<;{>VePckUj5jXTM|Nr(S4nEY_6S3%6Oe$)GG%Ot3 zS+mu~au}dVQ6A{v)_E+4-}*#K2O&4(9Uo Ee@UsufdBvi literal 0 HcmV?d00001 diff --git a/res/images/volume/T01-2_player_volume_handle_press.png b/res/images/volume/T01-2_player_volume_handle_press.png new file mode 100755 index 0000000000000000000000000000000000000000..598fb634c7f7de0e3855e4fc2fb2f73964d77b79 GIT binary patch literal 3168 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 literal 0 HcmV?d00001 diff --git a/res/images/volume/T01-2_volume_icon_02.png b/res/images/volume/T01-2_volume_icon_02.png new file mode 100755 index 0000000000000000000000000000000000000000..8020ecbd89180ab934d4f97e3299b8c4665ae07c GIT binary patch literal 5351 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a37b8bedbf1a46a60ee7db3f2924d3630c5a5a91 GIT binary patch literal 1111 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 B<-Y&` literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d99ce875b7c296f3e3ff192e2c0ba54dae100adc GIT binary patch literal 1107 zcmV-Z1g!gsP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyV) z1uh>hB&;j|00YxWL_t(o!|j*NZ{uVT#vgwquAL7%rCCLBHdV|jY7Z_=*|g<|mOX(G zLI?@%qJ{JRv#>&NK}dC_mJ%gtVu#v^{k|NqtLeK=8mb&Pbfl3jD|UW*=9%#rc#Ow* zjK_G4|940mxF_!!e98H}p*{eHCWLcN0L1f+D3Q!=KT|)}P0L%d_$Tg}E-!xDGfJU;AK1WIwnG4Fz1wXBX zQXc@b1wc=aMhc~*ze@mwY5q`4pN)<6PAYIp=^m@Iwhmd&fDaWlD%rJg4iH z0?9-jHT6xVj+p{k0L*T;`$?@udc2HS>c;( z&XkCOEdVvsG@l+E9Q-huOw>4z?>sP$W7xLcnNFvF%w{uRfXGwoj+c}rEnXmVrb5bO z0WeQbPv3-LSf9;i?@7)W17l2XwOWqnc|S46L}jQ#@A*ktQ7S|5jS0YVUH3Cx*PmZs zUoUOl`FxIIv1sh~b=hjB*r;b2b952)@ZmRVMSs0#H*`b^GMxJbJ(`+TwY%O zvREwUISSEo-T|U7&8)>M0BR{vwb$!?sVK_+WHMQMfm$pUP*qiHG#WeS=jXo(<`zrG zG9XoWJy3P30IYVq{gLB1UknBV>EH3PeuQC&a=BdBG|e9lhkueiiRP`*=X1-lZ1Vakk*y(HVdQKY7s<@22-EnxBuU!7??3oU zBAep2ZMQtn`xqRP;ZQCyzjYcO2NCu$LmRHH1tR5a7zVdxv55sU{ zKye&nJRU2q>wd4Qs!o)-U3q0;8Iu7>M@L65Ip-fvr_+spnFc|CD2kr+`~7c(!7Krg Z{sD@VmQ4IsU#kEB002ovPDHLkV1jvm?`8l1 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d21ae34664ffb3334d36c9e5873c2d5c1c58b787 GIT binary patch literal 2798 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 T^ceUI00000NkvXXu0mjf?YA`r literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2be73aadd81aa2b9207bb6ead5cb0e1207a6b66f GIT binary patch literal 2813 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 P00000NkvXXu0mjfXfifv literal 0 HcmV?d00001 diff --git a/res/images/white/common/01_scroller.png b/res/images/white/common/01_scroller.png new file mode 100755 index 0000000000000000000000000000000000000000..88ee4ab7829bf4698ec48bfb7c1cb79b41034c6b GIT binary patch literal 497 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 IM6N<$f<#nIM*si- literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e86b3991108cf2f736595c8a04b671fbff77665b GIT binary patch literal 3623 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 AmH+?% literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c62a838276fd8aecaa4b59119d305031f1d2ef43 GIT binary patch literal 3144 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 QbpQYW07*qoM6N<$g85K5SO5S3 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..fe53acef1727be00970c9b6871ea70f4689fa1e8 GIT binary patch literal 2987 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..413b481d1813ffd4010f29035955b57dec4cb91e GIT binary patch literal 3403 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 MwTv`tH0&b&3#JY~5C8xG literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cd95fae76bbf802061de60ed28ccf393889f8f61 GIT binary patch literal 3022 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 O6POuU8`dJ+?*0?JfVqhP literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c57dd540f9945607b7e88a0afb3461d8c5c1013e GIT binary patch literal 3386 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 F{sWklIV%7F literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d2ce746b089bcd1f6fbf2eb5d99aaaffe1738377 GIT binary patch literal 3027 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e58ce8455df5cbb3f747d6a851920697bd3b5541 GIT binary patch literal 3493 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f7c10e8bf655e3d1ac1281f6cae558a4262a87cd GIT binary patch literal 3601 zcmaKuWl+?M_r|{n(j^iS%Uv2*x)fMqcZpq6O1fhaL|RI40ckJYun0((2m+E)(v9R2 z(j{;uTqJ+`;{W2_7yo(Y%yZ7n=goO$&diB=tffjt&O#0V02K|X zL-4nexgm``0f6G}pCSM3A_*vGFr7rj=VVrosK)o%0#Svxsimiv6wdu zIs%l@;5GIZwCXH;1q5X5_ajjsYr1hNepEvoc+$X z(BAHzm31M-U~+CZfR?n@j>GecivTzaf&o09+rdzKME0GK9o zFc9P>0N}g!kxGE0EKo7}Bw86T5&`HP)VrmDSwTPqW$1tesvCgz5n75GfRqvt(TNPZ z4-f?aR()JtzQF4YfL`Uu5c=am73~(}cTyQO&_-@)AUA>G_qNAZz9ZCCBO_9=_0*PvyPt_~IBjg!t~W-@-4p>} z#Vct1T0pp#1tUw0ak z^U)f4wXfm<;HcTP<10TYA;vLuWz^^9P~l27mj}Q&pc35yz(R>zNPnPKp_dc@lyZY1 z)iBnRj(Y;_#B3e67dj{|t)yPVxw|{zv~Y4e44a45{fZDcfB0}U2x2AtRS_i7uHzV< z*P3HKlE5a~h%1(qDI@HRqXS7q7sCzikEGY( zR8NpZit0w|gAI_NBRP*-(h+7VO$oAnfLO?7c#EoNa&V1~+*isvL}STAme(rz6k~Q? zqM31wxmjZ#A6ewyNabyfl{?bR$H^mlMcTLTk%)Ic6A|j^f`51)7?Kb@6r9b&exba;%M_d%>CBD!=Z4lN$2|?S{k#v3

4C=>~TIdB{A zW7R{K%9ccwp-Wu#6$*lkucC;JyEMAA5d}KAA1v2edcYL6%(cD(9L`kb;oiZL-Mk-$ z=U%>mG^byInq%b3O7o-<;%efCwYta24hke|>F#IQURq>Z{KaXY1rIhUoTr5cqZ%XP|C_gbZ@_KUGat;)^D7s1r9UNt^5K2>zw$ZhPF-kjcIF?lhg zrku=al~9>;A!}Z26WGy#XnfRIr)R)wMvPadd zn-m!z)VDkjGm$nfG%_$TuT`nUR`N_YS2h>lDQ?tC(kjoHMt4>JsPC^YZD6k6m?g$l z)w|ROTBB{4&<$Uzx(NZ(91lLS;`#AK2Qk!a+10u zj5Zpj9i0_ltG_#VzxydxFKbd2&4h0B3_XsFiBb<46iSm9%3|$V>}y?D^E!1mU-6$f z#b(uJb?%qo-XBOEJUxh5csnHV_I{4BxaU|`AL5(N#<&8-+Y}M!<%%F}gmy5xZi`FU zRye`1a;CbW(5DP@rYne&FDxR=FkB(lEz*c(Tr^G6XM6$SxvX@ql&Z9pg%;J8 zelMsd36U=oa)Qo3Y?5eF=n---9-1=38lj%4vq=jFAP^V6a*PUqSwetFFItN>H41{#l5jgKr7?5v-1@0}(?3-&F2^%lhS)YevS>+j`qO0g} zOlb_SX89L&kB!4U|?{2gkb(nD2*<2FLF{Mr|OWRDNeoi$v|B-6>$;bWE zpUODlv|)Z+b7(!H@!e1^oj36a902se_5dI_sIU=i>*g0WCizzE9yy zTku!%{cSh{0t3w{hbj9D)I}{`p(?6u=PdQY#k^9>#eKh*aDwoPgp0ajE6`JFGbmM;1?7{eCdsOi$%V%PqDZ`@7=5;7^ws7lSxJ3Fg;!4PKDo!^3#xeHu+Y)#gwr@0#O=6@xWRC$ z@V%Tz^3u|)3LaNGm&J%tyHVa8rtAFc!73(3;h?jry_u2m^zpp3qqL;YE-wqOcH8%u z-{X2Zd)V9heZ@sBPM%!scla#$fDYd+(`c{11i#|Has2h+RBx>KB8fRE>4u0f{rJ*W zToCvB-vrwtbu|INp9cUip#bpf=C|(vfVT($>{qlJ zyTf~4kzV<&r^j`sSFRW4L8KWhnfw+55k#b_{nITz21N))pVpgJZS34N`*xD8A147d zTlSBI<_}?ZkJyC{ZxYZifBf?g7$d(VLWBYTTL9^;|LWhspXvXB{^@KP4g?mi;s+fP z+mQ3fre|+OY7OP&nHq13H{?R-6B!f3_eBR$v}zg(Tqp%D=^U=5u|;(vzd%a3(?Z1I zjdCmwJTtIpcp#7T7U37wRv!}S)A`O)8_3hMxCXm&aS-|EyAl=7IPobm@OvDGKJ#MPCD4wO0rdCYqrwb|kQ2QKiHyI-m!F-SsLVkHNRV{?@z=w+ zl%@tt_K$wD8tz$Ne|CWTRzi?*7hX83@6A7lA{MVCs$a3p@+Rl<78CTz!!Sey|CS={ pe+B#-_%r<%QKbDpD41yr55QyaE<&qGlfQ2cKq+e}Rl%)7{s&)qgNXnD literal 0 HcmV?d00001 diff --git a/res/images/white/panel/T02_volume_icon_Mute.png b/res/images/white/panel/T02_volume_icon_Mute.png new file mode 100755 index 0000000000000000000000000000000000000000..2918312b233fbcd5f6f748b21bc1e730a52d6956 GIT binary patch literal 3367 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 literal 0 HcmV?d00001 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..01b804a --- /dev/null +++ b/src/mp-drm-ctrl.c @@ -0,0 +1,411 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include + + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-drm-ctrl.h" + +static int nCheckConsumption = VIDEO_DRM_CONSUMPTION_STATE_DISABLE; + +static drm_file_type_e nDrmFileType = DRM_TYPE_UNDEFINED; + +#define ACCUMULATED_DATE 86400 /* 24*60*60 */ +#define RO_MESSAGE_LEN 1024 + +#define MOUNTH_COUNT 12 +#define DAY_COUNT 30 +#define HOUR_COUNT 24 + +static bool bForwordLock = FALSE; +/* + * External function + */ +void MpVideoDrmInit() +{ + VideoLogInfo(""); +} + +bool MpVideoDrmGetForwardLookState() +{ + VideoLogInfo(""); + + return bForwordLock; +} + +void MpVideoDrmSetConsumptionState(int nState) +{ + VideoLogInfo(""); + + nCheckConsumption = nState; +} + +int MpVideoDrmGetConsumption() +{ + VideoLogInfo(""); + + return nCheckConsumption; +} + +void MpVideoDrmStartConsumption(char *szPath) +{ + VideoLogInfo(""); + + + if (MpVideoDrmGetConsumption()) { + + } else { + VideoLogInfo("Disable consumption."); + } +} + +void MpVideoDrmPauseConsumption() +{ + VideoLogInfo(""); + + if (MpVideoDrmGetConsumption()) { + } else { + VideoLogInfo("Disable consumption."); + } +} + +void MpVideoDrmResumeConsumption() +{ + VideoLogInfo(""); + + if (MpVideoDrmGetConsumption()) { + } else { + VideoLogInfo("Disable consumption."); + } +} + +void MpVideoDrmStopConsumption() +{ + VideoLogInfo(""); + + if (MpVideoDrmGetConsumption()) { + MpVideoDrmSetConsumptionState (VIDEO_DRM_CONSUMPTION_STATE_DISABLE); + } else { + VideoLogInfo("Disable consumption."); + } +} + +bool MpVideoDrmIsDrmFile(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + int nRet = DRM_RETURN_SUCCESS; + drm_bool_type_e is_drm = DRM_FALSE; + + nRet = drm_is_drm_file(szPath, &is_drm); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_is_drm_file : %d", nRet); + return FALSE; + } + + if(is_drm != DRM_TRUE) { + VideoLogInfo("It's not drm file."); + return FALSE; + } + + + drm_file_type_e drm_type = DRM_TYPE_UNDEFINED; + + nRet = drm_get_file_type(szPath, &drm_type); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_get_file_type : %d", nRet); + return FALSE; + } + + nDrmFileType = drm_type; + + if(drm_type != DRM_TYPE_OMA_V1 && drm_type != DRM_TYPE_OMA_V2) { + VideoLogInfo("It's not OMA drm file : %d", drm_type); + return FALSE; + } + + return TRUE; +} + +bool MpVideoDrmHasValidRo(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + int nRet = DRM_RETURN_SUCCESS; + drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED; + nRet = drm_get_license_status(szPath, DRM_PERMISSION_TYPE_PLAY, &license_status); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_get_license_status : %d", nRet); + return FALSE; + } + + if(license_status != DRM_LICENSE_STATUS_VALID) { + VideoLogInfo("Invalid license status : %d", license_status); + return FALSE; + } + + return TRUE; +} + +bool MpVideoDrmCheckForward(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + int nRet = DRM_RETURN_SUCCESS; + drm_action_allowed_data_s action_data; + drm_bool_type_e is_allow = DRM_FALSE; + memset(&action_data, 0, sizeof(drm_action_allowed_data_s)); + snprintf(action_data.file_path , DRM_MAX_LEN_FILEPATH, "%s", szPath); + + nRet = drm_is_action_allowed(DRM_IS_FORWARDING_ALLOWED,&action_data, &is_allow); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_is_action_allowed : %d", nRet); + bForwordLock = FALSE; + return FALSE; + } + + if(is_allow == DRM_TRUE) { + bForwordLock = TRUE; + return TRUE; + } + + return FALSE; +} + +MpVideoDrmInfo *MpVideoDrmCheckLeftRo(char *szVideoTitle, char *szPath) +{ + VideoLogInfo(""); + MpVideoDrmInfo *pResult = NULL; + pResult = calloc(1, sizeof(MpVideoDrmInfo)); + + if (!szVideoTitle) { + VideoLogInfo("[ERR] No has video title."); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL; + return pResult; + } + + if (!szPath) { + VideoLogInfo("[ERR] No has path."); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL; + return pResult; + } + + + + int nRet = DRM_RETURN_SUCCESS; + drm_constraint_info_s constraint_info; + memset(&constraint_info, 0, sizeof(drm_constraint_info_s)); + nRet = drm_get_constraint_info(szPath, DRM_PERMISSION_TYPE_PLAY, &constraint_info); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_get_file_info : %d", nRet); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL; + return pResult; + } + + if(constraint_info.const_type.is_unlimited) { + VideoLogInfo("Unlimited DRM Contents"); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + else if(constraint_info.const_type.is_count) { + if(constraint_info.remaining_count <= 0) { + VideoLogInfo("Count expired : %d / %d", + constraint_info.remaining_count, + constraint_info.original_count); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_COUNT; + pResult->nData = constraint_info.remaining_count; + return pResult; + } + else if(constraint_info.remaining_count == 1 || + constraint_info.remaining_count == 2) { + VideoLogInfo("Count Small : %d / %d", + constraint_info.remaining_count, + constraint_info.original_count); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_COUNT_SMALL; + pResult->nData = constraint_info.remaining_count; + return pResult; + } + else { + VideoLogInfo("Count valid : %d / %d", + constraint_info.remaining_count, + constraint_info.original_count); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + pResult->nData = constraint_info.remaining_count; + return pResult; + } + } + else if(constraint_info.const_type.is_datetime) { + VideoLogInfo("Start time: Year=%d,Month=%d,Day=%d," + "Hour=%d, minute=%d, Second=%d", + constraint_info.start_time.tm_year, + constraint_info.start_time.tm_mon, + constraint_info.start_time.tm_mday, + constraint_info.start_time.tm_hour, + constraint_info.start_time.tm_min, + constraint_info.start_time.tm_sec); + + + VideoLogInfo("End time: Year=%d,Month=%d,Day=%d," + "Hour=%d, minute=%d, Second=%d", + constraint_info.end_time.tm_year, + constraint_info.end_time.tm_mon, + constraint_info.end_time.tm_mday, + constraint_info.end_time.tm_hour, + constraint_info.end_time.tm_min, + constraint_info.end_time.tm_sec); + + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + else if(constraint_info.const_type.is_interval) { + VideoLogInfo("Interval time: Year=%d,Month=%d,Day=%d," + "Hour=%d, minute=%d, Second=%d", + constraint_info.interval_time.tm_year, + constraint_info.interval_time.tm_mon, + constraint_info.interval_time.tm_mday, + constraint_info.interval_time.tm_hour, + constraint_info.interval_time.tm_min, + constraint_info.interval_time.tm_sec); + + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE; + pResult->nData = ((constraint_info.interval_time.tm_year * MOUNTH_COUNT + constraint_info.interval_time.tm_mon) * DAY_COUNT + constraint_info.interval_time.tm_mday); + return pResult; + + } + else if(constraint_info.const_type.is_timedcount) { + VideoLogInfo("DRM TimeCount " + "(original : %d, remainnig : %d, count_timer: %d)", + constraint_info.timed_original_count, + constraint_info.timed_remaining_count, + constraint_info.timed_count_timer); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + else if(constraint_info.const_type.is_accumulated) { + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_ACCUMULATED; + return pResult; + } + else if(constraint_info.const_type.is_individual) { + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + else if(constraint_info.const_type.is_system) { + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + + return pResult; +} + +bool MpVideoDrmIsDivX(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + + int nRet = DRM_RETURN_SUCCESS; + drm_bool_type_e is_drm = DRM_FALSE; + + nRet = drm_is_drm_file(szPath, &is_drm); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_is_drm_file : %d", nRet); + return FALSE; + } + + if(is_drm != DRM_TRUE) { + VideoLogInfo("It's not drm file."); + return FALSE; + } + + drm_file_type_e drm_type = DRM_TYPE_UNDEFINED; + + nRet = drm_get_file_type(szPath, &drm_type); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_get_file_type : %d", nRet); + return FALSE; + } + + nDrmFileType = drm_type; + + if(drm_type != DRM_TYPE_DIVX ) { + VideoLogInfo("It's not DivX drm file : %d", drm_type); + return FALSE; + } + + return TRUE; + +} + +bool MpVideoDrmCheckDivX(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + return TRUE; +} + +void MpVideoDrmGetFileExtension(char *szPath, char *szContentType, int nContentTypeStrSize) +{ + if (!szContentType) { + VideoLogInfo("[ERR]"); + return; + } + + if (!szPath) { + VideoLogInfo("[ERR]"); + return; + } + + memset(szContentType, 0, nContentTypeStrSize); + + drm_content_info_s content_info; + int nRet = DRM_RETURN_SUCCESS; + memset(&content_info, 0, sizeof(drm_content_info_s)); + + nRet = drm_get_content_info(szPath,&content_info); + + + VideoLogInfo("contentType: %s", content_info.mime_type); + + strncpy(szContentType, content_info.mime_type, nContentTypeStrSize - 1); +} diff --git a/src/mp-external-ug.c b/src/mp-external-ug.c new file mode 100755 index 0000000..869b3c3 --- /dev/null +++ b/src/mp-external-ug.c @@ -0,0 +1,628 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-external-ug.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-service-ctrl.h" + + +#define UG_LIST_ITEMS_SIZE_MAX 32 +#define UG_SHARE_MENU_ITEM_MAX 6 + + +static ui_gadget_h pUiGadgetHandle = NULL; +static Ecore_Event_Handler *pHardKeyEventHandler = NULL; +static MpExternalUGType nCurUGType = MP_EXTERNAL_UG_NONE; +static char **szUgItems = NULL; + + +static Evas_Object *pUGPopupHandle = NULL; +static Evas_Object *pUGGenList = NULL; + + +typedef struct _External_Ug { + MpExternalUGType nType; + char *szUgName; +} MpExternalUG; + +MpExternalUG st_MpExternalUG[] = { + {MP_EXTERNAL_UG_MESSAGE, "msg-composer-efl" }, + {MP_EXTERNAL_UG_EMAIL, "email-composer-efl" }, + {MP_EXTERNAL_UG_MYFILE_DETAIL, "myfile-detail-efl" }, + {MP_EXTERNAL_UG_YOUTUBE, "youtube-efl" }, + {MP_EXTERNAL_UG_BLUETOOTH, "setting-bluetooth-efl" }, + {MP_EXTERNAL_UG_FTM, "fileshare-efl" }, + {MP_EXTERNAL_UG_FACEBOOK, "facebook-efl" }, +}; + + + + +/* + * CALLBACK FUNCTION + */ + +static char *MpExternalUgGetLabelOfGenlistItemCb(const void *pUserData, Evas_Object *pObject, const char *pPart) +{ + VideoLogInfo(""); + + int nIndex = (int)pUserData; + + if(!strcmp(pPart, "elm.text")) + { + VideoLogInfo("Index : %d", nIndex); + return strdup(szUgItems[nIndex]); + } + + return NULL; +} + + +static Eina_Bool MpExternalUgHardkeyDownCb(void *pUserData, int nType, + void *pEvent) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpExternalUGType nExternalUgState = MpExternalUgGetCurUgState(); + + if (nExternalUgState <= MP_EXTERNAL_UG_NONE || + nExternalUgState >= MP_EXTERNAL_UG_MAX) { + VideoLogInfo + ("Return hardkey callback function because of no UG mode."); + return EINA_FALSE; + } + + Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent; + + if (!strcmp(pKeyEvent->keyname, KEY_END)) { + VideoLogInfo("Bakc(End) key"); + MpExternalUgUnload(); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + if (!strcmp(pKeyEvent->keyname, HOME_KEY)) { + VideoLogInfo("Home key"); + MpExternalUgUnload(); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + + return EINA_FALSE; +} + +void MpExternalUgLayoutCb(ui_gadget_h pUiGadget, enum ug_mode nMode, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + Evas_Object *pLayoutBase = NULL; + Evas_Object *pWin = NULL; + + pLayoutBase = ug_get_layout(pUiGadget); + if (!pLayoutBase) { + ug_destroy(pUiGadget); + VideoLogError("[ERR]"); + return; + } + pWin = ug_get_window(); + + switch (nMode) { + case UG_MODE_FULLVIEW: + evas_object_size_hint_weight_set(pLayoutBase, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_win_resize_object_add(pWin, pLayoutBase); + evas_object_show(pLayoutBase); + break; + + default: + VideoLogInfo("[DEFAUT!!!!!!!!]"); + break; + } +} + +void MpExternalUgResultCb(ui_gadget_h pUiGadget, service_h pService, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } +} + +void MpExternalUgDestroyCb(ui_gadget_h pUiGadget, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpExternalUgUnload(); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); +} + +static void MpExternalUGDestroyPopupList(void) +{ + VideoLogInfo(""); + int nCount = 0; + if(szUgItems) + { + for(nCount = 0; nCount < MP_EXTERNAL_UG_MAX; nCount++) + { + if(szUgItems[nCount]) + { + free(szUgItems[nCount]); + szUgItems[nCount] = NULL; + } + } + free(szUgItems); + szUgItems = NULL; + } + + if(pUGGenList) + { + evas_object_del(pUGGenList); + pUGGenList = NULL; + } + + if(pUGPopupHandle) { + evas_object_del(pUGPopupHandle); + pUGPopupHandle = NULL; + } + + MpUtilSetAlphaOfMainWindow(TRUE); +} + + +static void MpExternalUGPopupCb(void *pUserData, Evas_Object *pObject, + void *pEventInfo) +{ + VideoLogInfo(""); + + if(pUserData == NULL) + { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + + MpExternalUGDestroyPopupList(); +} + +static void MpExternalUgResFn(service_h pRequest, service_h pReply, service_result_e nResult, void *pUserData) +{ + if(!pUserData) +{ + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); +} + +static void MpExternalUGAppSvcLoad(MpExternalUGType nExternalUGType, void *pUserData) +{ + + VideoLogInfo(""); + + if (pUserData == NULL) { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + service_h pServiceHandle = NULL; + int ret_val = 0; + char pkg_name[STR_LEN_MAX] = {0,}; + + if(service_create(&pServiceHandle) != SERVICE_ERROR_NONE) + { + VideoLogInfo("[ERR]service_create(&pServiceHandle)"); + return; + } + + switch(nExternalUGType) + { + case MP_EXTERNAL_UG_YOUTUBE: + strncpy(pkg_name,"org.tizen.youtube",STR_LEN_MAX-1); + break; + + case MP_EXTERNAL_UG_FACEBOOK: + strncpy(pkg_name,"org.tizen.facebook",STR_LEN_MAX-1); + break; + default: + break; + } + + if(service_set_operation(pServiceHandle, SERVICE_OPERATION_SEND) != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_set_operation fail."); + return; + } + + if(nExternalUGType == MP_EXTERNAL_UG_YOUTUBE) + { + char xwin_id_str[12] = { 0, }; + Ecore_X_Window xwin_id = (Ecore_X_Window)MpUtilGetMainWindowXID(); + eina_convert_itoa(xwin_id, xwin_id_str); + VideoLogInfo("For YoutTube XID : %s", xwin_id_str); + service_add_extra_data(pServiceHandle, "XWINDOW_ID", xwin_id_str); + } + + if(service_set_mime(pServiceHandle, "video/*") != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_set_mime fail."); + return; + } + + if(service_set_uri(pServiceHandle, pAppData->szMediaUri) != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_set_uri fail."); + return; + } + + + if(service_set_package(pServiceHandle, pkg_name) != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_set_package fail : %d", ret_val); + return; + } + + if(service_send_launch_request(pServiceHandle, MpExternalUgResFn, pUserData) != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_send_launch_request fail : %d", ret_val); + return; + } + + service_destroy(pServiceHandle); +} + +static void MpExternalUGSelectListItem(void *pUserData,Evas_Object *pObject,void *pEventInfo) +{ + VideoLogInfo(""); + + if(pUserData == NULL) + { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo; + + if(pItem) + { + int nIndex = 0; + nIndex = (int)elm_object_item_data_get(pItem); + + VideoLogInfo("Select Controlbar item of popup : %d", nIndex); + + if(!strcmp(szUgItems[nIndex], MP_SHARE_MESSAGE)) + { + MpExternalUgLoad(MP_EXTERNAL_UG_MESSAGE, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_EMAIL)) + { + MpExternalUgLoad(MP_EXTERNAL_UG_EMAIL, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_BLUETOOTH)) + { + MpExternalUgLoad(MP_EXTERNAL_UG_BLUETOOTH, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_FTM)) + { + MpExternalUgLoad(MP_EXTERNAL_UG_FTM, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_FACEBOOK)) + { + MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_FACEBOOK, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_YOUTUBE)) + { + MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_YOUTUBE, pUserData); + } + + } + VideoAppData *pAppData = (VideoAppData *)pUserData; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + + MpExternalUGDestroyPopupList(); +} + +/* + * External Function + */ +bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + struct ug_cbs cbs = { 0, }; + service_h pService; //bundle *pBundleHandle = NULL; + + + cbs.layout_cb = MpExternalUgLayoutCb; + cbs.result_cb = MpExternalUgResultCb; + cbs.destroy_cb = MpExternalUgDestroyCb; + cbs.priv = (void *)pAppData; + + service_create(&pService); //pBundleHandle = bundle_create(); + + UG_INIT_EFL(pAppData->pMainWindow, UG_OPT_INDICATOR_ENABLE); + + if(pUiGadgetHandle) + { + MpExternalUgUnload(); + } + + switch (nExternalUGType) + { + case MP_EXTERNAL_UG_MESSAGE: + VideoLogInfo("MP_EXTERNAL_UG_MESSAGE"); + //bundle_add(pBundleHandle, "ATTACHFILE", pAppData->szMediaUri); + service_add_extra_data(pService, "ATTACHFILE", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_EMAIL: + VideoLogInfo("MP_EXTERNAL_UG_EMAIL"); + //bundle_add(pBundleHandle, "RUN_TYPE", "5"); + service_add_extra_data(pService, "RUN_TYPE", "5"); + //bundle_add(pBundleHandle, "ATTACHMENT", pAppData->szMediaUri); + service_add_extra_data(pService, "ATTACHMENT", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_MYFILE_DETAIL: + VideoLogInfo("MP_EXTERNAL_UG_MYFILE_DETAIL"); + //bundle_add(pBundleHandle, "Path", pAppData->szMediaUri); + service_add_extra_data(pService, "Path", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_YOUTUBE: + VideoLogInfo("MP_EXTERNAL_UG_YOUTUBE"); + //bundle_add(pBundleHandle, "feature", "video_upload"); + service_add_extra_data(pService, "feature", "video_upload"); + //bundle_add(pBundleHandle, "video", pAppData->szMediaUri); + service_add_extra_data(pService, "video", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_FACEBOOK: + VideoLogInfo("MP_EXTERNAL_UG_FACEBOOK"); + //bundle_add(pBundleHandle, "feature", "video_upload"); + service_add_extra_data(pService, "feature", "video_upload"); + //bundle_add(pBundleHandle, "video", pAppData->szMediaUri); + service_add_extra_data(pService, "video", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_BLUETOOTH: + VideoLogInfo("MP_EXTERNAL_UG_BLUETOOTH"); + //bundle_add(pBundleHandle, "launch-type", "send"); + service_add_extra_data(pService, "launch-type", "send"); + //bundle_add(pBundleHandle, "filecount", "1"); + service_add_extra_data(pService, "filecount", "1"); + //bundle_add(pBundleHandle, "files", pAppData->szMediaUri); + service_add_extra_data(pService, "files", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_FTM: + VideoLogInfo("MP_EXTERNAL_UG_FTM"); + //bundle_add(pBundleHandle, "filecount", "1"); + service_add_extra_data(pService, "filecount", "1"); + //bundle_add(pBundleHandle, "files", pAppData->szMediaUri); + service_add_extra_data(pService, "files", pAppData->szMediaUri); + break; + + default: + service_destroy(pService); //bundle_free(pBundleHandle); + return FALSE; + } + + pUiGadgetHandle = ug_create(NULL, st_MpExternalUG[nExternalUGType].szUgName, UG_MODE_FULLVIEW, pService, &cbs); + + nCurUGType = nExternalUGType; + + service_destroy(pService); //bundle_free(pBundleHandle); + + pHardKeyEventHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpExternalUgHardkeyDownCb, pUserData); + + /* !!!!!SET ROTATE STATE!!!!! */ + + return TRUE; +} + +void MpExternalUgUnload(void) +{ + VideoLogInfo(""); + + MpExternalUGDestroyPopupList(); + + if (pHardKeyEventHandler) { + ecore_event_handler_del(pHardKeyEventHandler); + pHardKeyEventHandler = NULL; + } + + if (pUiGadgetHandle) { + ug_destroy(pUiGadgetHandle); + pUiGadgetHandle = NULL; + } + + nCurUGType = MP_EXTERNAL_UG_NONE; +} + +void MpExternalUgDestroyAll(void) +{ + VideoLogInfo(""); + + MpExternalUGDestroyPopupList(); + + ug_destroy_all(); +} + +int MpExternalUgGetCurUgState() +{ + VideoLogInfo(""); + + return (int)nCurUGType; +} + +void MpExternalUgSetUgState(MpExternalUGType nExternalUGType) +{ + VideoLogInfo(""); + + nCurUGType = nExternalUGType; +} + +bool MpExternalUgShow(void *pUserData, void *pParent) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + Evas_Object *pButton = NULL; + Evas_Object *pBox = NULL; + + MpExternalUGDestroyPopupList(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pUGPopupHandle = elm_popup_add(pAppData->pMainWindow); + elm_object_style_set(pUGPopupHandle, "menustyle"); + elm_object_part_text_set(pUGPopupHandle, "title,text", MP_COM_BUTTON_SHARE); + evas_object_size_hint_weight_set(pUGPopupHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + pButton = elm_button_add(pUGPopupHandle); + elm_object_style_set (pButton, "popup_button/default"); + elm_object_text_set(pButton, MP_COM_CLOSE); + elm_object_part_content_set(pUGPopupHandle, "button1", pButton); + evas_object_smart_callback_add(pButton, "clicked", MpExternalUGPopupCb, (void*)pAppData); + + Elm_Genlist_Item_Class *st_Share_Itc = NULL; + + st_Share_Itc = elm_genlist_item_class_new(); + + st_Share_Itc->item_style = "1text"; + st_Share_Itc->func.text_get = (void *)MpExternalUgGetLabelOfGenlistItemCb; + st_Share_Itc->func.content_get = NULL; + st_Share_Itc->func.state_get = NULL; + st_Share_Itc->func.del = NULL; + /* Create genlist handle */ + pUGGenList = elm_genlist_add(pUGPopupHandle); + evas_object_size_hint_weight_set(pUGGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(pUGGenList, EVAS_HINT_FILL, EVAS_HINT_FILL); + + szUgItems = (char **)calloc(1, sizeof(char *) * MP_EXTERNAL_UG_MAX); + int idx = 0; + for(idx = 0; idx < MP_EXTERNAL_UG_MAX; idx++) + { + szUgItems[idx] = (char *)calloc(1, STR_LEN_MAX * sizeof(char)); + } + + /* Set Sound alive string */ + strncpy(szUgItems[MP_EXTERNAL_UG_MESSAGE], MP_SHARE_MESSAGE, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_EMAIL], MP_SHARE_EMAIL, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_BLUETOOTH], MP_SHARE_BLUETOOTH, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_FTM], MP_SHARE_FTM, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_YOUTUBE], MP_SHARE_YOUTUBE, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_FACEBOOK], MP_SHARE_FACEBOOK, STR_LEN_MAX - 1); + + elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_MESSAGE, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData); + elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_EMAIL, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData); + elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_BLUETOOTH, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData); + + elm_genlist_item_class_free(st_Share_Itc); + + pBox = elm_box_add(pUGPopupHandle); + evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get()); + + elm_box_pack_end(pBox, pUGGenList); + elm_object_content_set(pUGPopupHandle, pBox); + + + evas_object_show(pUGGenList); + evas_object_show(pUGPopupHandle); + + + return TRUE; +} +void MpExternalUgHide() +{ + MpExternalUGDestroyPopupList(); +} + + diff --git a/src/mp-util-media-service.c b/src/mp-util-media-service.c new file mode 100755 index 0000000..1155d62 --- /dev/null +++ b/src/mp-util-media-service.c @@ -0,0 +1,2497 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include + + +#include "mp-video-log.h" +#include "mp-video-value-define.h" +#include "mp-video-type-define.h" +#include "mp-util-media-service.h" +#include "mp-video-string-define.h" + + + +static Eina_List *VideoFolderList = NULL; +static Eina_List *VideoItemList = NULL; +static int nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE; +static int nTotalVideoTypeFiles = 0; +static int nNumberOfVideoItemByType = 0; + + +bool MpUtilMediaSvcIs3gpFile(char* szFileUri) +{ + VideoLogInfo(""); + + int nRet = FALSE; + char* szTmpUriPath = szFileUri; + + if(szTmpUriPath) + { + char *szExt = NULL; + szExt = strrchr(szTmpUriPath, '.'); + + if((szExt != NULL) && ((szExt+1) != NULL)) + { + if(!strcmp(szExt+1, "3gp")) + { + nRet = TRUE; + } + else + { + nRet = FALSE; + } + } + else + { + VideoLogInfo("No exist extension."); + nRet = FALSE; + } + } + else + { + VideoLogInfo("No exist file uri."); + nRet = FALSE; + } + + return nRet; +} + +static bool MpUtilMediaSvcIterateForGetVideoItemCb(media_info_h pVideoItem, void *pUserData) +{ + VideoLogInfo(""); + + media_info_h *pAssignFolderItem = (media_info_h*)pUserData; + + if(pVideoItem != NULL) + { + char *szTmpStr = NULL; + media_info_clone(pAssignFolderItem, pVideoItem); + media_info_get_display_name(*pAssignFolderItem, &szTmpStr); + VideoLogInfo("Display name : %s", szTmpStr); + + if(szTmpStr) + { + free(szTmpStr); + } + } + + return FALSE; +} + +static bool MpUtilMediaSvcIterateForVideoItemListViewCb(media_info_h pMediaItem, void *pUserData) +{ + VideoLogInfo(""); + + media_info_h pAssignMediaItem = NULL; + media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS; + + media_info_get_media_type(pMediaItem, &nMediaType); + VideoLogInfo("nMediaType : %d", nMediaType); + + if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO) + { + char *szTmpItemFilePath = NULL; + char szItemFilePath[STR_LEN_MAX] = {0}; + + media_info_get_file_path(pMediaItem, &szTmpItemFilePath); + + if(szTmpItemFilePath == NULL) + { + VideoLogInfo("Fail to get file path of media item."); + return FALSE; + } + strncpy(szItemFilePath, szTmpItemFilePath, STR_LEN_MAX - 1); + + free(szTmpItemFilePath); + szTmpItemFilePath = NULL; + + VideoLogInfo("szItemFilePath : %s", szItemFilePath); + + nTotalVideoTypeFiles++; + + switch(nWhatFileType) + { + case MP_MEDIA_VIDEO_FILE_TYPE: + if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == TRUE) + { + return TRUE; + } + break; + + case MP_MEDIA_CAMERA_FILE_TYPE: + if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == FALSE) + { + return TRUE; + } + break; + + case MP_MEDIA_ALL_FILE_TYPE: + break; + } + + nNumberOfVideoItemByType++; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + + media_info_clone(&pAssignMediaItem, pMediaItem); + Eina_List **pList = (Eina_List **)pUserData; + *pList = eina_list_append(*pList, pAssignMediaItem); + } + + return TRUE; +} + +static bool MpUtilMediaSvcIterateCb(media_info_h pMediaItem, void *pUserData) +{ + VideoLogInfo(""); + + media_info_h pAssignMediaItem = NULL; + media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS; + + media_info_get_media_type(pMediaItem, &nMediaType); + VideoLogInfo("nMediaType : %d", nMediaType); + + if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO) + { + media_info_clone(&pAssignMediaItem, pMediaItem); + Eina_List **pList = (Eina_List **)pUserData; + *pList = eina_list_append(*pList, pAssignMediaItem); + + nTotalVideoTypeFiles++; + nNumberOfVideoItemByType++; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + } + + return TRUE; +} + +static bool MpUtilMediaSvcIterateForGetFolderCb(media_folder_h pFolderItem, void *pUserData) +{ + VideoLogInfo(""); + + media_folder_h *pAssignFolderItem = (media_folder_h*)pUserData; + + if(pFolderItem != NULL) + { + char *szTmpStr = NULL; + media_folder_clone(pAssignFolderItem, pFolderItem); + media_folder_get_name(*pAssignFolderItem, &szTmpStr); + VideoLogInfo("Folder name : %s", szTmpStr); + + if(szTmpStr) + { + free(szTmpStr); + } + } + + return FALSE; +} + +static bool MpUtilMediaSvcIterateForFolderListCb(media_folder_h pFolderItem, void *pUserData) +{ + VideoLogInfo(""); + + media_folder_h pAssignFolderItem = NULL; + media_folder_clone(&pAssignFolderItem, pFolderItem); + Eina_List **pList = (Eina_List **)pUserData; + *pList = eina_list_append(*pList, pAssignFolderItem); + + return TRUE; +} + +static bool MpUtilMediaSvcIterateGetTagCb(media_tag_h pTagItem, void *pUserData) +{ + VideoLogInfo(""); + + media_tag_h *pAssignTagItem = (media_tag_h*)pUserData; + + if(!pTagItem) + { + char *szTmpStr = NULL; + media_tag_clone(pAssignTagItem, pTagItem); + media_tag_get_name(*pAssignTagItem, &szTmpStr); + VideoLogInfo("szTagName : %s", szTmpStr); + + if(szTmpStr) + { + free(szTmpStr); + } + } + + return FALSE; +} + +static bool MpUtilMediaSvcIterateGetVideoItemOfTagCb(media_info_h media, void *pUserData) +{ + VideoLogInfo(""); + + return TRUE; +} + +// +// Internal function +// +bool MpUtilMediaSvcGetFileDirectoryName(char *szFilePath, char *szFileName, char *szDirectoryName, char *szDirectoryPath) +{ + VideoLogInfo(""); + + if(!szFilePath) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + int nCount = 0; + int nLoopCount = 0; + + for(nLoopCount = strlen(szFilePath); nLoopCount >= 0; nLoopCount--) + { + if (szFilePath[nLoopCount] != '\0') + { + nCount++; + } + + if(szFilePath[nLoopCount] == '/') + { + if(szFileName) + { + memcpy(szFileName, &szFilePath[nLoopCount + 1], --nCount); + *(szFileName + nCount) = '\0'; + VideoLogInfo("File name = %s\n", szFileName); + } + + if(szDirectoryPath) + { + memcpy(szDirectoryPath, &szFilePath[0], nLoopCount); + *(szDirectoryPath + nLoopCount + 1) = '\0'; + VideoLogInfo("Directory path = %s", szDirectoryPath); + } + + if(szDirectoryName) + { + nCount = 0; + for(--nLoopCount; nLoopCount >= 0; nLoopCount--) + { + nCount++; + if(szFilePath[nLoopCount] == '/') + { + memcpy(szDirectoryName, &szFilePath[nLoopCount + 1], --nCount); + *(szDirectoryName + nCount) = '\0'; + VideoLogInfo("Directory Name = %s", szDirectoryName); + + return TRUE; + } + } + } + + return TRUE; + } + } + + return FALSE; +} + +// +// External function +// + +void MpUtilMediaSvcInitSession(void) +{ + VideoLogInfo(""); + + if(media_content_connect() != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to connect to media content db."); + } + else + { + VideoLogInfo("Success to connect to media content db."); + } +} + +void MpUtilMediaSvcFinishSession(void) +{ + VideoLogInfo(""); + + if(media_content_disconnect() != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to disconnect from media content db."); + return; + } + + + VideoLogInfo("Success to disconnect from media content db."); + return; +} + +bool MpUtilMediaSvcDestoryVideoItemList(void) +{ + if(!VideoItemList) + { + VideoLogInfo("VideoItemList is empty already."); + return FALSE; + } + + media_info_h pTmpVideoItem = NULL; + EINA_LIST_FREE(VideoItemList, pTmpVideoItem) + { + if(pTmpVideoItem) + { + media_info_destroy(pTmpVideoItem); + } + } + + VideoItemList = NULL; + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListFromFolder(char *szFolderPath, int nSortType) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + if(!szFolderPath) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_folder_h m_FolderHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + + char *szFolderID = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + char szOrderObj[STR_LEN_MAX] = {0}; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and FOLDER_PATH = \"%s\"", szFolderPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetFolderCb, &m_FolderHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail media_folder_foreach_folder_from_db()."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(!m_FolderHandle) + { + VideoLogInfo("Fail to get folder handle."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1"); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_folder_get_folder_id(m_FolderHandle, &szFolderID) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get folder id."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_folder_foreach_media_from_db(szFolderID, m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + } + + if(szFolderID) + { + free(szFolderID); + szFolderID = NULL; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + char szOrderObj[STR_LEN_MAX] = {0}; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListForListView(int nSortType) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + char szOrderObj[STR_LEN_MAX] = {0}; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType) +{ + VideoLogInfo(""); + + nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE; + + return MpUtilMediaSvcExtractVideoListForListView(nSortType); +} + +bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType) +{ + VideoLogInfo(""); + + nWhatFileType = MP_MEDIA_CAMERA_FILE_TYPE; + + return MpUtilMediaSvcExtractVideoListForListView(nSortType); +} + +bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName) +{ + VideoLogInfo(""); + + if(!szTagName) + { + VideoLogInfo("[ERR] No Exist tag name."); + return FALSE; + } + + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo("szTagName : %s", szTagName); + + int nTagID = 0; + char szTmpStr[STR_LEN_MAX] = {0}; + + media_tag_h pTagHandle = NULL; + filter_h m_FilterHandle = NULL; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + //snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%s\"", szTagName);//snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"\%%s\%\"", szTagName); + snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%%%s%%\"", szTagName); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, TAG_NAME, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_tag_foreach_tag_from_db(m_FilterHandle, MpUtilMediaSvcIterateGetTagCb, &pTagHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail media_tag_foreach_tag_from_db()."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(!pTagHandle) + { + VideoLogInfo("Fail to get pTagHandle."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_tag_get_tag_id(pTagHandle, &nTagID) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get tag ID."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + VideoLogInfo("nTagID : %d", nTagID); + + memset(szTmpStr, 0, STR_LEN_MAX); + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1"); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_tag_foreach_media_from_db(nTagID, m_FilterHandle, MpUtilMediaSvcIterateGetVideoItemOfTagCb, VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail media_tag_foreach_media_from_db()."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + if(m_FilterHandle) + { + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + m_FilterHandle = NULL; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + char szOrderObj[STR_LEN_MAX] = {0}; + char szTmpStr[STR_LEN_MAX] = {0}; + + nWhatFileType = MP_MEDIA_ALL_FILE_TYPE; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_FAVOURITE = 1"); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + char szOrderObj[STR_LEN_MAX] = {0}; + char szTmpStr[STR_LEN_MAX] = {0}; + + nWhatFileType = MP_MEDIA_ALL_FILE_TYPE; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_TITLE like \"%%%s%%\"", keyword); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + + +void MpUtilMediaSvcDestoryVideoList(void) +{ + VideoLogInfo(""); + + if(VideoFolderList) + { + MpUtilMediaSvcDestoryVideoFolderList(); + VideoFolderList = NULL; + } + + if(VideoItemList) + { + MpUtilMediaSvcDestoryVideoItemList(); + VideoItemList = NULL; + } + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; +} + +bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath) +{ + if(!szFilePath) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + if(!VideoItemList) + { + VideoLogInfo("pList is empty already."); + return FALSE; + } + + VideoLogInfo("szFilePath : %s", szFilePath); + + char *szGetFilePath = NULL; + media_info_h pItem = NULL; + Eina_List *pIterateList = NULL; + EINA_LIST_FOREACH(VideoItemList, pIterateList, pItem) + { + if(pItem) + { + if(media_info_get_file_path(pItem, &szGetFilePath) == MEDIA_CONTENT_ERROR_NONE) + { + if(szGetFilePath) + { + if(!strcmp(szGetFilePath, szFilePath)) + { + VideoLogInfo("Find %s", szGetFilePath); + char *szMediaID = NULL; + media_info_get_media_id(pItem, &szMediaID); + media_info_delete_from_db(szMediaID); + VideoItemList = eina_list_remove(VideoItemList, pItem); + media_info_destroy(pItem); + + nNumberOfVideoItemByType--; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + + if(szMediaID) + { + free(szMediaID); + } + + if(szGetFilePath) + { + free(szGetFilePath); + } + + return TRUE; + } + } + else + { + VideoLogInfo("No exist %s in media info Database module.", szFilePath); + return FALSE; + } + } + } + } + return FALSE; +} + +bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex) +{ + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(!VideoItemList) + { + VideoLogInfo("pList is empty already."); + return FALSE; + } + + media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pItem) + { + char *szMediaID = NULL; + media_info_get_media_id(pItem, &szMediaID); + if(szMediaID) + { + media_info_delete_from_db(szMediaID); + VideoItemList = eina_list_remove(VideoItemList, pItem); + free(szMediaID); + media_info_destroy(pItem); + nNumberOfVideoItemByType--; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + } + else + { + VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex); + return FALSE; + } + } + else + { + VideoLogInfo("Fail to remove item in media svc and list."); + return FALSE; + } + + return TRUE; +} + +bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex) +{ + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(!VideoItemList) + { + VideoLogInfo("pList is empty already."); + return FALSE; + } + + media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pItem) + { + char *szMediaID = NULL; + media_info_get_media_id(pItem, &szMediaID); + if(szMediaID) + { + media_info_delete_from_db(szMediaID); + free(szMediaID); + nNumberOfVideoItemByType--; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + } + else + { + VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex); + return FALSE; + } + } + else + { + VideoLogInfo("Fail to remove item in media svc and list."); + return FALSE; + } + + return TRUE; +} + + +bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID) +{ + VideoLogInfo(""); + + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + bool bRet = FALSE; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + bRet = FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + bRet = FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + bRet = FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + bRet = FALSE; + } + + if(pVideoItem) + { + char *szMediaID = NULL; + media_info_get_media_id(pVideoItem, &szMediaID); + if(szMediaID) + { + strncpy(szVideoID, szMediaID, STR_LEN_MAX-2); + free(szMediaID); + } + media_info_destroy(pVideoItem); + bRet = TRUE; + } + else + { + bRet = FALSE; + } + + return bRet; +} + +unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath) +{ + if(!szPath) + { + VideoLogInfo("No exist video path."); + return 0; + } + + VideoLogInfo("szPath : %s", szPath); + + time_t LastPlayedTime = 0; + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + //snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + if(pVideoItem) + { + video_meta_h pVideoMetaHandle = NULL; + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE) + { + char *szTmpStr = NULL; + video_meta_get_title(pVideoMetaHandle, &szTmpStr); + if(szTmpStr) + { + VideoLogInfo("Title : %s", szTmpStr); + free(szTmpStr); + } + else + { + VideoLogInfo("No exist title"); + } + + video_meta_get_played_time(pVideoMetaHandle, &LastPlayedTime); + VideoLogInfo("Last Played Time : %d", LastPlayedTime); + video_meta_destroy(pVideoMetaHandle); + } + media_info_destroy(pVideoItem); + } + + return (unsigned int)LastPlayedTime; +} + +unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath) +{ + if(!szPath) + { + VideoLogInfo("No exist video path."); + return 0; + } + + VideoLogInfo("szPath : %s", szPath); + + int nDurationTime = 0; + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + if(pVideoItem) + { + video_meta_h pVideoMetaHandle = NULL; + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE) + { + video_meta_get_duration(pVideoMetaHandle, &nDurationTime); + VideoLogInfo("Duration time : %d", nDurationTime); + video_meta_destroy(pVideoMetaHandle); + } + media_info_destroy(pVideoItem); + } + + return (unsigned int)nDurationTime; +} + +int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath) +{ + if(!szPath) + { + VideoLogInfo("No exist video path."); + return 0; + } + + VideoLogInfo("szPath : %s", szPath); + + unsigned long long nSize = 0; + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + if(pVideoItem) + { + media_info_get_size(pVideoItem, &nSize); + VideoLogInfo("Video file size time : %d", nSize); + media_info_destroy(pVideoItem); + } + + return nSize; +} + +char *MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri) +{ + if(!szMediaUri) + { + VideoLogInfo("No exist video path."); + return NULL; + } + + VideoLogInfo("szPath : %s", szMediaUri); + + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char *szThumbnailPath = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + memset(szTmpStr, 0, STR_LEN_MAX); + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + if(pVideoItem) + { + media_info_get_thumbnail_path(pVideoItem, &szThumbnailPath); + VideoLogInfo("Video thumbnail file path : %s", szThumbnailPath); + media_info_destroy(pVideoItem); + } + + return szThumbnailPath; +} + +void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime) +{ + if(!szMediaUri) + { + VideoLogInfo("No exist media uri."); + return; + } + + VideoLogInfo("szMediaUri : %s, nLastPlayedTime : %d", szMediaUri, nLastPlayedTime); + + time_t LastPlayedTime = (time_t)nLastPlayedTime; + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return; + } + + video_meta_h pVideoMetaHandle = NULL; + + if(pVideoItem) + { + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get pVideoMetaHandle."); + } + else + { + if(pVideoMetaHandle) + { + char *szTmpStr = NULL; + video_meta_get_title(pVideoMetaHandle, &szTmpStr); + if(szTmpStr) + { + VideoLogInfo("Title : %s", szTmpStr); + free(szTmpStr); + } + else + { + VideoLogInfo("No exist title"); + } + + video_meta_set_played_time(pVideoMetaHandle, LastPlayedTime); + video_meta_update_to_db(pVideoMetaHandle); + video_meta_destroy(pVideoMetaHandle); + VideoLogInfo("Last Played Time : %d", LastPlayedTime); + } + else + { + VideoLogInfo("No exist pVideoMetaHandle"); + } + } + media_info_destroy(pVideoItem); + } +} + +bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char *szCurrMediaUri, char *szPreMediaUri, char *szNextMediaUri, bool bLoop) +{ + VideoLogInfo(""); + + if(!szCurrMediaUri) + { + VideoLogInfo("[ERR] No exist current file path."); + return FALSE; + } + + if(!VideoItemList) + { + VideoLogInfo("No exist VideoItemList."); + if(bLoop) + { + strncpy(szNextMediaUri, szCurrMediaUri, (sizeof(char) * STR_LEN_MAX) - 1); + } + return FALSE; + } + + int nCount = 0; + int nListSize = 0; + media_info_h pVideoItem = NULL; + Eina_List *pIterateList = NULL; + + memset(szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX); + memset(szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX); + + nListSize = eina_list_count(VideoItemList); + + if(nListSize <= 1) + { + VideoLogInfo("Video list size == 1."); + return FALSE; + } + + EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem) + { + if(pVideoItem == NULL) + { + continue; + } + + char *szVideoItemFilePath = NULL; + media_info_get_file_path(pVideoItem, &szVideoItemFilePath); + if(szVideoItemFilePath) + { + VideoLogInfo("URL of the File item - %s (%d / %d)", szVideoItemFilePath, nCount, nListSize); + if(!strcmp(szVideoItemFilePath, szCurrMediaUri)) + { + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + + pVideoItem = NULL; + pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount - 1); + if(pVideoItem) + { + media_info_get_file_path(pVideoItem, &szVideoItemFilePath); + strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1); + + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + } + else if(bLoop) + { + media_info_h m_LastItem = (media_info_h)eina_list_nth(VideoItemList, nListSize - 1); + VideoLogError("%p", m_LastItem); + if(m_LastItem) + { + media_info_get_file_path(m_LastItem, &szVideoItemFilePath); + strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1); + + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + } + m_LastItem = NULL; + } + + pVideoItem = NULL; + pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount + 1); + if(pVideoItem) + { + media_info_get_file_path(pVideoItem, &szVideoItemFilePath); + strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1); + + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + } + else if(bLoop) + { + media_info_h m_FirstItem = (media_info_h)eina_list_nth(VideoItemList, 0); + if(m_FirstItem) + { + media_info_get_file_path(m_FirstItem, &szVideoItemFilePath); + strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1); + + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + } + m_FirstItem = NULL; + } + + VideoLogInfo("PreMediaUri:%s", szPreMediaUri); + VideoLogInfo("NextMediaUri:%s", szNextMediaUri); + + return TRUE; + } + } + + ++nCount; + } + + return FALSE; +} + +char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szVideoItemFilePath = NULL; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + media_info_get_file_path(pVideoItem, &szVideoItemFilePath); + VideoLogInfo("szVideoItemFilePath : %s", szVideoItemFilePath); + } + + return szVideoItemFilePath; +} + +char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szVideoItemThumbnailPath = NULL; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + media_info_get_thumbnail_path(pVideoItem, &szVideoItemThumbnailPath); + VideoLogInfo("szVideoItemFilePath : %s", szVideoItemThumbnailPath); + } + + return szVideoItemThumbnailPath; +} + +char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szTitle = NULL; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + media_info_get_display_name(pVideoItem, &szTitle); + VideoLogInfo("szTitle : %s", szTitle); + } + + return szTitle; +} + +int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return 0; + } + + int nDurationTime = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + video_meta_h pVideoMetaHandle = NULL; + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE) + { + video_meta_get_duration(pVideoMetaHandle, &nDurationTime); + VideoLogInfo("Duratiob time : %d", nDurationTime); + video_meta_destroy(pVideoMetaHandle); + } + } + + return nDurationTime; +} + +int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + time_t nLastPlayedTime = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + video_meta_h pVideoMetaHandle = NULL; + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE) + { + video_meta_get_played_time(pVideoMetaHandle, &nLastPlayedTime); + VideoLogInfo("Last Play time : %d", nLastPlayedTime); + video_meta_destroy(pVideoMetaHandle); + } + } + + return (int)nLastPlayedTime; +} + +int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + unsigned long long nSize = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + if(pVideoItem) + { + media_info_get_size(pVideoItem, &nSize); + VideoLogInfo("Video file size time : %d", nSize); + } + + return nSize; +} + +int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + int nWidth = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + video_meta_h pVideoMetaHandle = NULL; + + if(pVideoItem) + { + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get pVideoMetaHandle."); + } + else + { + if(pVideoMetaHandle) + { + char *szTmpStr = NULL; + video_meta_get_title(pVideoMetaHandle, &szTmpStr); + if(szTmpStr) + { + VideoLogInfo("Title : %s", szTmpStr); + free(szTmpStr); + } + else + { + VideoLogInfo("No exist title"); + } + + video_meta_get_width(pVideoMetaHandle, &nWidth); + video_meta_destroy(pVideoMetaHandle); + VideoLogInfo("Video Width : %f", nWidth); + } + else + { + VideoLogInfo("No exist pVideoMetaHandle"); + } + } + } + + return nWidth; +} + +int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + int nHeight = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + video_meta_h pVideoMetaHandle = NULL; + + if(pVideoItem) + { + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get pVideoMetaHandle."); + } + else + { + if(pVideoMetaHandle) + { + char *szTmpStr = NULL; + video_meta_get_title(pVideoMetaHandle, &szTmpStr); + if(szTmpStr) + { + VideoLogInfo("Title : %s", szTmpStr); + free(szTmpStr); + } + else + { + VideoLogInfo("No exist title"); + } + + video_meta_get_height(pVideoMetaHandle, &nHeight); + video_meta_destroy(pVideoMetaHandle); + VideoLogInfo("Video Width : %f", nHeight); + } + else + { + VideoLogInfo("No exist pVideoMetaHandle"); + } + } + } + + return nHeight; +} + +time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + time_t nDateTime = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + if(pVideoItem) + { + media_info_get_modified_time(pVideoItem, &nDateTime); + VideoLogInfo("Video date time : %d", nDateTime); + } + + return nDateTime; +} + +char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + return NULL; +} + +double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + double nLongitude = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + if(pVideoItem) + { + media_info_get_longitude(pVideoItem, &nLongitude); + VideoLogInfo("nLongitude : %f", nLongitude); + } + + return nLongitude; +} + +double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + double nLatitude = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + if(pVideoItem) + { + media_info_get_latitude(pVideoItem, &nLatitude); + VideoLogInfo("nLongitude : %f", nLatitude); + } + + return nLatitude; +} + + + + +int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo(""); + + return (int)eina_list_count(VideoItemList); +} + +int MpUtilMediaSvcGetNumberOfVideoItemByType(void) +{ + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + + return nNumberOfVideoItemByType; +} + +int MpUtilMediaSvcGetTotalVideoTypeFiles(void) +{ + VideoLogInfo("nTotalVideoTypeFiles : %d", nTotalVideoTypeFiles); + + return (int)nTotalVideoTypeFiles; +} + +void* MpUtilMediaSvcGetVideoitem(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return NULL; + } + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + VideoLogInfo(""); + + return (void*)eina_list_nth(VideoItemList, nVideoItemIndex); +} + +void MpUtilMediaSvcPrintListInfo(void) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return; + } + + VideoLogInfo("List size : %d", MpUtilMediaSvcGetNumberOfVideoItemByType()); + + media_info_h pVideoItem = NULL; + Eina_List *pIterateList = NULL; + int nCounter = 0; + EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem) + { + if(pVideoItem) + { + char *szTitle = NULL; + media_info_get_display_name(pVideoItem, &szTitle); + if(szTitle) + { + VideoLogInfo("%d - Print title of all list items : %s", nCounter, szTitle); + free(szTitle); + } + else + { + VideoLogInfo("%d - Print title of all list items : NULL.", nCounter); + } + nCounter++; + } + } +} + +int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath) +{ + if(!VideoItemList || !szPath) + { + VideoLogInfo("[ERR] No exist VideoItemList or szPath."); + return 99999; + } + + VideoLogInfo(""); + + unsigned int nCounter = 0; + + Eina_List *pCurList = NULL; + media_info_h pVideoItem = NULL; + + EINA_LIST_FOREACH(VideoItemList, pCurList, pVideoItem) + { + if(pVideoItem) + { + char *szTitle = NULL; + media_info_get_display_name(pVideoItem, &szTitle); + VideoLogInfo("szTitle : %s", szTitle); + + if(!strcmp(szTitle , szPath)) + { + VideoLogInfo("Find same file url. index : %d", nCounter); + free(szTitle); + return nCounter; + } + free(szTitle); + } + + nCounter++; + } + + return 99999; +} + +bool MpUtilMediaSvcExtractVideoFolderList(int nSortType) +{ + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + + char szTmpStr[STR_LEN_MAX] = {0}; + char szOrderObj[STR_LEN_MAX] = {0}; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1"); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForFolderListCb, &VideoFolderList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail media_folder_foreach_folder_from_db()."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + } + + return TRUE; +} + +bool MpUtilMediaSvcDestoryVideoFolderList(void) +{ + if(!VideoFolderList) + { + VideoLogInfo("VideoFolderList is empty already."); + return FALSE; + } + + media_folder_h pTmpFolderItem = NULL; + EINA_LIST_FREE(VideoFolderList, pTmpFolderItem) + { + if(pTmpFolderItem) + { + media_folder_destroy(pTmpFolderItem); + } + } + + VideoFolderList = NULL; + + return TRUE; +} + +int MpUtilMediaSvcGetVideoFolderListSize(void) +{ + if(!VideoFolderList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo(""); + + if(VideoFolderList) + { + return (int)eina_list_count(VideoFolderList); + } + + return 0; +} + +char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex) +{ + if(!VideoFolderList) + { + VideoLogInfo("Not exist video folder list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex); + + if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szFolderName = NULL; + media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex); + if(pFolderItem) + { + media_folder_get_name(pFolderItem, &szFolderName); + + if(szFolderName) + { + VideoLogInfo("szFolderName : %s", szFolderName); + return szFolderName; + } + } + + return NULL; +} + +char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex) +{ + if(!VideoFolderList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex); + + if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szFolderPath = NULL; + media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex); + if(pFolderItem) + { + media_folder_get_path(pFolderItem, &szFolderPath); + + if(szFolderPath) + { + VideoLogInfo("szFolderPath : %s", szFolderPath); + return szFolderPath; + } + } + + return NULL; +} + +static bool MpUtilMediaSvcBookmarkItemCb(media_bookmark_h pBookmark, void *pUserData) +{ + VideoLogInfo(""); + + media_bookmark_h pAssignBookmark = NULL; + media_bookmark_clone(&pAssignBookmark, pBookmark); + + GList **pList = (GList**)pUserData; + *pList = g_list_append(*pList, pAssignBookmark); + + return TRUE; +} + +bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list) +{ + if(!vid) + { + VideoLogInfo("No exist vid."); + return FALSE; + } + + if(!list) + { + VideoLogInfo("No exist list."); + return FALSE; + } + + VideoLogInfo("vid : %s", vid); + + filter_h m_FilterHandle = NULL; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_bookmark_from_db(vid, m_FilterHandle, MpUtilMediaSvcBookmarkItemCb, list) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get bookmark of video item with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + +void MpUtilMediaSvcBookmarkListClear(GList *pList) +{ + VideoLogInfo(""); + + if(pList == NULL) + { + VideoLogInfo("list == NULL\n"); + return; + } + + media_bookmark_h pBookmarkItem = NULL; + + int nCount = 0; + int i = 0; + + nCount = g_list_length(pList); + for(i = 0; i < nCount; i++) + { + pBookmarkItem = (void *)g_list_nth_data(pList, i); + if(pBookmarkItem) + { + media_bookmark_destroy(pBookmarkItem); + pBookmarkItem = NULL; + } + } + + g_list_free(pList); +} + +int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path) +{ + VideoLogInfo(""); + int ret = 0; + + if(vid < 0 || path == NULL) + { + VideoLogInfo("Invalid Parameter : %d, %s", vid, path); + return -1; + } + + if(media_bookmark_insert_to_db(vid, position, path) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("minfo_add_bookmark ERR : %d", ret); + return -1; + } + + return 0; +} + +int MpUtilMediaSvcBookmarkDelete(char *vid, int position) +{ + VideoLogInfo(""); + bool ret = 0; + + int bookmarkid = 0; + char *path = NULL; + + GList *list = NULL; + media_bookmark_h data = NULL; + Eina_List *l = NULL; + + ret = MpUtilMediaSvcBookmarkListGet(vid, &list); + if(ret == FALSE) + { + return -1; + } + + EINA_LIST_FOREACH((Eina_List *)list, l, data) + { + if(data) + { + time_t nMarkedTime; + media_bookmark_get_marked_time(data, &nMarkedTime); + if(position == nMarkedTime) + { + media_bookmark_get_bookmark_id(data, &bookmarkid); + media_bookmark_get_thumbnail_path(data, &path); + break; + } + } + } + + MpUtilMediaSvcBookmarkListClear(list); + + if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("[ERR] media_bookmark_delete_from_db()"); + if(path) + { + free(path); + path = NULL; + } + return -1; + } + + if(path == NULL) + { + VideoLogError("Thumbnail path is NULL"); + return -1; + } + + ecore_file_init(); + if(ecore_file_exists(path)) + { + if(ecore_file_remove(path)) + { + VideoLogInfo("Remove success :%s\n", path); + } + else + { + VideoLogInfo("Remove Failed :%s \n", path); + } + } + else + { + VideoLogInfo("The file not eixst :%s\n", path); + } + + ecore_file_shutdown(); + + if(path) + { + free(path); + path = NULL; + } + + return 0; +} + +int MpUtilMediaSvcBookmarkDeleteAll(char *vid) +{ + VideoLogInfo(""); + bool ret = 0; + + int bookmarkid = 0; + + GList *list = NULL; + media_bookmark_h data = NULL; + Eina_List *l = NULL; + char *szThumbnailPath = NULL; + + ret = MpUtilMediaSvcBookmarkListGet(vid, &list); + if(ret == FALSE) + { + return -1; + } + + EINA_LIST_FOREACH((Eina_List *)list, l, data) + { + if(data) + { + media_bookmark_get_bookmark_id(data, &bookmarkid); + media_bookmark_get_thumbnail_path(data, &szThumbnailPath); + + if(szThumbnailPath) + { + ecore_file_init(); + if(ecore_file_exists(szThumbnailPath)) + { + if(ecore_file_remove(szThumbnailPath)) + { + VideoLogInfo("Remove success : %s", szThumbnailPath); + } + else + { + VideoLogInfo("Remove Failed : %s", szThumbnailPath); + } + } + else + { + VideoLogInfo("The file not eixst :%s", szThumbnailPath); + } + ecore_file_shutdown(); + } + + if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("[ERR]minfo_delete_bookmark"); + return -1; + } + } + } + + MpUtilMediaSvcBookmarkListClear(list); + + return 0; +} + +char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle) +{ + char *szThumbnailPath = NULL; + + media_bookmark_get_thumbnail_path((media_bookmark_h)pBookmarkItemHandle, &szThumbnailPath); + + return szThumbnailPath; +} + +int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle) +{ + time_t nBookmarkTime; + + media_bookmark_get_marked_time((media_bookmark_h)pBookmarkItemHandle, &nBookmarkTime); + + return (int)nBookmarkTime; +} diff --git a/src/mp-util.c b/src/mp-util.c new file mode 100755 index 0000000..cc39ccf --- /dev/null +++ b/src/mp-util.c @@ -0,0 +1,1588 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +// CAPI +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-util-media-service.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +//#include "mp-video-info-ctrl.h" + +#define MP_LAUNCH_BLUETOOTH_PACKAGE_NAME "org.tizen.bluetooth" + +#define MP_UTIL_USER_AGENT_KEY "db/admin/uagent" +//#define MP_UTIL_TEMP_USER_AGENT_VALUE "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" +#define MP_UTIL_TEMP_USER_AGENT_VALUE "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/1.0; U; Bada/1.0; en-us) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B" +#define MP_UTIL_MMC_PATH "/opt/storage/sdcard" +#define MP_UTIL_FILE_PREFIX "file://" + +#define MP_UTIL_ALLSHARE_CHANGE_NOTI "memory/allshare/status" +#define MP_UTIL_ALLSHARE_NOTI_ON 1 +#define MP_UTIL_ALLSHARE_NOTI_OFF 0 + +#define MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS "db/private/org.tizen.video-player/preview_url_videos" +#define MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS "db/private/org.tizen.video-player/preview_url_records" + +static bool bAlphaSet = TRUE; + +static Ecore_X_Window pMainXwindow = 0; +static Ecore_X_Display *pX11DisplayHandle = NULL; + +static Evas_Object *pPopUpHandle = NULL; +static Evas_Object *pPopupWindow = NULL; + +static MpVideoRotateType nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL; + +/* + * Callback function + */ + +static void MpUtilBatteryStatusChangeCb(keynode_t *pKeyNode, void *pUserData) +{ + VideoLogInfo(""); + + int nLowBatteryStatus = 0; + + if (!pUserData) { + VideoLogInfo("User data is NULL."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!vconf_get_int + (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) { + if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) { + /* MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpUtilBatteryExitCb); */ + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + return; + } + } else { + VideoLogInfo("Fail to get vconf"); + } +} + +static void MpUtilMMCStatusChangeCb(keynode_t * pKeyNode, void *pUserData) +{ + VideoLogInfo(""); + + char szFilename[9] = { 0 }; + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + char *keyname = vconf_keynode_get_name(pKeyNode); + if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0) { + int nMMCState = vconf_keynode_get_int(pKeyNode); + if (nMMCState == VCONFKEY_FILEMANAGER_DB_UPDATED) { + strncpy(szFilename, pAppData->szMediaUri, sizeof(szFilename) - 1); + VideoLogInfo("FILE NAME[%s]", szFilename); + if (!strcmp(MP_UTIL_MMC_PATH, szFilename)) { + /* MpUtilNotifyPopUp(pAppData, "MMC card is ejected", NULL); */ + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + } + } else { + VideoLogInfo("Fail to get vconf"); + } +} + +/* + * External function + */ + +void MpUtilExitVideoPlayer(void) +{ + VideoLogInfo(""); + + elm_exit(); +} + +static void MpUtilDestroyMainWindow(void *pUserData, Evas_Object *pEvasObject, + void *pEvent) +{ + VideoLogInfo(""); + + MpUtilExitVideoPlayer(); +} + +void MpUtilResetForRelaunching(void) +{ + VideoLogInfo(""); + + pX11DisplayHandle = NULL; + pPopUpHandle = NULL; + pPopupWindow = NULL; +} + +void MpUtilSetAlphaOfMainWindow(bool bSetAlpha) +{ + VideoLogInfo(""); + + if(bSetAlpha) + { + } + else + { + } + bAlphaSet = bSetAlpha; +} + +void *MpUtilCreateMainWindow(const char *pStrName) +{ + VideoLogInfo(""); + + if (!pStrName) { + VideoLogInfo("[ERR] No exist pStrName."); + return NULL; + } + + if (pMainXwindow) { + evas_object_del((Evas_Object *)pMainXwindow); + pMainXwindow = 0; + } + + Evas_Object *pEvasObject; + + pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC); + if (pEvasObject) { + elm_win_title_set(pEvasObject, pStrName); + evas_object_smart_callback_add(pEvasObject, "delete,request", + MpUtilDestroyMainWindow, NULL); + elm_win_borderless_set(pEvasObject, EINA_FALSE); + } + + Evas *pEvas = evas_object_evas_get(pEvasObject); + Evas_Object *pMainRect = evas_object_rectangle_add(pEvas); + + if (pMainRect) + { + evas_object_size_hint_weight_set(pMainRect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_color_set(pMainRect, 0, 0, 0, 0); + evas_object_render_op_set(pMainRect, EVAS_RENDER_COPY); + evas_object_show(pMainRect); + elm_win_resize_object_add(pEvasObject, pMainRect); + } + pMainXwindow = elm_win_xwindow_get(pEvasObject); + + return (void *)pEvasObject; +} + +int MpUtilSetKeyGrab(const char *szKeyName, int nGrabMode) +{ + VideoLogInfo(""); + if (!pX11DisplayHandle) { + pX11DisplayHandle = ecore_x_display_get(); + } + + if (!pMainXwindow) { + VideoLogInfo("Not exist pMainXwindow."); + } + + utilx_grab_key(pX11DisplayHandle, pMainXwindow, szKeyName, nGrabMode); + return TRUE; +} + +int MpUtilSetKeyUngrab(const char *szKeyName) +{ + VideoLogInfo(""); + if (pMainXwindow && pX11DisplayHandle) { + utilx_ungrab_key(pX11DisplayHandle, pMainXwindow, szKeyName); + } + return TRUE; +} + + +bool MpUtilCheckRTSPType(char *szUriPath) +{ + if(szUriPath == NULL) { + VideoLogInfo("ERR:"); + return FALSE; + } + + //VideoLogInfo(" URI : %s", szUriPath); + + if (strstr(szUriPath, "rtp")) + return TRUE; + else if (strstr(szUriPath, "rtsp")) + return TRUE; + + return FALSE; +} + +int MpUtilCheckUriType(char *szUriPath) +{ + if(szUriPath == NULL) { + VideoLogInfo("ERR:"); + return FALSE; + } + + VideoLogInfo(" URI : %s", szUriPath); + + if (strstr(szUriPath, "rtp")) + return 1; + else if (strstr(szUriPath, "rtsp")) + return 1; + else if (strstr(szUriPath, "http")) + return 1; + else if (strstr(szUriPath, "https")) + return 1; + + return 0; +} + +bool MpUtilCheckLocalFileExist(char *uri) +{ + VideoLogInfo(""); + + if(uri == NULL) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + if(strstr(uri,MP_UTIL_FILE_PREFIX)) + { + if (!g_file_test(uri+strlen(MP_UTIL_FILE_PREFIX), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) + { + return FALSE; + } + return TRUE; + } + else + { + if(!g_file_test(uri, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) + { + return FALSE; + } + return TRUE; + } +} + +bool MpUtilCheckBatteryStatus(void) +{ + VideoLogInfo(""); + + int nLowBatteryStatus = 0; + + if (!vconf_get_int + (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) { + if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) { + return FALSE; + } + } + + return TRUE; +} + +int MpUtilBatteryStatusNoti(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + if(!pAppData) + { + VideoLogInfo("[ERR] No exist appdata."); + return FALSE; + } + + if(vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, MpUtilBatteryStatusChangeCb, pAppData)) + { + VideoLogInfo("[ERR] Fail to set Battery notification."); + /* return FALSE; */ + } + + return TRUE; +} + +int MpUtilBatteryStatusNotiIgnore(void) +{ + VideoLogInfo(""); + + if (vconf_ignore_key_changed + (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, + MpUtilBatteryStatusChangeCb) < 0) { + VideoLogInfo("[ERR] Fail to ignore battery status."); + return FALSE; + } + + return TRUE; +} + +int MpUtilMMCstatusNoti(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + if (!pAppData) { + VideoLogInfo("[ERR] No exist appdata."); + return FALSE; + } + + if (vconf_notify_key_changed + (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb, + pAppData) < 0) { + VideoLogInfo("[ERR] Fail to set MMC notification."); + //return FALSE; + } + + return TRUE; +} + +int MpUtilMMCstatusNotiIgnore(void) +{ + VideoLogInfo(""); + + if (vconf_ignore_key_changed + (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb) < 0) { + VideoLogInfo("[ERR] Fail to ignore MMC status."); + //return FALSE; + } + + return TRUE; +} + +int MpUtilGetRotationStateFromAppcore(void) +{ + VideoLogInfo(""); + int bLocked = -1; + + if (vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &bLocked) != 0) + { + VideoLogInfo("Get vlalue fail"); + return nCurRotateValue; + } + + if(bLocked == false) + { + switch(app_get_device_orientation()) + { + case APP_DEVICE_ORIENTATION_0: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL"); + nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL; + break; + + case APP_DEVICE_ORIENTATION_90: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE"); + nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_REVERSE; + break; + + case APP_DEVICE_ORIENTATION_180: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL"); + nCurRotateValue = VIDEO_ROTATE_PORTRAIT_REVERSE; + break; + + case APP_DEVICE_ORIENTATION_270: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE"); + nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_NORMAL; + break; + } + } + return nCurRotateValue; +} + +int MpUtilGetRotationState(void) +{ + VideoLogInfo(""); + + return nCurRotateValue; +} + +void MpUtilSetRotationState(int nCurRotation) +{ + VideoLogInfo(""); + + nCurRotateValue = nCurRotation; + + if (pPopupWindow) { + MpUtilRotateWindow(nCurRotation, pPopupWindow); + } +} + +bool MpUtilGetTitleFromFilepath(char *szFilepath, char *szTitle, int nLengthTitle) +{ + VideoLogInfo(""); + + if (!szFilepath || !szTitle) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + char *szTitleName; + char *szExt; + + memset(szTitle, 0, nLengthTitle); + + szTitleName = strrchr(szFilepath, '/'); + + if (szTitleName) + szTitleName++; + else + szTitleName = szFilepath; + + szExt = strrchr(szTitleName, '.'); + + if (szExt) { + int nTmpStringSize = szExt - szTitleName; + strncpy(szTitle, szTitleName, nTmpStringSize); + } else { + strncpy(szTitle, szTitleName, STR_LEN_MAX - 1); + } + + return TRUE; +} + +void MpUtilInitSession(void) +{ + VideoLogInfo(""); + + sound_manager_set_session_type(SOUND_SESSION_TYPE_EXCLUSIVE); +} + +void MpUtilFinishSession(void) +{ + VideoLogInfo(""); + //sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE); +} + +/* +void MpUtilVolumeTypeSet(void) +{ + VideoLogInfo(""); + + sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA); +} + +void MpUtilVolumeTypeUnset(void) +{ + VideoLogInfo(""); + + sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE); +} + +void MpUtilSetVolumeChangeCbUnset() +{ + VideoLogInfo(""); + + sound_manager_unset_volume_changed_cb(); +} +*/ + +void MpUtilDeletePopupHandle(void) +{ + VideoLogInfo(""); + + if (pPopUpHandle) { + evas_object_del(pPopUpHandle); + pPopUpHandle = NULL; + } else { + VideoLogInfo("No exist popup."); + } + + if (pPopupWindow) { + evas_object_del(pPopupWindow); + pPopupWindow = NULL; + } else { + VideoLogInfo("No exist popup window."); + } + + MpUtilSetAlphaOfMainWindow(TRUE); +} + +bool MpUtilNotifyPopUp(VideoAppData *pAppData, char *szContents, void *PopupButtonCallbackFunc) +{ + VideoLogInfo(""); + + if (pAppData == NULL || szContents == NULL) { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(pPopUpHandle, szContents); + elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR); + elm_popup_timeout_set(pPopUpHandle, 3.0); + + if(PopupButtonCallbackFunc) + { + evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData); + } + + if(pPopupWindow) + { + MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow); + } + + evas_object_show(pPopUpHandle); + + return TRUE; +} + +bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents, + void *PopupButtonCallbackFunc) +{ + VideoLogInfo(""); + + if (pAppData == NULL || szContents == NULL) { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(pPopUpHandle, szContents); + elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR); + elm_popup_timeout_set(pPopUpHandle, 3.0); + + if (PopupButtonCallbackFunc) { + evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData); + } + + evas_object_show(pPopUpHandle); + + return TRUE; +} + + +bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc) +{ + VideoLogInfo(""); + + if(szTitle == NULL || szContents == NULL || pAppData == NULL) + { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + Evas_Object *pButton = NULL; + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(pPopUpHandle, szContents); + elm_object_part_text_set(pPopUpHandle, "title,text", szTitle); + + pButton = elm_button_add(pPopUpHandle); + elm_object_style_set ( pButton, "popup_button/default"); + elm_object_text_set(pButton, MP_COM_SK_YES); + elm_object_part_content_set(pPopUpHandle, "button1", pButton); + + if(PopupYesButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupYesButtonCallbackFunc, (void*)pAppData); + } + + pButton = elm_button_add(pPopUpHandle); + elm_object_text_set(pButton, MP_COM_SK_NO); + elm_object_style_set ( pButton, "popup_button/default"); + elm_object_part_content_set(pPopUpHandle, "button2", pButton); + + if(PopupNoButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupNoButtonCallbackFunc, (void*)pAppData); + } + + //elm_popup_timeout_set(pPopUpHandle, 3.0); + + evas_object_show(pPopUpHandle); + + return TRUE; +} + +bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData) +{ + VideoLogInfo(""); + + if(pAppData == NULL) + { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + Evas_Object *pButton = NULL; + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_BODY_DELETE_Q); + + pButton = elm_button_add(pPopUpHandle); + elm_object_text_set(pButton, MP_COM_BODY_DELETE); + elm_object_style_set(pButton, "sweep/delete"); + elm_object_part_content_set(pPopUpHandle, "button1", pButton); + + if(PopupDeleteButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupDeleteButtonCallbackFunc, pUserData); + } + + pButton = elm_button_add(pPopUpHandle); + elm_object_text_set(pButton, MP_COM_BUTTON_CANCEL); + elm_object_part_content_set(pPopUpHandle, "button2", pButton); + + if(PopupCancelButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupCancelButtonCallbackFunc, pUserData); + } + + //elm_popup_timeout_set(pPopUpHandle, 3.0); + + evas_object_show(pPopUpHandle); + + return TRUE; +} + +void MpUtilSetLabelForDetail(Evas_Object *pBox, char *szString) +{ + VideoLogInfo(""); + + Evas_Object *pLabel = NULL; + + pLabel = elm_label_add(pBox); + elm_object_style_set(pLabel, "popup/default"); + elm_object_text_set(pLabel, szString); + elm_label_ellipsis_set(pLabel, EINA_TRUE); + elm_label_wrap_width_set(pLabel, 614 * elm_config_scale_get()); + evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_min_set(pLabel, 614 * elm_config_scale_get(), 35 * elm_config_scale_get()); + elm_box_pack_end(pBox, pLabel); + evas_object_show(pLabel); +} + +/*bool MpUtilDetailPopup(VideoAppData *pAppData, int nVideoItemIndex, char *szTitle, void *PopupButtonCallbackFunc) +{ + VideoLogInfo(""); + + if(szTitle == NULL || pAppData == NULL) + { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + char *szFilePath = NULL; + char *szVideoTitle = NULL; + + char szTmpStr[STR_LEN_MAX] = {0}; + char szTmpFileDate[STR_LEN_MAX] = {0}; + char szTmpFileExtension[STR_LEN_MAX] = {0}; + char szTmpFileSize[STR_LEN_MAX] = {0}; + + double nLongtitude = 0.0; + double nLatitude = 0.0; + + int nWidth = 0; + int nHeight = 0; + + Evas_Object *pBox = NULL; + Evas_Object *pButton = NULL; + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + szFilePath = MpUtilMediaSvcGetVideoUrl(nVideoItemIndex); + szVideoTitle = MpUtilMediaSvcGetVideoTitle(nVideoItemIndex); + nWidth = MpUtilMediaSvcGetVideoItemWidth(nVideoItemIndex); + nHeight = MpUtilMediaSvcGetVideoItemHeight(nVideoItemIndex); + + MpVideoInfoCtrlGetFileInfo(szFilePath, szTmpFileDate, STR_LEN_MAX, szTmpFileExtension, STR_LEN_MAX, szTmpFileSize, STR_LEN_MAX); + MpVideoInfoCtrlGetGPS(szFilePath, &nLongtitude, &nLatitude); + + pBox = elm_box_add(pPopUpHandle); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %s ", MP_COM_BODY_DETAILS_TITLE, szVideoTitle); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %s", MP_COM_BODY_FORMAT, szTmpFileExtension); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %s", MP_COM_POP_DATE, szTmpFileDate); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %s", MP_COM_BODY_SIZE, szTmpFileSize); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %d x %d", MP_IDLE_BODY_RESOLUTION, nWidth, nHeight); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %f", _(MP_VPL_GPS_LATITUDE), nLatitude); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %f", _(MP_VPL_GPS_LONGITUTD), nLongtitude); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + elm_object_content_set(pPopUpHandle, pBox); + + elm_object_part_text_set(pPopUpHandle, "title,text", szTitle); + pButton = elm_button_add(pPopUpHandle); + elm_object_style_set (pButton, "popup_button/default"); + elm_object_text_set(pButton, MP_COM_SK_BACK); + elm_object_part_content_set(pPopUpHandle, "button1", pButton); + + if(szFilePath) + { + free(szFilePath); + szFilePath = NULL; + } + + if(szVideoTitle) + { + free(szVideoTitle); + szVideoTitle = NULL; + } + + if(PopupButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupButtonCallbackFunc, (void*)pAppData); + } + + evas_object_show(pPopUpHandle); + + return TRUE; +}*/ + +bool MpUtilProgressPopUp(VideoAppData *pAppData, char *szLabel) +{ + VideoLogInfo(""); + + if (pAppData == NULL || szLabel == NULL) { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + Evas_Object *progressbar, *box, *label; + + label = elm_label_add(pPopUpHandle); + elm_object_text_set(label, szLabel); + evas_object_show(label); + + progressbar = elm_progressbar_add(pPopUpHandle); + elm_object_style_set(progressbar, "pending_list"); + elm_progressbar_pulse(progressbar, EINA_TRUE); + evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_progressbar_pulse(progressbar, EINA_TRUE); + evas_object_show(progressbar); + + box = elm_box_add(pPopUpHandle); + elm_box_pack_end(box, label); + elm_box_pack_end(box, progressbar); + evas_object_show(box); + elm_object_content_set(pPopUpHandle, box); + + if (pPopupWindow) { + MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow); + } + + evas_object_show(pPopUpHandle); + + return TRUE; +} + + +void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func) +{ + VideoLogInfo(""); + + Evas_Object *pButton = NULL; + Evas_Object *pIcon = NULL; + + pButton = elm_button_add(pParent); + + if(szIconPath) + { + pIcon = elm_icon_add(pParent); + elm_image_file_set(pIcon, szIconPath, NULL); + //evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_VERTICAL, nAspectWidth, nAspectHeight); + evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_NEITHER, nAspectWidth, nAspectHeight); + //elm_icon_resizable_set(pIcon, bSizeUp, bSizeDown); + } + + if(szButtonStyle) + { + elm_object_style_set(pButton, szButtonStyle); + } + + if(pIcon) + { + elm_object_part_content_set(pButton,PART_BUTTON_ICON, pIcon); + } + + if(func) + { + evas_object_smart_callback_add(pButton, "clicked", func, (void *)pUserData); + } + + elm_object_focus_allow_set(pButton, EINA_FALSE); + evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(pButton); + + return (void *)pButton; +} + +void *MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func) +{ + VideoLogInfo(""); + + Evas_Object *pButton = NULL; + + pButton = elm_button_add(pParent); + + if(szButtonStyle) + { + elm_object_style_set(pButton, szButtonStyle); + } + + if(szButtonText) + { + elm_object_text_set(pButton, szButtonText); + } + + if(func) + { + evas_object_smart_callback_add(pButton, "clicked", func, pUserData); + } + + elm_object_focus_allow_set(pButton, EINA_FALSE); + evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(pButton); + + return (void *)pButton; +} + +void *MpUtilLoadEdjFile(Evas * pEvas, char *szEdjName, char *szGroupName) +{ + VideoLogInfo(""); + + Evas_Object *pEdj = NULL; + int nWidth = 0; + int nHeight = 0; + + pEdj = edje_object_add(pEvas); + if (!edje_object_file_set(pEdj, szEdjName, szGroupName)) { + VideoLogInfo("[ERR] EDJ file error : %s | %s\n", szEdjName, + szGroupName); + return NULL; + } + + edje_object_size_min_get(pEdj, &nWidth, &nHeight); + evas_object_resize(pEdj, nWidth, nHeight); + + return (void *)pEdj; +} + +bool MpUtilIsCallOff(void) +{ + VideoLogInfo(""); + + int nCallStatus = 0; + + if (!vconf_get_int(VCONFKEY_CALL_STATE, &nCallStatus)) { + if (nCallStatus == VCONFKEY_CALL_OFF) + { + VideoLogInfo("Call off"); + return TRUE; + } + else + { + VideoLogInfo("!!! CALL ON !!!"); + return FALSE; + } + } + + return TRUE; +} + +bool MpUtilIsCameraOff(void) +{ + VideoLogInfo(""); + + int nCameraStatus = 0; + + if (!vconf_get_int(VCONFKEY_CAMERA_STATE, &nCameraStatus)) { + if (nCameraStatus == VCONFKEY_CAMERA_STATE_NULL) + { + VideoLogInfo("Camera off"); + return TRUE; + } + else + { + VideoLogInfo("!!! CAMERA ON !!!"); + } + } + + return FALSE; +} + +bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData) +{ + if (!pCameraStatusCb) { + VideoLogInfo("pEarjackCb is empty."); + return FALSE; + } + + VideoLogInfo(""); + + vconf_notify_key_changed(VCONFKEY_CAMERA_STATE, pCameraStatusCb, pUserData); + + return TRUE; +} + +bool MpUtilIsConnectEarjack(void) +{ + VideoLogInfo(""); + + int nEarjack = 0; + + if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &nEarjack)) { + if (nEarjack) { + return TRUE; + } + } + + return FALSE; +} + +bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData) +{ + if (!pEarjackCb) { + VideoLogInfo("pEarjackCb is empty."); + return FALSE; + } + + VideoLogInfo(""); + + vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, pEarjackCb, pUserData); + + return TRUE; +} + +bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl) +{ + if(!szPreviewUrl || strlen(szPreviewUrl) <= 0) + { + VideoLogInfo("[ERR]"); + } + + VideoLogInfo("szPreviewUrl : %s", szPreviewUrl); + + bool bRet = FALSE; + + if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS, szPreviewUrl)) + { + VideoLogInfo("Fail to write szPreviewUrl."); + bRet = FALSE; + } + else + { + VideoLogInfo("Success to write it."); + bRet = TRUE; + } + + return bRet; +} + +bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize) +{ + if(!szRetPreviewUrl) + { + VideoLogInfo("[ERR]"); + } + else + { + memset(szRetPreviewUrl, 0, nStrSize); + } + + VideoLogInfo(""); + + bool bRet = FALSE; + char *szPreviewUrl = NULL; + + + szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS); + if(!szPreviewUrl || strlen(szPreviewUrl) <= 0) + { + VideoLogInfo("Fail to get szPreviewUrl from vconf register."); + bRet = FALSE; + } + else + { + VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl); + strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1); + free(szPreviewUrl); + bRet = TRUE; + } + + return bRet; +} + +bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl) +{ + if(!szPreviewUrl || strlen(szPreviewUrl) <= 0) + { + VideoLogInfo("[ERR]"); + } + + VideoLogInfo(""); + + bool bRet = FALSE; + + if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS, szPreviewUrl)) + { + VideoLogInfo("Fail to write szPreviewUrl."); + bRet = FALSE; + } + else + { + VideoLogInfo("Success to write it."); + bRet = TRUE; + } + + return bRet; +} + +bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize) +{ + if(!szRetPreviewUrl) + { + VideoLogInfo("[ERR]"); + } + else + { + memset(szRetPreviewUrl, 0, nStrSize); + } + + VideoLogInfo(""); + + bool bRet = FALSE; + char *szPreviewUrl = NULL; + + + szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS); + if(!szPreviewUrl || strlen(szPreviewUrl) <= 0) + { + VideoLogInfo("Fail to get szPreviewUrl from vconf register."); + bRet = FALSE; + } + else + { + VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl); + strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1); + free(szPreviewUrl); + bRet = TRUE; + } + + return bRet; +} + +unsigned int MpUtilGetMainWindowXID(void) +{ + VideoLogInfo(""); + if (pMainXwindow) { + VideoLogInfo("pMainXwindow : %d", pMainXwindow); + return pMainXwindow; + } else { + VideoLogInfo("No exist main window XID."); + } + return 0; +} + +void MpUtilRotateWindow(int nRotateMode, void *pWindowHandle) +{ + VideoLogInfo(""); + + if (!pWindowHandle) { + return; + } + + switch (nRotateMode) { + case VIDEO_ROTATE_UNKNOWN: + VideoLogInfo("VIDEO_ROTATE_UNKNOWN"); + elm_win_rotation_with_resize_set(pWindowHandle, 0); + break; + + case VIDEO_ROTATE_PORTRAIT_NORMAL: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL"); + elm_win_rotation_with_resize_set(pWindowHandle, 0); + break; + + case VIDEO_ROTATE_LANDSCAPE_NORMAL: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL"); + elm_win_rotation_with_resize_set(pWindowHandle, 270); + break; + + case VIDEO_ROTATE_PORTRAIT_REVERSE: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE"); + elm_win_rotation_with_resize_set(pWindowHandle, 180); + break; + + case VIDEO_ROTATE_LANDSCAPE_REVERSE: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE"); + elm_win_rotation_with_resize_set(pWindowHandle, 90); + break; + + default: + VideoLogInfo("DEFAULT - VIDEO_ROTATE_UNKNOWN"); + elm_win_rotation_with_resize_set(pWindowHandle, 0); + break; + } +} + +void MpUtilGetUserAgent(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + int nWifiMode = 0; + + char *szUserAgent = NULL; + szUserAgent = vconf_get_str(VCONFKEY_ADMIN_UAGENT); + if(szUserAgent) + { + memset(pAppData->szUserAgent, 0, STR_LEN_MAX); + strncpy(pAppData->szUserAgent, szUserAgent, STR_LEN_MAX - 1); + free(szUserAgent); + } + else + { + VideoLogInfo("!!!!! NO EXIST USER AGENT !!!!!"); + } + +#if 0 + memset(pAppData->szUserAgent, 0, STR_LEN_MAX); + snprintf(pAppData->szUserAgent, STR_LEN_MAX, "%s", MP_UTIL_TEMP_USER_AGENT_VALUE); +#endif + + if(!vconf_get_int(VCONFKEY_WIFI_STATE, &nWifiMode)) + { + VideoLogInfo("User Agent : %s, Wi-Fi : %d", pAppData->szUserAgent, nWifiMode); + } + +} + +double MpUtilGetSysTime(void) +{ + struct timeval tv; + + gettimeofday(&tv, NULL); + return (double)tv.tv_sec + (double)tv.tv_usec / 1E6; +} + +void MpUtilLcdNormalPowerLockForResume(void) +{ + VideoLogInfo(""); + + pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW | HOLD_KEY_BLOCK, 0); +} + +void MpUtilLcdNormalPowerUnlockForPause(void) +{ + VideoLogInfo(""); + + pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER); +} + +void MpUtilLcdOffForPowerButton(void) +{ + VideoLogInfo(""); + + pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER); +} + +void MpUtilMultimediaKeyGrab(void) +{ + VideoLogInfo(""); + MpUtilSetKeyGrab(PLAY_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(STOP_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(PAUSE_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(NEXT_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(PREV_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(REWIND_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(FORWARD_KEY, KEY_GRAB_OR_EXCLUSIVE); +} + +void MpUtilMultimediaKeyUngrab(void) +{ + VideoLogInfo(""); + + MpUtilSetKeyUngrab(PAUSE_KEY); + MpUtilSetKeyUngrab(PLAY_KEY); + MpUtilSetKeyUngrab(STOP_KEY); + MpUtilSetKeyUngrab(NEXT_KEY); + MpUtilSetKeyUngrab(PREV_KEY); + MpUtilSetKeyUngrab(FORWARD_KEY); + MpUtilSetKeyUngrab(REWIND_KEY); + +} + +void MpUtilMultimediaVolumeKeyGrab(void) +{ + VideoLogInfo(""); + + MpUtilSetKeyGrab(VOLUME_UP_KEY, KEY_GRAB_EXCLUSIVE); + MpUtilSetKeyGrab(VOLUME_DOWN_KEY, KEY_GRAB_EXCLUSIVE); + + int nRet = 0; + nRet = vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 1); + if(nRet != 0) + { + VideoLogError("VCONFKEY_STARTER_USE_VOLUME_KEY set fail: %d", nRet); + } +} +void MpUtilMultimediaVolumeKeyUngrab(void) +{ + VideoLogInfo(""); + + MpUtilSetKeyUngrab(VOLUME_UP_KEY); + MpUtilSetKeyUngrab(VOLUME_DOWN_KEY); +} + +/* +bool MpUtilSbeamIsActive(void) +{ + VideoLogInfo("bIsActiveNfcSbeam : %d", bIsActiveNfcSbeam); + + return bIsActiveNfcSbeam; +} + +void MpUtilSbeamP2pTargetDiscoveredCb(nfc_discovered_type_e nType, nfc_p2p_target_h pTarget, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("User data is NULL."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if(nType == NFC_DISCOVERED_TYPE_ATTACHED) + { + VideoLogInfo("NFC_DISCOVERED_TYPE_ATTACHED"); + + if(bIsActiveNfcSbeam) + { + char szWindowId[STR_LEN_MAX] = {0}; + + if(strlen(pAppData->szMediaUri) <= 0) + { + VideoLogInfo("[ERR]No exist media uri."); + return; + } + + service_h svc_handle; + service_create(&svc_handle); + snprintf(szWindowId, STR_LEN_MAX-1, "%d", elm_win_xwindow_get(pAppData->pMainWindow)); + + service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/nfc_sbeam_send"); + service_set_mime(svc_handle, "text/DirectShareVideos"); + service_set_window(svc_handle, elm_win_xwindow_get(pAppData->pMainWindow)); + service_set_uri(svc_handle, pAppData->szMediaUri); + service_send_launch_request(svc_handle, NULL, NULL); + service_destroy(svc_handle); + } + else + { + VideoLogInfo("bIsActiveNfcSbeam is NULL."); + } + } +} + +void MpUtilSbeamInit(void* pUserData) +{ + if(!pUserData) + { + VideoLogInfo("User data is NULL."); + return; + } + + VideoLogInfo(""); + + int bSbeamState = VCONFKEY_NFC_SBEAM_OFF; + + if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0) + { + VideoLogInfo("Fail to get value."); + } + else + { + if(bSbeamState != VCONFKEY_NFC_SBEAM_ON) + { + VideoLogInfo("Off state about nfc sbeam"); + return; + } + } + + if(bIsActiveNfcSbeam == FALSE) + { + if(nfc_manager_initialize(NULL, NULL) != NFC_ERROR_NONE) + { + VideoLogInfo("[Err] Fail to initialize nfc manager."); + return; + } + + nfc_manager_set_p2p_target_discovered_cb(MpUtilSbeamP2pTargetDiscoveredCb, pUserData); + + bIsActiveNfcSbeam = TRUE; + } + else + { + VideoLogInfo("Already set sbeam activation."); + } +} + +void MpUtilSbeamDeinit(void) +{ + VideoLogInfo(""); + + int bSbeamState = VCONFKEY_NFC_SBEAM_OFF; + + if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0) + { + VideoLogInfo("Fail to get value."); + } + else + { + if(bSbeamState != VCONFKEY_NFC_SBEAM_ON) + { + VideoLogInfo("Off state about nfc sbeam"); + return; + } + } + + if(bIsActiveNfcSbeam == TRUE) + { + if(nfc_manager_deinitialize() != NFC_ERROR_NONE) + { + VideoLogInfo("[Err] Fail to deinitialize nfc manager."); + } + + bIsActiveNfcSbeam = FALSE; + } + else + { + VideoLogInfo("Already set sbeam unactivation."); + } +} +*/ + +char* MpUtilGetFileSize(unsigned int size) +{ + VideoLogInfo(""); + +#define FILE_SIZE_LEN_MAX 64 +#define BASIC_SIZE 1024 //used for file size check + +enum VIDEO_PLAYER_FILE_SIZE_TYPE +{ + SIZE_BYTE = 0, + SIZE_KB, + SIZE_MB, + SIZE_GB +}; + + int nCount = 0; + + char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1); + if(pTmp == NULL) + { + return NULL; + } + + while(size >= (BASIC_SIZE)) + { + size /= BASIC_SIZE; + nCount++; + } + + if(nCount == SIZE_BYTE) + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuB", size); + } + else if(nCount == SIZE_KB) + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuKB", size); + } + else if(nCount == SIZE_MB) + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", size); + } + else if(nCount == SIZE_GB) + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuGB", size); + } + else + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", 0); + } + + VideoLogInfo("Size=%s", pTmp); + + return pTmp; +} + +void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour) +{ +#define VIDEO_TIME_MSEC_PER_SEC 1000 +#define VIDEO_TIME_SEC_PER_MIN 60 +#define VIDEO_TIME_MIN_PER_HOUR 60 +#define VIDEO_TIME_SEC_PER_HOUR (VIDEO_TIME_MIN_PER_HOUR * VIDEO_TIME_SEC_PER_MIN) + + if(!szRetTime) + { + VideoLogInfo("[ERR] No exist szRetTime pointer."); + return; + } + else + { + memset(szRetTime, 0, STR_LEN_MAX); + } + + if(nVideoTime <= 0) + { + VideoLogInfo("nVideoTime : %d", nVideoTime); + } + + int nTime = floor(nVideoTime / VIDEO_TIME_MSEC_PER_SEC); + int nHour = 0; + int nMin = 0; + int nSec = 0; + int nTmp = 0; + + if (nTime >= VIDEO_TIME_SEC_PER_HOUR) + { + nSec = nTime % VIDEO_TIME_SEC_PER_MIN; + nTmp = floor(nTime / VIDEO_TIME_SEC_PER_MIN); + nMin = nTmp % VIDEO_TIME_MIN_PER_HOUR; + nHour = floor(nTmp / VIDEO_TIME_MIN_PER_HOUR); + } + else if (nTime >= VIDEO_TIME_SEC_PER_MIN) + { + nHour = 0; + nMin = floor(nTime / VIDEO_TIME_SEC_PER_MIN); + nSec = nTime % VIDEO_TIME_SEC_PER_MIN; + } + else + { + nHour = 0; + nMin = 0; + nSec = nTime % VIDEO_TIME_SEC_PER_MIN; + } + + if(bIsHideHour) + { + if(nHour) + { + snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec); + } + else + { + snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d", nMin, nSec); + } + } + else + { + snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec); + } + + szRetTime[strlen(szRetTime)] = '\0'; + + VideoLogInfo("szRetTime : %s", szRetTime); +} + +void MpUtilLayoutVisibleOff(void *pWindowHandle) +{ + VideoLogInfo(""); + + if(pWindowHandle == NULL) + { + VideoLogError("Window handle is NULL"); + return; + } + + if(pX11DisplayHandle == NULL) + { + VideoLogError("Display handle is NULL"); + return; + } + + if (!strcmp ("mobile", elm_win_profile_get (pWindowHandle))) + { + utilx_set_fb_visible (pX11DisplayHandle, UTILX_FB_TYPE_UI, FALSE); + } + else + { + VideoLogError("Skip for Desktop mode : %s", elm_win_profile_get (pWindowHandle)); + } + return; +} \ No newline at end of file diff --git a/src/mp-video-animation-ctrl.c b/src/mp-video-animation-ctrl.c new file mode 100755 index 0000000..793f815 --- /dev/null +++ b/src/mp-video-animation-ctrl.c @@ -0,0 +1,149 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-value-define.h" +#include "mp-video-animation-ctrl.h" + +#define BUFFERING_TXT_MAX_LEN 16 + +static Evas_Object *pAnimationEdj = NULL; +static Ecore_Timer *pAnimationTimer = NULL; + +static int nIconIndex = 0; + +static Eina_Bool MpVideoAnimationCtrlTimerCb(void *data) +{ +/* VideoLogInfo(""); */ + + char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, }; + + snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", + SIGNAL_ANIMATION_IMAGE_LOADING, nIconIndex); + + edje_object_signal_emit(pAnimationEdj, sig_format, "*"); + + nIconIndex += 1; + if (nIconIndex > ANIMATION_MAX_COUNT) + nIconIndex = 1; + + return EINA_TRUE; +} + +void *MpVideoAnimationCtrlInit(void *pUserData) +{ + VideoLogInfo(""); + + if (pUserData == NULL) { + VideoLogInfo("data is NULL"); + return NULL; + } + + Evas *pMainWindowEvas = (Evas *) pUserData; + + pAnimationEdj = MpUtilLoadEdjFile(pMainWindowEvas, + VIDEO_PLAYER_ANIMATION_EDJ, + ANIMATION_EDJ_GROUP); + + evas_object_hide(pAnimationEdj); + + return (void *)pAnimationEdj; +} + +void MpVideoAnimationCtrlDestroy(void) +{ + VideoLogInfo(""); + + if (pAnimationTimer) { + ecore_timer_del(pAnimationTimer); + pAnimationTimer = NULL; + } + + if (pAnimationEdj) { + evas_object_hide(pAnimationEdj); + evas_object_del(pAnimationEdj); + pAnimationEdj = NULL; + } + + nIconIndex = 0; +} + +void MpVideoAnimationCtrlSetPercent(int nPercent) +{ + VideoLogInfo(""); + if (nPercent >= 0) { + char szBuffering[BUFFERING_TXT_MAX_LEN] = { 0, }; + + snprintf(szBuffering, BUFFERING_TXT_MAX_LEN, "Loading %d%%...", + nPercent); + edje_object_part_text_set(pAnimationEdj, "loading.txt", + szBuffering); + } else { + edje_object_part_text_set(pAnimationEdj, "loading.txt", + "Loading..."); + } +} + +void MpVideoAnimationCtrlPlay(void) +{ + VideoLogInfo(""); + if (pAnimationTimer == NULL) { + pAnimationTimer = ecore_timer_add(ANIMATION_TIMER_INTERVAL, + MpVideoAnimationCtrlTimerCb, + NULL); + } +} + +void MpVideoAnimationCtrlStop(void) +{ + VideoLogInfo(""); + + if (pAnimationTimer) { + ecore_timer_del(pAnimationTimer); + pAnimationTimer = NULL; + } +} + +void MpVideoAnimationCtrlShow(void) +{ + VideoLogInfo(""); + + if (pAnimationTimer == NULL) { + MpVideoAnimationCtrlPlay(); + MpVideoAnimationCtrlSetPercent(-1); + evas_object_show(pAnimationEdj); + } +} + +void MpVideoAnimationCtrlHide(void) +{ + VideoLogInfo(""); + + MpVideoAnimationCtrlStop(); + evas_object_hide(pAnimationEdj); +} + +bool MpVideoAnimationCtrlGetActiveState(void) +{ + VideoLogInfo(""); + if (pAnimationTimer) + return true; + else + return false; +} diff --git a/src/mp-video-app-ctrl.c b/src/mp-video-app-ctrl.c new file mode 100755 index 0000000..a837ebe --- /dev/null +++ b/src/mp-video-app-ctrl.c @@ -0,0 +1,1368 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-video-app-ctrl.h" +#include "mp-video-view-mgr.h" +#include "mp-util-media-service.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-streaming-ctrl.h" +#include "mp-external-ug.h" +#include "mp-video-ctrl-mgr.h" +#include "mp-video-service-ctrl.h" + +static int nPlayerErrorType = 0; +static int nPlayerInterruptType = 0; +static int nBufferingRate = 0; +static bool bWindowForegroundState = FALSE; + +static MpPlayerInterrupteType g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED; + +static Ecore_Pipe *pEcorePipeHandleForErrorMsg = NULL; +static Ecore_Pipe *pEcorePipeHandleBOF = NULL; +static Ecore_Pipe *pEcorePipeHandleEOF = NULL; +static Ecore_Pipe *pEcorePipeHandleForBuffering = NULL; +static Ecore_Pipe *pEcorePipeHandleForResumed = NULL; +static Ecore_Pipe *pEcorePipeHandleForInterruped = NULL; +static Ecore_Pipe *pEcorePipeHandlerForSeekComplete = NULL; + + +static void MpVideoAppCtrlStart(VideoAppData *pAppData); +static void MpVideoAppCtrlStop(VideoAppData *pAppData); +static void MpVideoAppCtrlPause(VideoAppData *pAppData); +static void MpVideoAppCtrlResume(VideoAppData *pAppData); +static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData); +static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData); +static void MpVideoAppCtrlFFDown(VideoAppData *pAppData); +static void MpVideoAppCtrlRewDown(VideoAppData *pAppData); +static void MpVideoAppCtrlFFUp(VideoAppData *pAppData); +static void MpVideoAppCtrlRewUp(VideoAppData *pAppData); +static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData); +static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData); +static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData); +static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState); +static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData); +static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData); +static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData); +static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData); +static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData); +static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData); +static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData); +static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData); +static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData); +static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData); +static void MpVideoAppCtrlExit(VideoAppData *pAppData); +static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData); +static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData); +static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData); +static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData); +static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData); +static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData); + + +/* + * Callback function + */ + +static void MpVideoAppCtrlUnSupportFormatErrorCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpUtilLcdNormalPowerUnlockForPause(); + + MpVideoAppCtrlEndOfStream(pAppData); +} + + +static void MpVideoAppCtrlExitCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); +} + +static int MpVideoAppCtrlPauseByInterrupteCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoAppCtrlPause(pAppData); + + g_nCurrentInterrupt = nPlayerInterruptType; + + switch(nPlayerInterruptType) + { + case MP_PLAYER_INTERRUPTED_COMPLETED: + VideoLogInfo("MP_PLAYER_INTERRUPTED_COMPLETED"); + break; + + case MP_PLAYER_INTERRUPTED_BY_OTHER_APP: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_OTHER_APP"); + break; + + case MP_PLAYER_INTERRUPTED_BY_CALL: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_CALL"); + break; + + case MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG"); + break; + + case MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT"); + break; + + case MP_PLAYER_INTERRUPTED_BY_ALARM: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_ALARM"); + break; + + default: + VideoLogInfo("OTHER"); + break; + } + + return 0; +} + +static int MpVideoAppCtrlBeginOfPlayCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoCtrlMgrMediaPlay((void *)pAppData); + + pAppData->bStartSeek = FALSE; + + if(pAppData->nSetPosition > 0) + { + VideoLogInfo("Start position time : %dms", pAppData->nSetPosition); + MpVideoAppCtrlSetPosition(pAppData); + } + + } + else + { + pAppData->bStartSeek = FALSE; + if(pAppData->nSetPosition > 0) + { + VideoLogInfo("Pending seek position time : %dms", pAppData->nSetPosition); + MpVideoAppCtrlSetPosition(pAppData); + pAppData->bStartSeek = TRUE; + } + + if(MpVideoViewCtrlIsPauseByUser((void *)pAppData)) + { + MpVideoCtrlMgrSetMute(TRUE); + } + + if(!pAppData->bStartSeek) + { + MpVideoCtrlMgrMediaPlay((void *)pAppData); + } + } + + MpVideoAppCtrlBeginOfStream(pAppData); + MpUtilLcdNormalPowerLockForResume(); + + return 0; +} + +static int MpVideoAppCtrlEndOfPlayCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoViewCtrlPause(pAppData); + MpVideoAppCtrlStop(pAppData); + MpVideoCtrlMgrMediaDestroy(pAppData); + + MpUtilLcdNormalPowerUnlockForPause(); + + MpVideoAppCtrlEndOfStream(pAppData); + + return 0; +} + +static int MpVideoAppCtrlBufferingCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData"); + return 0; + } + + if(nBufferingRate < 10) + { + MpVideoAppCtrlShowLayout((VideoAppData *)pUserData); + } + + MpVideoViewSetBufferingRateForStreamingView(nBufferingRate, pUserData); + + return 0; +} + +static int MpVideoAppCtrlSeekCompletePipeCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pAppData->bStartSeek) + { + MpVideoCtrlMgrMediaPlay((void *)pAppData); + MpVideoAppCtrlBeginOfStream(pAppData); + MpUtilLcdNormalPowerLockForResume(); + pAppData->bStartSeek = FALSE; + } + + pAppData->bSeekComplete = TRUE; + + if(pAppData->nSeekPosition > 0) { + pAppData->nSetPosition = pAppData->nSeekPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + pAppData->nSeekPosition = 0; + MpVideoViewCtrlUpdateProgressbar((void *)pAppData); + return 0; + } + + if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_PAUSE) { + VideoLogInfo(""); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE; + } + else if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_RESUME) { + VideoLogInfo(""); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE; + } + + return 0; +} + +static void MpVideoAppCtrlSeekCompleteCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData"); + return; + } + + VideoLogInfo(""); + VideoAppData *pAppData = (VideoAppData *)pUserData; + if(pEcorePipeHandlerForSeekComplete) + { + if(!ecore_pipe_write(pEcorePipeHandlerForSeekComplete, (void *)pAppData, sizeof(VideoAppData))) + { + VideoLogDebug("Fail to write MpVideoAppCtrlSeekCompleteCb."); + } + } +} + + +static int MpVideoAppCtrlResumeByRewCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoAppCtrlResume(pAppData); + + return 0; +} + +static int MpVideoAppCtrlErrormsgCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + switch(MpVideoCtrlMgrGetErrorType(nPlayerErrorType)) + { + case MP_PLAYER_ERROR_NONE: + VideoLogInfo("MP_PLAYER_ERROR_NONE"); + break; + + case MP_PLAYER_ERROR_OUT_OF_MEMORY: + VideoLogInfo("MP_PLAYER_ERROR_OUT_OF_MEMORY"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_INVALID_PARAMETER: + VideoLogInfo("MP_PLAYER_ERROR_INVALID_PARAMETER"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_NO_SUCH_FILE: + VideoLogInfo("MP_PLAYER_ERROR_NO_SUCH_FILE"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_FILE_NOT_FOUND, MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_INVALID_OPERATION: + VideoLogInfo("MP_PLAYER_ERROR_INVALID_OPERATION"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb); + break; + + case MP_PLAYER_ERROR_SEEK_FAILED: + VideoLogInfo("MP_PLAYER_ERROR_SEEK_FAILED"); + break; + + case MP_PLAYER_ERROR_INVALID_STATE: + VideoLogInfo("MP_PLAYER_ERROR_INVALID_STATE"); + break; + + case MP_PLAYER_ERROR_NOT_SUPPORTED_FILE: + VideoLogInfo("MP_PLAYER_ERROR_NOT_SUPPORTED_FILE"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_POP_UNSUPPORTED_FILE_TYPE), MpVideoAppCtrlUnSupportFormatErrorCb); + break; + + case MP_PLAYER_ERROR_INVALID_URI: + VideoLogInfo("MP_PLAYER_ERROR_INVALID_URI"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_INVALID_URL, MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_SOUND_POLICY: + VideoLogInfo("MP_PLAYER_ERROR_SOUND_POLICY"); + break; + + case MP_PLAYER_ERROR_CONNECTION_FAILED: + VideoLogInfo("MP_PLAYER_ERROR_CONNECTION_FAILED"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_CONNECTION_FAILED, MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED: + VideoLogInfo("MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED"); + break; + + default: + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb); + break; + } + + return 0; +} + +static void MpVideoAppCtrlPlayerPrepareCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pEcorePipeHandleBOF) + { + if(!ecore_pipe_write(pEcorePipeHandleBOF, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerCompletedCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pEcorePipeHandleEOF) + { + if(!ecore_pipe_write(pEcorePipeHandleEOF, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerInterruptedCb(player_interrupted_code_e nInterruptCode, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + nPlayerInterruptType = nInterruptCode; + + if(pEcorePipeHandleForInterruped) + { + if(!ecore_pipe_write(pEcorePipeHandleForInterruped, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerErrorCb(int nPlayerErrorCode, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + nPlayerErrorType = nPlayerErrorCode; + + if(pEcorePipeHandleForErrorMsg) + { + if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerBufferingCb(int nPercent, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo("Buffering : %d%% ", nPercent); + + nBufferingRate = nPercent; + + if(pEcorePipeHandleForBuffering) + { + if(!ecore_pipe_write(pEcorePipeHandleForBuffering, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerUpdateSubtitleCb(unsigned long nDuration, char* szText, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); +} + +/* + * Internal function + */ +void MpVideoAppCtrlFuncInit(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + if(!pAppData) + { + VideoLogInfo("[ERR]"); + return; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStart = (void *)MpVideoAppCtrlStart; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStop = (void *)MpVideoAppCtrlStop; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause = (void *)MpVideoAppCtrlPause; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume = (void *)MpVideoAppCtrlResume; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause = (void *)MpVideoAppCtrlStopByAppPause; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume = (void *)MpVideoAppCtrlStartByAppResume; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFDown = (void *)MpVideoAppCtrlFFDown; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewDown = (void *)MpVideoAppCtrlRewDown; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFUp = (void *)MpVideoAppCtrlFFUp; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewUp = (void *)MpVideoAppCtrlRewUp; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF = (void *)MpVideoAppCtrlSpeedFF; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew = (void *)MpVideoAppCtrlSpeedRew; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset = (void *)MpVideoAppCtrlSpeedReset; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen = (void *)MpVideoAppCtrlRotateScreen; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition = (void *)MpVideoAppCtrlGetPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition = (void *)MpVideoAppCtrlSetPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout = (void *)MpVideoAppCtrlHideLayout; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout = (void *)MpVideoAppCtrlShowLayout; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish = (void *)MpVideoAppCtrlHideFinish; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish = (void *)MpVideoAppCtrlShowFinish; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution = (void *)MpVideoAppCtrlGetVideoResolution; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime = (void *)MpVideoAppCtrlReqDurationTime; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlBeginOfStream = (void *)MpVideoAppCtrlBeginOfStream; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlEndOfStream = (void *)MpVideoAppCtrlEndOfStream; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit = (void *)MpVideoAppCtrlExit; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartStreaming = (void *)MpVideoAppCtrlStartStreaming; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching = (void *)MpVideoAppCtrlReLaunching; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition = (void *)MpVideoAppCtrlGetBufferingPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume = (void *)MpVideoAppCtrlShowVolume; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume = (void *)MpVideoAppCtrlHideVolume; +} + +static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoLogInfo("Skip Normal Play mode"); + return; + } + + if(MpUtilCheckRTSPType(pAppData->szMediaUri)) + { + return; + } + + pAppData->nBufferingPosition = MpVideoCtrlMgrGetBufferingPosition(); +} + +static void MpVideoAppCtrlStart(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + if(!MpUtilCheckLocalFileExist(pAppData->szMediaUri)) + { + MpUtilNotifyPopUp(pAppData, MP_COM_POP_FILE_NOT_EXIST, MpVideoAppCtrlExitCb); + return; + } + + MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle, STR_LEN_MAX); + MpVideoViewCtrlChangeTitle(pAppData); + MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, + (void *)MpUtilGetMainWindowXID(), + NULL, + pAppData->szSubtitle, + (void *)pAppData); + + MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb, + MpVideoAppCtrlPlayerInterruptedCb, + MpVideoAppCtrlPlayerErrorCb, + MpVideoAppCtrlPlayerBufferingCb, + MpVideoAppCtrlPlayerUpdateSubtitleCb, + (void*)pAppData); + + if(!MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData)) + { + MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb); + return; + } + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + if(!MpVideoStreamingCtrlIsNetworkOn()) + { + MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoAppCtrlExitCb); + return; + } + + if(MpVideoStreamingCtrlInit((void *)pAppData)) + { + VideoLogInfo("Connect to network."); + MpVideoAppCtrlStartStreaming((void *)pAppData); + } + } +} + +static void MpVideoAppCtrlStop(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP; + MpVideoCtrlMgrMediaStop((void *)pAppData); +} + +static void MpVideoAppCtrlPause(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) + { + VideoLogInfo("Allready Pause video player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE; + + MpVideoCtrlMgrMediaPause(pAppData); + MpVideoViewCtrlPause(pAppData); + MpVideoAppCtrlShowLayout(pAppData); + MpUtilLcdNormalPowerUnlockForPause(); +} + +static void MpVideoAppCtrlResume(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(MpVideoViewCtrlIsPauseByUser((void *)pAppData)) + { + return; + } + + if(pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) + { + VideoLogInfo("Allready Resume video player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME; + MpUtilMultimediaKeyGrab(); + + MpVideoAppCtrlGetPosition(pAppData); + MpVideoCtrlMgrMediaResume(pAppData); + MpVideoViewCtrlResume(pAppData); + MpVideoAppCtrlShowLayout(pAppData); + MpUtilLcdNormalPowerLockForResume(); +} + +static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + if(!MpVideoCtrlMgrIsExistPlayerHandle()) + { + VideoLogInfo("Not exist Player handle."); + return; + } + + VideoLogInfo(""); + + MpVideoAppCtrlGetPosition(pAppData); + pAppData->nSetPosition = pAppData->nCurPosition; + VideoLogInfo("Current position time : %d", pAppData->nSetPosition); + MpVideoViewCtrlPause(pAppData); + MpVideoAppCtrlStop(pAppData); + MpVideoCtrlMgrMediaDestroy(pAppData); + MpUtilLcdNormalPowerUnlockForPause(); + + MpVideoViewCtrlResetProgressBar((void *)pAppData); + + MpUtilMultimediaKeyUngrab(); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoViewSetBufferingRateForStreamingView(0, (void *)pAppData); + } +} + +static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(bWindowForegroundState == FALSE) + { + VideoLogInfo("The Window of the video player is hided."); + } + + MpVideoAppCtrlStart(pAppData); + MpVideoViewCtrlResume(pAppData); + MpVideoAppCtrlShowLayout(pAppData); + + return; +} + +static void MpVideoAppCtrlFFDown(VideoAppData *pAppData) +{ + VideoLogInfo(""); +} + +static void MpVideoAppCtrlRewDown(VideoAppData *pAppData) +{ + VideoLogInfo(""); +} + +static void MpVideoAppCtrlFFUp(VideoAppData *pAppData) +{ + VideoLogInfo(""); +} + +static void MpVideoAppCtrlRewUp(VideoAppData *pAppData) +{ + VideoLogInfo(""); +} + +static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(VIDEO_ROTATE_UNKNOWN > nRotateState || VIDEO_ROTATE_LANDSCAPE_REVERSE < nRotateState) + { + VideoLogInfo("Wrong rotate state. - %d", nRotateState); + return; + } + + MpVideoCtrlMgrRotateVideoScreen(nRotateState); +} + +static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData) +{ + pAppData->nCurPosition = MpVideoCtrlMgrGetPosition(); +} + +static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoCtrlMgrSetPosition(pAppData->nSetPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData); + if(MpUtilCheckRTSPType(pAppData->szMediaUri)) + { + VideoLogInfo("RTSP SEEK Start"); + nBufferingRate = 0; + MpVideoAppCtrlBufferingCb((void *)pAppData); + } +} + +static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData) +{ + VideoLogInfo(""); + MpVideoAppCtrlGetPosition(pAppData); + MpVideoCtrlMgrSetPosition( pAppData->nCurPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData); + MpVideoCtrlMgrResetPlaySpeed((void *)pAppData); +} + +static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData) +{ + VideoLogInfo(""); + MpVideoCtrlMgrSetPlaySpeedUp((void *)pAppData); +} + +static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData) +{ + VideoLogInfo(""); + MpVideoCtrlMgrSetPlaySpeedDown((void *)pAppData); +} + +static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoViewHideLayout((void *)pAppData); +} + +static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoViewShowLayout((void *)pAppData); +} + +static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoViewCtrlHideFinish((void *)pAppData, bWindowForegroundState); + +} +static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoViewCtrlShowFinish((void *)pAppData); +} + +static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + pAppData->nVideoWidthResolution = MpVideoCtrlMgrGetVideoWidthResolution(); + pAppData->nVideoHeightResolution = MpVideoCtrlMgrGetVideoHeightResolution(); +} + +static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + pAppData->nDuration = MpVideoCtrlMgrGetDuration(); +} + +static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpUtilMultimediaKeyGrab(); + + MpVideoAppCtrlGetVideoResolution(pAppData); + pAppData->nDuration = MpVideoCtrlMgrGetDuration(); + + MpVideoViewCtrlInitAfterBeginOfStream((void*)pAppData); + + if(MpVideoViewCtrlIsPauseByUser((void *)pAppData)) + { + MpVideoAppCtrlPause(pAppData); + MpVideoCtrlMgrSetMute(FALSE); + } + + if(MpVideoCtrlMgrIsOnlyAudio()) + { + MpVideoViewCtrlShowNocontentImage((void*)pAppData); + } + else + { + MpVideoViewCtrlHideNocontentImage((void*)pAppData); + } +} + +static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY) + { + if(pAppData->nCurPosition >= 0) + { + MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, 0); + } + else + { + VideoLogInfo("Invalid Plaing time or duration time."); + } + } + MpVideoAppCtrlExit(pAppData); +} + +static void MpVideoAppCtrlExit(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pEcorePipeHandleForErrorMsg) + { + ecore_pipe_del(pEcorePipeHandleForErrorMsg); + pEcorePipeHandleForErrorMsg = NULL; + } + + if(pEcorePipeHandleBOF) + { + ecore_pipe_del(pEcorePipeHandleBOF); + pEcorePipeHandleBOF = NULL; + } + + if(pEcorePipeHandleEOF) + { + ecore_pipe_del(pEcorePipeHandleEOF); + pEcorePipeHandleEOF = NULL; + } + + if(pEcorePipeHandleForBuffering) + { + ecore_pipe_del(pEcorePipeHandleForBuffering); + pEcorePipeHandleForBuffering = NULL; + } + + if(pEcorePipeHandleForResumed) + { + ecore_pipe_del(pEcorePipeHandleForResumed); + pEcorePipeHandleForResumed = NULL; + } + + if(pEcorePipeHandleForInterruped) + { + ecore_pipe_del(pEcorePipeHandleForInterruped); + pEcorePipeHandleForInterruped = NULL; + } + + if(pEcorePipeHandlerForSeekComplete) + { + ecore_pipe_del(pEcorePipeHandlerForSeekComplete); + pEcorePipeHandlerForSeekComplete = NULL; + } + + MpVideoAppCtrlStop(pAppData); + MpVideoCtrlMgrMediaDestroy(pAppData); + MpUtilDeletePopupHandle(); + MpVideoViewCtrlDestroy((void *)pAppData); + + if(MpVideoServiceCtrlGetPlayerType() == MP_STREAMING_PLAYER) + { + MpVideoStreamingCtrlDestroy((void *)pAppData); + } + + MpExternalUgDestroyAll(); + + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + + elm_exit(); +} + +static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + char *szCookie = MpVideoServiceCtrlGetCookieForStreaming(); + if(szCookie) + { + strncpy(pAppData->szCookie, szCookie, STR_LEN_MAX - 1); + } + + MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, (void *)MpUtilGetMainWindowXID(), + NULL, NULL, (void *)pAppData); + + MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb, + MpVideoAppCtrlPlayerInterruptedCb, + MpVideoAppCtrlPlayerErrorCb, + MpVideoAppCtrlPlayerBufferingCb, + MpVideoAppCtrlPlayerUpdateSubtitleCb, + (void*)pAppData); + + MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData); + + MpVideoAppCtrlRotateScreen(pAppData, MpUtilGetRotationState()); +} + +static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoAppCtrlStop(pAppData); + MpVideoCtrlMgrMediaDestroy(pAppData); + + MpVideoViewCtrlHideVolume(); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + pAppData->nSetPosition = 0; + MpVideoViewCtrlChangeTitle(pAppData); + } + + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoAppCtrlStartStreaming(pAppData); + } +} + +static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pEcorePipeHandlerForSeekComplete) + { + ecore_pipe_del(pEcorePipeHandlerForSeekComplete); + pEcorePipeHandlerForSeekComplete = NULL; + } + pEcorePipeHandlerForSeekComplete = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlSeekCompletePipeCb, (void *)pAppData); + + if(pEcorePipeHandleForErrorMsg) + { + ecore_pipe_del(pEcorePipeHandleForErrorMsg); + pEcorePipeHandleForErrorMsg = NULL; + } + + pEcorePipeHandleForErrorMsg = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlErrormsgCb, (void *)pAppData); + + if(pEcorePipeHandleBOF) + { + ecore_pipe_del(pEcorePipeHandleBOF); + pEcorePipeHandleBOF = NULL; + } + + pEcorePipeHandleBOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBeginOfPlayCb, (void *)pAppData); + + if(pEcorePipeHandleEOF) + { + ecore_pipe_del(pEcorePipeHandleEOF); + pEcorePipeHandleEOF = NULL; + } + + pEcorePipeHandleEOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlEndOfPlayCb, (void *)pAppData); + + if(pEcorePipeHandleForBuffering) + { + ecore_pipe_del(pEcorePipeHandleForBuffering); + pEcorePipeHandleForBuffering = NULL; + } + + pEcorePipeHandleForBuffering = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBufferingCb, (void *)pAppData); + + if(pEcorePipeHandleForResumed) + { + ecore_pipe_del(pEcorePipeHandleForResumed); + pEcorePipeHandleForResumed = NULL; + } + + pEcorePipeHandleForResumed = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlResumeByRewCb, (void *)pAppData); + + if(pEcorePipeHandleForInterruped) + { + ecore_pipe_del(pEcorePipeHandleForInterruped); + pEcorePipeHandleForInterruped = NULL; + } + + pEcorePipeHandleForInterruped = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlPauseByInterrupteCb, (void *)pAppData); +} + +static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + MpVideoViewCtrlShowVolume(); +} + +static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + MpVideoViewCtrlHideVolume(); +} + + +/* + * External function + */ +bool MpVideoAppCtrlInit(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return FALSE; + } + + VideoLogInfo(""); + + VideoLogInfo("Get rotation state from appcore. - %d", MpUtilGetRotationStateFromAppcore()); + + MpVideoAppCtrlFuncInit(pAppData); + MpVideoAppCtrlPipeInit(pAppData); + MpVideoViewCtrlInit(pAppData); + + evas_object_show(pAppData->pMainWindow); + elm_win_activate(pAppData->pMainWindow); + + if(!MpUtilIsCallOff()) + { + MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb); + return FALSE; + } + + MpVideoAppCtrlInitCheckCallStatus(); + + if(!MpUtilCheckBatteryStatus()) + { + MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpVideoAppCtrlExitCb); + return FALSE; + } + + MpVideoAppCtrlStart(pAppData); + + return TRUE; +} + +bool MpVideoAppCtrlResetForRelaunching(VideoAppData *pAppData) +{ + if (!pAppData) { + VideoLogInfo("No exist appdata."); + return FALSE; + } + + VideoLogInfo(""); + + MpVideoAppCtrlStop(pAppData); + + MpVideoCtrlMgrMediaDestroy(pAppData); + MpUtilDeletePopupHandle(); + MpVideoViewCtrlDestroy((void *)pAppData); + + MpUtilMediaSvcFinishSession(); + MpUtilBatteryStatusNotiIgnore(); + + nBufferingRate = 0; + nPlayerErrorType = 0; + nPlayerInterruptType = 0; + + pAppData->nDuration = 0; + pAppData->nSetPosition = 0; + pAppData->nCurPosition = 0; + pAppData->nBufferingPosition = 0; + pAppData->nVideoWidthResolution = 0; + pAppData->nVideoHeightResolution = 0; + + memset(pAppData->szVideoTitle, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szMediaUri, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX); + + pAppData->nPrePlayerState = MP_PLAYER_STATE_CLEAR; + pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR; + pAppData->nPlayingSpeed = 0; + + memset(pAppData->szProxyAddress, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szUserAgent, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szCookie, 0, sizeof(char) * STR_LEN_MAX); + + MpUtilResetForRelaunching(); + + MpVideoAppCtrlInitCheckCallStatus(); + + return TRUE; +} + +bool MpVideoAppCtrlIsTopView(void* pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + return MpVideoViewCtrlIsTopView(pUserData); +} + +bool MpVideoAppCtrlIsExistPlayerHandle(void) +{ + VideoLogInfo(""); + + return MpVideoCtrlMgrIsExistPlayerHandle(); +} + +void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState) +{ + VideoLogInfo(""); + + bWindowForegroundState = bForwgroundState; +} + +void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData) +{ + VideoLogInfo(""); + + MpVideoViewCtrlSetRotation(nRotateMode, TRUE, pUserData); +} + +bool MpVideoAppCtrlIsCheckCallStatus(void) +{ + VideoLogInfo(""); + + bool bCheckCallStatus = FALSE; + + if(g_nCurrentInterrupt == MP_PLAYER_INTERRUPTED_BY_CALL) + { + bCheckCallStatus = TRUE; + } + + return bCheckCallStatus; + +} +void MpVideoAppCtrlInitCheckCallStatus(void) +{ + VideoLogInfo(""); + + g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED; +} + diff --git a/src/mp-video-ctrl-mgr.c b/src/mp-video-ctrl-mgr.c new file mode 100644 index 0000000..c8e2099 --- /dev/null +++ b/src/mp-video-ctrl-mgr.c @@ -0,0 +1,572 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-ctrl-mgr.h" +#include "mp-video-player-mgr.h" +#include "mp-video-type-define.h" +#include "mp-video-service-ctrl.h" + +bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pOverlayXid, void *pEvasSinkID, char* szSubtitleUri, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if(!MpPlayerMgrCreate(szMediaURI)) + { + VideoLogInfo("[ERR] Fail to create player handle."); + return FALSE; + } + + MpUtilGetUserAgent(pAppData); + + if(!MpPlayerMgrSetUseragentForStreaming(pAppData->szUserAgent)) + { + VideoLogInfo("[ERR] Fail to set useragent."); + return FALSE; + } + + if(!MpPlayerMgrSetProxyAddressForStreaming(pAppData->szProxyAddress)) + { + VideoLogInfo("[ERR] Fail to set proxy address."); + return FALSE; + } + + if(!MpPlayerMgrSetCookieForStreaming(pAppData->szCookie)) + { + VideoLogInfo("[ERR] Fail to set Cookie."); + return FALSE; + } + + if(szSubtitleUri && strlen((char*)szSubtitleUri) > 0) + { + VideoLogInfo("Subtitle URI : %s", szSubtitleUri); + + if(!MpPlayerMgrSetSubtitle(szSubtitleUri)) + { + VideoLogInfo("Fail to set subtitle uri."); + } + } + else + { + VideoLogInfo("No exist subtitle uri."); + } + + if(!MpPlayerMgrSetOverlayXid(pOverlayXid)) + { + VideoLogInfo("[ERR] Fail to set overlay window."); + return FALSE; + } + + if(!MpVideoCtrlMgrSetScaling(FALSE)) + { + VideoLogInfo("[ERR] Fail to set scaling."); + return FALSE; + } + + if(!MpPlayerMgrSetSoundPriority()) + { + VideoLogInfo("[ERR] Fail to set sound priority."); + return FALSE; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR; + + return TRUE; +} + +bool MpVideoCtrlMgrMediaRealize(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrRealize()) + { + VideoLogInfo("[ERR] Fail relization."); + return FALSE; + } + return TRUE; +} + +bool MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrRealizeAsync(pReailzeCb, pUserData)) + { + VideoLogInfo("[ERR] Fail relization."); + return FALSE; + } + return TRUE; +} + +void MpVideoCtrlMgrMediaDestroy(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (!MpPlayerMgrIsActive()) { + VideoLogInfo(" Already destroy player handle."); + return; + } + + if (!MpPlayerMgrUnrealize()) { + VideoLogInfo("[ERR] Fail to unrealize player handle."); + return; + } + + if (!MpPlayerMgrDestroy()) { + VideoLogInfo("[ERR] Fail to destroy player handle."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR; +} + +bool MpVideoCtrlMgrMediaPlay(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (!MpPlayerMgrPlay()) { + VideoLogInfo("[ERR] Fail to play multimedia player."); + return FALSE; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY; + + return TRUE; +} + +void MpVideoCtrlMgrMediaStop(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (!MpPlayerMgrIsActive()) { + VideoLogInfo("[ERR] Player handle is destroyed."); + return; + } + + if (!MpPlayerMgrStop()) { + VideoLogInfo("[ERR] Fail to stop multimedia player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP; +} + +void MpVideoCtrlMgrMediaPause(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) { + VideoLogInfo + ("It is not possible to pause when player state is stop."); + return; + } + + if (!MpPlayerMgrPause()) { + VideoLogInfo("[ERR] Fail to pause multimedia player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE; +} + +void MpVideoCtrlMgrMediaResume(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) { + VideoLogInfo + ("It is not possible to resume when player state is stop."); + return; + } + + if (!MpPlayerMgrResume()) { + VideoLogInfo("[ERR] Fail to resume multimedia player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME; +} + +void MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *PlayerSubtitleCb, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + if(!PlayerCompletedCb || !PlayerInterruptedCb || !PlayerErrorCb || !PlayerBufferingCb) + { + VideoLogInfo("[ERR] No exist player callback function pointer."); + return; + } + + VideoLogInfo(""); + + MpPlayerMgrRegistePlayerCallback(PlayerCompletedCb, PlayerInterruptedCb, PlayerErrorCb, PlayerBufferingCb, PlayerSubtitleCb, pUserData); +} + +void MpVideoCtrlMgrSetOverlayXid(void *pXid) +{ + VideoLogInfo(""); + + if (!MpPlayerMgrSetOverlayXid(pXid)) { + VideoLogInfo("[ERR] Fail to set overlay window."); + return; + } +} +void MpVideoCtrlMgrSetEvasSinkID(void *pEvasSinkID) +{ + VideoLogInfo(""); + + if (!MpPlayerMgrSetEvasSinkID(pEvasSinkID)) { + VideoLogInfo("[ERR] Fail to set overlay window."); + return; + } +} + +void MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData) +{ + VideoLogInfo(""); + + VideoLogInfo("Set position - %d", nSetPosition); + + if (nSetPosition > -1) { + MpPlayerMgrSetPosition(nSetPosition, pSeekCb, pUserData); + } +} +void MpVideoCtrlMgrSetSubtitlePosition(int nSetPosition) +{ + VideoLogInfo(""); + + if (nSetPosition > -1) { + MpPlayerMgrSetSubtitlePosition(nSetPosition); + } +} + +int MpVideoCtrlMgrGetPosition(void) +{ + /* VideoLogInfo(""); */ + + return MpPlayerMgrGetPosition(); +} + +int MpVideoCtrlMgrGetDuration(void) +{ + VideoLogInfo(""); + + int nDuration = 0; + + nDuration = MpPlayerMgrGetDuration(); + + VideoLogInfo(" content duration : %d ms", nDuration); + + return nDuration; +} + +void MpVideoCtrlMgrResetPlaySpeed(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (!MpPlayerMgrSetPlaySpeed(1.0)) { + VideoLogInfo("[ERR] Fail to reset play speed."); + return; + } + + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_NORMAL; +} + +void MpVideoCtrlMgrSetPlaySpeedUp(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) { + VideoLogInfo("Current speed is full.(5X)"); + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_5X; + } + + + float val = 0; + val = (float)pAppData->nPlayingSpeed; + + MpPlayerMgrSetPlaySpeed(val); + +} + +void MpVideoCtrlMgrSetPlaySpeedDown(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) { + VideoLogInfo("Current speed is full.(5X)"); + return; + } + + float val = 0; + val = -(float)pAppData->nPlayingSpeed; + MpPlayerMgrSetPlaySpeed(val); + +} + +int MpVideoCtrlMgrGetVideoWidthResolution(void) +{ + VideoLogInfo(""); + + int nVideoWidthResolution = MpPlayerMgrGetVideoWidthResolution(); + + VideoLogInfo("Video width resolution : %d", nVideoWidthResolution); + + return nVideoWidthResolution; +} + +int MpVideoCtrlMgrGetVideoHeightResolution(void) +{ + VideoLogInfo(""); + + int nVideoHeightResolution = MpPlayerMgrGetVideoHeightResolution(); + + VideoLogInfo("Video height resolution : %d", nVideoHeightResolution); + + return nVideoHeightResolution; +} + +void MpVideoCtrlMgrSetRatioVideoScreen(void *pUserData, int nRatioScreenSize) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoLogInfo(""); + + int nDisplayMode = PLAYER_DISPLAY_MODE_LETTER_BOX; + + MpPlayerMgrSetDisplayMode(nDisplayMode); +} + +void MpVideoCtrlMgrRotateVideoScreen(int nVideoRotateValue) +{ + VideoLogInfo(""); + + switch (nVideoRotateValue) { + case VIDEO_ROTATE_PORTRAIT_NORMAL: + VideoLogInfo("Set Portrait."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT); + break; + + case VIDEO_ROTATE_LANDSCAPE_NORMAL: + VideoLogInfo("Set Landscape."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_LANDSCAPE); + break; + + case VIDEO_ROTATE_PORTRAIT_REVERSE: + VideoLogInfo("Set Portrait reverse."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN); + break; + + case VIDEO_ROTATE_LANDSCAPE_REVERSE: + VideoLogInfo("Set Landscape reverse."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN); + break; + + default: + VideoLogInfo("Set Portrait."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT); + break; + } +} + +void MpVideoCtrlMgrSetMute(bool bMuteEnable) +{ + VideoLogInfo(""); + + MpPlayerMgrSetMute(bMuteEnable); +} + +bool MpVideoCtrlMgrGetMuteState(void) +{ + VideoLogInfo(""); + + return MpPlayerMgrGetMute(); +} + +bool MpVideoCtrlMgrStartCapture(void *pVideoCaptureCb, void *pUserData) +{ + VideoLogInfo(""); + + return MpPlayerMgrCaptureVideo(pVideoCaptureCb, pUserData); +} + +int MpVideoCtrlMgrGetBufferingPosition(void) +{ + return MpPlayerMgrGetBufferingPosition(); +} + +bool MpVideoCtrlMgrIsExistPlayerHandle(void) +{ + VideoLogInfo(""); + + return MpPlayerMgrIsActive(); +} + +bool MpVideoCtrlMgrIsOnlyAudio(void) +{ + VideoLogInfo(""); + + int nStreamFileType = MpPlayerMgrGetFileStreamType(); + + if(nStreamFileType == MP_FILE_STREAM_TYPE_AUDIO) + { + VideoLogInfo("A file stream type is only audio."); + return TRUE; + } + + return FALSE; +} + +bool MpVideoCtrlMgrSetScaling(bool bScale) +{ + VideoLogInfo(""); + + return MpPlayerMgrSetScaling(bScale); + +} + +int MpVideoCtrlMgrGetErrorType(int nErrorVal) +{ + VideoLogInfo(""); + + switch(nErrorVal) + { + case PLAYER_ERROR_NONE: + return MP_PLAYER_ERROR_NONE; + + case PLAYER_ERROR_OUT_OF_MEMORY: + return MP_PLAYER_ERROR_OUT_OF_MEMORY; + + case PLAYER_ERROR_INVALID_PARAMETER: + return MP_PLAYER_ERROR_INVALID_PARAMETER; + + case PLAYER_ERROR_NO_SUCH_FILE: + return MP_PLAYER_ERROR_NO_SUCH_FILE; + + case PLAYER_ERROR_INVALID_OPERATION: + return MP_PLAYER_ERROR_INVALID_OPERATION; + + case PLAYER_ERROR_SEEK_FAILED: + return MP_PLAYER_ERROR_SEEK_FAILED; + + case PLAYER_ERROR_INVALID_STATE: + return MP_PLAYER_ERROR_INVALID_STATE; + + case PLAYER_ERROR_NOT_SUPPORTED_FILE: + return MP_PLAYER_ERROR_NOT_SUPPORTED_FILE; + + case PLAYER_ERROR_INVALID_URI: + return MP_PLAYER_ERROR_INVALID_URI; + + case PLAYER_ERROR_SOUND_POLICY: + return MP_PLAYER_ERROR_SOUND_POLICY; + + case PLAYER_ERROR_CONNECTION_FAILED: + return MP_PLAYER_ERROR_CONNECTION_FAILED; + + case PLAYER_ERROR_VIDEO_CAPTURE_FAILED: + return MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED; + + default: + return MP_PLAYER_ERROR_UNKNOWN_ERROR; + } +} + +int MpVideoCtrlMgrGetClosedCaptionCount(void) +{ + VideoLogInfo(""); + + return MpPlayerMgrGetClosedCaptionCount(); + +} \ No newline at end of file diff --git a/src/mp-video-display-view.c b/src/mp-video-display-view.c new file mode 100755 index 0000000..1607e4c --- /dev/null +++ b/src/mp-video-display-view.c @@ -0,0 +1,1314 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-display-view.h" +#include "mp-video-progressbar.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-util-media-service.h" +#include "mp-video-string-define.h" +#include "mp-video-sound-path-ctrl.h" + +#include "mp-external-ug.h" +#include "mp-video-service-ctrl.h" + +#define CTRL_PANEL_SHOW_TIME 5.0 +#define MAX_SPEED_STEP 4 +#define REWIND_SPACE_TIME 3000 + +static Evas_Object *pNaviFrameHandle = NULL; +static Evas_Object *pDisplayViewLayout = NULL; +static Evas_Object *pDisplayViewPanelEdj = NULL; +static Evas_Object *pDisplayViewCtrlEdj = NULL; +static Evas_Object *pDisplayViewOptionEdj = NULL; +static Evas_Object *pDisplayViewProgressbarEdj = NULL; +static Evas_Object *pDisplaySoundpathButton = NULL; + +static Evas_Object *pDisplayViewSpeedboxEdj = NULL; + +static Ecore_Timer *pCtrlPanelHideTimer = NULL; +static Ecore_Timer *pSpeedPressTimer = NULL; +static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL; +static ChangeDisplayViewCbFunc pChangeViewUserCbFunc = NULL; + +static bool bSwitchDisplayViewUI = TRUE; +static bool bIsSpeedLongPress = FALSE; +static bool bIsDisplayViewOnlyAudio = FALSE; +static int nSpeedMode = 0; /* (-1:REW, 1: FF) */ +static int nControlMouseDownPos = 0; +static int nControlMouseMovePos = 0; +static bool bIsPauseByUser = FALSE; +static bool bIsBeginOfStream = FALSE; +static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE; + + +static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return; + } + + VideoLogInfo(""); + + MpUtilDeletePopupHandle(); +} + + +static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (MpVideoSoundpathIsConnectOtherSoundpath()) { + VideoLogInfo("Connect BT or earjack."); + MpVideoSoundpathShow(pUserData); + } else { + MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb); + } +} + + +static void MpVideoDisplayViewPressOptionShareCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + if(pCtrlPanelHideTimer) + { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + MpExternalUgShow((void *)pAppData, pNaviFrameHandle); +} + +static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) + { + VideoLogInfo("Press Pause button."); + + if(pAppData->bSeekComplete == FALSE) + { + bIsPauseByUser = TRUE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE; + return; + } + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) + { + bIsPauseByUser = TRUE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + } +} + +static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) { + VideoLogInfo("Press Resume/Play button."); + + if(pAppData->bSeekComplete == FALSE) + { + bIsPauseByUser = FALSE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + return; + } + + if (pAppData->nCurPlayerState != MP_PLAYER_STATE_RESUME && pAppData->nCurPlayerState != MP_PLAYER_STATE_PLAY) + { + bIsPauseByUser = FALSE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } +} + +static Eina_Bool MpVideoDisplayViewSpeedLongPressTimerCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + bIsSpeedLongPress = TRUE; + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X; + + char caption[CAPTION_TEXT_MAX_LEN] = { 0, }; + + if(nSpeedMode == 1) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData); + snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed); + + edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_FF, pDisplayViewSpeedboxEdj); + evas_object_show(pDisplayViewSpeedboxEdj); + } + else if(nSpeedMode == -1) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData); + snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed); + edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_REW, pDisplayViewSpeedboxEdj); + evas_object_show(pDisplayViewSpeedboxEdj); + } + + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SHOW, "*"); + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*"); + + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_SHOW, "*"); + + return EINA_FALSE; +} + + +static void MpVideoDisplayViewFFDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN)) { + VideoLogInfo("Press FF down button."); + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + nSpeedMode = 1; + pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData); + } +} + +static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) { + VideoLogInfo("Press FF up button."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + bIsPauseByUser = FALSE; + } + else + { + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + } + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*"); + edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj); + evas_object_hide(pDisplayViewSpeedboxEdj); + + + bIsSpeedLongPress = FALSE; + } +} + +static void MpVideoDisplayViewFFClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + if(!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED)) + { + VideoLogInfo("Press FF clicked button."); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + bIsPauseByUser = FALSE; + } +} + +static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) { + VideoLogInfo("Press Rewind donw button."); + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + nSpeedMode = -1; + pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData); + } +} + +static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) { + VideoLogInfo("Press Rewind up button."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + bIsPauseByUser = FALSE; + } + else + { + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + } + + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*"); + evas_object_hide(pDisplayViewSpeedboxEdj); + edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj); + + + bIsSpeedLongPress = FALSE; + } +} + +static void MpVideoDisplayViewRewClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED)) { + VideoLogInfo("Press Rewind clicked button."); + + if(pAppData->nCurPosition > REWIND_SPACE_TIME) + { + pAppData->nSetPosition = 0; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + else + { + bIsPauseByUser = FALSE; + } + } +} + +static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pAppData->nCurPosition >= 0) + { + MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, pAppData->nCurPosition); + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData); + + MpVideoDisplayViewPop(pNaviFrameHandle, pUserData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData); +} + + +static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); +} + +static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData, + Evas_Object *pObject, + const char *szEmission, + const char *szSource) +{ + VideoLogInfo(""); + if (!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData); +} + +static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No Exist pUserData."); + return EINA_FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + + return EINA_FALSE; +} + + +static void MpVideoDisplayViewSpeedChange(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No Exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int booster_step = 0; + + if (nSpeedMode == 1) { + booster_step = nControlMouseDownPos - nControlMouseMovePos; + booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get()); + } else if (nSpeedMode == -1) { + booster_step = nControlMouseDownPos - nControlMouseMovePos; + booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get()); + } else { + VideoLogInfo("[ERR] Invalid SpeedMode."); + return; + } + + + if(booster_step == 0) + { + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X; + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*"); + } + else if(booster_step == 1) + { + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X; + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_2, "*"); + } + else if(booster_step > 2) + { + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X; + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_3, "*"); + } + + VideoLogInfo("STEP:(%d, %d)", booster_step, pAppData->nPlayingSpeed); + + char caption[CAPTION_TEXT_MAX_LEN] = { 0, }; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + if(nSpeedMode == 1) + { + snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData); + } + else + { + snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData); + } + + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption); + + return; +} + +static void MpVideoDisplayViewControlMouseMoveCb(void *pUserData, Evas * e, Evas_Object *obj, void *event) +{ + if (!event) { + VideoLogInfo("[ERR]"); + return; + } + + if (!pUserData) { + VideoLogInfo("[ERR] No Exist pUserData."); + return; + } + + Evas_Event_Mouse_Move *pBtnEvent = (Evas_Event_Mouse_Move *) event; + + if (bIsSpeedLongPress) { + nControlMouseMovePos = pBtnEvent->cur.output.y; + MpVideoDisplayViewSpeedChange(pUserData); + } +} + +static void MpVideoDisplayViewControlMouseDownCb(void *pUserData, Evas * e, Evas_Object *obj, void *event) +{ + VideoLogInfo(""); + + if (!event) { + VideoLogInfo("[ERR]"); + return; + } + + Evas_Event_Mouse_Down *pBtnEvent = (Evas_Event_Mouse_Down *) event; + + nControlMouseDownPos = pBtnEvent->output.y; +} + +static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + MpVideoSoundpathHide(); + MpUtilDeletePopupHandle(); + + if (MpUtilIsConnectEarjack() || MpVideoSoundpathIsConnectOtherSoundpath()) { + VideoLogInfo("Connect earjack."); + if (pDisplaySoundpathButton) { + elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton); + } else { + pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb); + elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton); + } + } else { + VideoLogInfo("Disconnect earjack."); + + if (pDisplaySoundpathButton) { + evas_object_del(pDisplaySoundpathButton); + pDisplaySoundpathButton = NULL; + } + + elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_right_btn"); + } +} + +static void MpVideoDisplayViewChangedCameraStatusCb(void *pNode, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!MpUtilIsCameraOff()) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } +} +static void MpVideoDisplayViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + + evas_object_hide(pDisplayViewLayout); +} + +static void MpVideoDisplayViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData); +} + +void MpVideoDisplayViewInitLayout(void *pUserData, int nPlayerType) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pDisplayViewLayout = elm_layout_add(pNaviFrameHandle); + if (pDisplayViewLayout) { + Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow); + + elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP); + + pDisplayViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP); + elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pDisplayViewOptionEdj); + + edje_object_signal_emit(pDisplayViewOptionEdj, SIGNAL_OPTION_MODE_LOCAL, "*"); + + pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP); + + evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_DOWN, (void *)MpVideoDisplayViewControlMouseDownCb, pAppData); + evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_MOVE, (void *)MpVideoDisplayViewControlMouseMoveCb, pAppData); + + if(nPlayerType == MP_VIDEO_PLAYER_GALLERY) + { + int width = 0; + int height = 0; + + int item_width = 120; + int item_height = 90; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + if(width > 0) { + item_width = 170 * width/DEFAULT_SCALE_WIDTH; + } + + if(height > 0) { + item_height = 145 * height/DEFAULT_SCALE_HEIGHT; + } + } + + pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP); + + edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj); + + pDisplayViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData); + if (pDisplayViewProgressbarEdj) { + edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pDisplayViewProgressbarEdj); + } else { + VideoLogInfo("Progressbar edj handle is null."); + } + + elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj); + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*"); + + edje_object_signal_callback_add(pDisplayViewOptionEdj, + SIGNAL_OPTION_SHARE_DOWN, + PART_OPTION_SHARE, + (void *)MpVideoDisplayViewPressOptionShareCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_PLAY_PAUSE_PRESS, + SIGNAL_CONTROL_PART_PLAY_BUTTON, + (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_PLAY_RESUME_PRESS, + SIGNAL_CONTROL_PART_PLAY_BUTTON, + (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN, + SIGNAL_CONTROL_PART_FF_BUTTON, + (void *)MpVideoDisplayViewFFDownButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP, + SIGNAL_CONTROL_PART_FF_BUTTON, + (void *)MpVideoDisplayViewFFUpButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED, + SIGNAL_CONTROL_PART_FF_BUTTON, + (void *)MpVideoDisplayViewFFClickedButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN, + SIGNAL_CONTROL_PART_REW_BUTTON, + (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP, + SIGNAL_CONTROL_PART_REW_BUTTON, + (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED, + SIGNAL_CONTROL_PART_REW_BUTTON, + (void *)MpVideoDisplayViewRewClickedButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_BACK_BUTTON_DOWN, + SIGNAL_CONTROL_PART_BACK_BUTTON, + (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_VOL_BUTTON_DOWN, + SIGNAL_CONTROL_PART_VOL_BUTTON, + (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_VOL_BUTTON_UP, + SIGNAL_CONTROL_PART_VOL_BUTTON, + (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_MUTE_BUTTON_DOWN, + SIGNAL_CONTROL_PART_MUTE_BUTTON, + (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_MUTE_BUTTON_UP, + SIGNAL_CONTROL_PART_MUTE_BUTTON, + (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData); + + pDisplayViewSpeedboxEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ, SPEEDBOX_EDJ_GROUP); + evas_object_hide(pDisplayViewSpeedboxEdj); + + MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData); + MpUtilRegisteCameraStatusCbFunc((void *)MpVideoDisplayViewChangedCameraStatusCb, pUserData); + } +} + +void MpVideoDisplayViewInit(void *pUserData, int nPlayerType) +{ + VideoLogInfo(""); + + if (!pNaviFrameHandle|| !pUserData) { + VideoLogInfo("[ERR]"); + return; + } + bIsPauseByUser = FALSE; + + MpVideoDisplayViewInitLayout(pUserData, nPlayerType); +} + + +/* + * External function + */ +void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb) +{ + if (!pNaviFrame || !pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pNaviFrameHandle = pNaviFrame; + pChangeViewUserCbFunc = pChangeViewCb; + + MpVideoDisplayViewInit(pUserData, nPlayerType); + pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line"); + + elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoDisplayViewShowLayoutFinish, pUserData); + elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoDisplayViewHideLayoutFinish, pUserData); + + if(MpVideoSoundpathIsConnectOtherSoundpath()) + { + pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb); + elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton); + } + + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); +} + +void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); +} + +void MpVideoDisplayViewDestroy(void *pUserData) +{ + VideoLogInfo(""); + + MpVideoDisplayViewHideControlPanel(pUserData); + MpVideoProgressbarDestroy(); + + pNaviFrameHandle = NULL; + pDisplayViewProgressbarEdj = NULL; + + if (pDisplayViewPanelEdj) { + evas_object_del(pDisplayViewPanelEdj); + pDisplayViewPanelEdj = NULL; + } + + if (pDisplayViewCtrlEdj) { + evas_object_del(pDisplayViewCtrlEdj); + pDisplayViewCtrlEdj = NULL; + } + + if (pDisplayViewOptionEdj) { + evas_object_del(pDisplayViewOptionEdj); + pDisplayViewOptionEdj = NULL; + } + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + if (pDisplayViewLayout) { + evas_object_del(pDisplayViewLayout); + pDisplayViewLayout = NULL; + } + + if (pDisplaySoundpathButton) { + evas_object_del(pDisplaySoundpathButton); + pDisplaySoundpathButton = NULL; + } + + if (pDisplayViewSpeedboxEdj) { + evas_object_del(pDisplayViewSpeedboxEdj); + pDisplayViewSpeedboxEdj = NULL; + } + + bSwitchDisplayViewUI = TRUE; + nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE; + bIsDisplayViewOnlyAudio = FALSE; + bIsPauseByUser = FALSE; +} + +void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + bIsBeginOfStream = TRUE; + + pAppData->bSeekComplete = TRUE; + + MpVideoProgressbarBeginOfStream((void *)pAppData); + + if (pAppData->nDuration > 1) { + char szDurationTime[PLAY_TIME_LENGTH] = { 0 }; + + snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000)); + + MpVideoProgressbarUpdateDurationTime(szDurationTime); + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + + if(MpVideoDisplayViewIsPauseByUser() == FALSE) + { + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*"); + } +} + +void MpVideoDisplayViewUpdatePauseKey(void) +{ + VideoLogInfo(""); + + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*"); +} + +void MpVideoDisplayViewUpdateResumeKey(void) +{ + VideoLogInfo(""); + + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*"); +} + + + + +void MpVideoDisplayViewShowControlPanel(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!pDisplayViewPanelEdj) { + VideoLogInfo("No exist play control panel edc."); + return; + } + + if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) { + VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bIsBeginOfStream) + { + MpVideoProgressbarCreateTimer((void *)pAppData); + } + + bSwitchDisplayViewUI = TRUE; + evas_object_show(pDisplayViewLayout); + + elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm"); + int nRotate = MpUtilGetRotationState(); + if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL) + { + elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*"); + } + else + { + elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*"); + } + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + VideoLogInfo(""); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsDisplayViewOnlyAudio == TRUE) { + VideoLogInfo(""); + } else { + VideoLogInfo(""); + pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData); + } + + MpVideoDisplayViewActivate(); +} + +void MpVideoDisplayViewHideControlPanel(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) { + VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE"); + return; + } + + if (!pDisplayViewPanelEdj) { + VideoLogInfo("No exist play control panel edc."); + return; + } + + if(bIsDisplayViewOnlyAudio) + { + VideoLogInfo("Not hide control panel and UI because of audio only."); + return; + } + + bSwitchDisplayViewUI = FALSE; + + MpVideoProgressbarDeleteTimer(); + MpExternalUgHide(); + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm"); + elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*"); +} + +void MpVideoDisplayViewActivate(void) +{ + VideoLogInfo(""); + + nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE; +} + +void MpVideoDisplayViewUnactivate(void) +{ + VideoLogInfo(""); + + nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE; +} + +void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle); + + bIsBeginOfStream = FALSE; + MpVideoProgressbarDeleteTimer(); + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + if (pNaviFrameItemForDisplayerView != NULL) { + VideoLogInfo("%s", pAppData->szVideoTitle); + elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle); + } +} + +bool MpVideoDisplayViewIsTopView(void) +{ + VideoLogInfo(""); + + Evas_Object *pTmpContents = NULL; + Elm_Object_Item *pTmpItem = NULL; + + if (!pNaviFrameHandle) { + VideoLogInfo("[ERR] No exist navigationbar handle."); + return FALSE; + } + + pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle); + pTmpContents = elm_object_item_content_get(pTmpItem); + if (pTmpContents) { + if (pTmpContents == pDisplayViewLayout) { + VideoLogInfo("Video display view is staing in top view."); + return TRUE; + } else { + VideoLogInfo("Video display view is not staied in top view."); + return FALSE; + } + } else { + VideoLogInfo("[ERR] No exist navigationbar top item."); + return FALSE; + } + + return FALSE; +} + +void MpVideoDisplayViewShowNocontentImage(void *pUserData) +{ + VideoLogInfo(""); + + if (pDisplayViewLayout) { + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*"); + } + + bIsDisplayViewOnlyAudio = TRUE; + + MpVideoDisplayViewShowControlPanel(pUserData); +} + +void MpVideoDisplayViewHideNocontentImage(void) +{ + VideoLogInfo(""); + + if (pDisplayViewLayout) { + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*"); + } + + bIsDisplayViewOnlyAudio = FALSE; +} + +void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bIsSpeedLongPress) + { + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*"); + edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj); + + evas_object_hide(pDisplayViewSpeedboxEdj); + bIsSpeedLongPress = FALSE; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + } + + elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*"); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*"); + edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*"); + edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*"); + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PORTRATE_MODE, "*"); + if(bLayoutHide) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + } +} + +void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bIsSpeedLongPress) + { + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*"); + edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj); + + evas_object_hide(pDisplayViewSpeedboxEdj); + bIsSpeedLongPress = FALSE; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + } + + elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*"); + + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_LANDSCAPE_MODE, "*"); + + if(bLayoutHide) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + } + +} + +void MpVideoDisplayViewResetProgressBar(void *pUserData) +{ + VideoLogInfo(""); + + if (pDisplayViewLayout) { + MpVideoProgressbarReset(pUserData); + } +} + +bool MpVideoDisplayViewIsPauseByUser(void) +{ + VideoLogInfo("%d", bIsPauseByUser); + + return bIsPauseByUser; +} + +void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser) +{ + VideoLogInfo(""); + + bIsPauseByUser = bPauseByUser; +} + + +void MpVideoDisplayViewUpdateProgressBar(void *pUserData) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + if(bIsBeginOfStream) + { + MpVideoProgressbarCreateTimer(pUserData); + } + +} diff --git a/src/mp-video-player-mgr.c b/src/mp-video-player-mgr.c new file mode 100644 index 0000000..12f85f4 --- /dev/null +++ b/src/mp-video-player-mgr.c @@ -0,0 +1,856 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include "mp-video-log.h" +#include "mp-video-player-mgr.h" + +#define MAX_PATH_LEN 2048 + + +static player_h pPlayerHandle; + + +bool MpPlayerMgrIsActive(void) +{ + return pPlayerHandle ? true : false; +} + +bool MpPlayerMgrRegistePlayerCallback(void *PlayerCompletedCbFunc, void *PlayerInterruptedCbFunc, void *PlayerErrorCbFunc, void *PlayerBufferingCbFunc, void *PlayerSubtitleCbFunc, void *pUserData) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_completed_cb(pPlayerHandle, PlayerCompletedCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_interrupted_cb(pPlayerHandle, PlayerInterruptedCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_error_cb(pPlayerHandle, PlayerErrorCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_buffering_cb(pPlayerHandle, PlayerBufferingCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_subtitle_updated_cb(pPlayerHandle, PlayerSubtitleCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; +} + + return true; +} + +bool MpPlayerMgrCreate(const char *szPath) +{ + VideoLogInfo(""); + + if(!szPath) + { + VideoLogInfo("[ERR] Not correct Meida URI."); + return false; + } + + int nPathLength = strlen(szPath); + int nErr = PLAYER_ERROR_NONE; + + VideoLogInfo(" Media path (%s)", szPath); + + if(nPathLength > 0 && nPathLength < MAX_PATH_LEN) + { + nErr = player_create(&pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to create player handle. (MMF Error code : %x)", nErr); + return false; + } + + nErr = player_set_uri(pPlayerHandle, szPath); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] (%x) Fail to set attribute ", nErr); + return false; + } + } + else + { + VideoLogInfo("[ERR] File path is too long."); + return false; + } + + nErr = player_set_sound_type(pPlayerHandle, SOUND_TYPE_MEDIA); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] (%x):: Fail to set attribute ", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrDestroy(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_destroy(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + pPlayerHandle = NULL; + + return true; +} + +bool MpPlayerMgrRealize(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_prepare(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrRealizeAsync(void *pPrepareCb, void *pUserData) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_prepare_async(pPlayerHandle, pPrepareCb, pUserData); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrUnrealize(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_unprepare (pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrPlay(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_start(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrStop(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_stop (pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrResume(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_start(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrPause(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_pause(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +int MpPlayerMgrGetPosition(void) +{ + if(!MpPlayerMgrIsActive()) + { + return 0; + } + + int nPos = 0; + int nErr = 0; + + nErr = player_get_position(pPlayerHandle, &nPos); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x ", nErr); + return 0; + } + + return nPos; +} + +void MpPlayerMgrSetPosition(unsigned int nPos, void *pSeekCb, void *pUserData) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo("Set position - %d", nPos); + + int nErr = player_set_position(pPlayerHandle, (int)nPos, pSeekCb, pUserData); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x ", nErr); + } +} + +void MpPlayerMgrSetSubtitlePosition(unsigned int nPos) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return; + } + + int nErr = player_set_subtitle_position(pPlayerHandle, nPos); + + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x ", nErr); + } +} + + +void MpPlayerMgrSetMute(bool bMuteEnable) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return; + } + + if(player_set_mute(pPlayerHandle, bMuteEnable) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to set mute."); + } +} + +bool MpPlayerMgrGetMute(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + bool bIsMute = false; + + if(player_is_muted(pPlayerHandle, &bIsMute) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to get mute state."); + return false; + } + + return bIsMute; +} + +bool MpPlayerMgrSetSurroundFilters(int nSurround) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + audio_effect_preset_e ePresetValue = (audio_effect_preset_e)nSurround; + + bool available = false; + + player_audio_effect_preset_is_available (pPlayerHandle, ePresetValue, &available); + + if(available == false) + { + VideoLogInfo("[ERR] unavailable to set audio effect."); + return false; + } + + if(player_audio_effect_set_preset(pPlayerHandle,ePresetValue) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to set audio effect."); + return false; + } + + return true; +} + +int MpPlayerMgrGetDuration(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0; + } + + int nDuration = -1; + + int nErr = player_get_duration(pPlayerHandle, &nDuration); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr); + return 0; + } + + return nDuration; +} + +bool MpPlayerMgrSetOverlayXid(void *pOverlayXid) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } +/* + if(!pOverlayXid) + { + VideoLogInfo("[ERR]"); + return false; + } +*/ + VideoLogInfo("XID : %x, %d", pOverlayXid, (int)pOverlayXid); + int nErr = player_set_display(pPlayerHandle, PLAYER_DISPLAY_TYPE_X11, (void*)pOverlayXid); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr); + return false; + } + return true; +} + +bool MpPlayerMgrSetEvasSinkID(void *pEvasSinkID) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } +/* + if(!pEvasSinkID) + { + VideoLogInfo("[ERR]"); + return false; + } +*/ + VideoLogInfo("Evas Sink ID : %x", pEvasSinkID); + + int nErr = player_set_display(pPlayerHandle, PLAYER_DISPLAY_TYPE_EVAS, (void*)pEvasSinkID); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrSetSoundPriority(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_set_sound_type(pPlayerHandle, SOUND_TYPE_MEDIA); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr); + return false; + } + + return true; +} + +int MpPlayerMgrSetPlaySpeed(float nSpeedValue) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return -1; + } + int nErr = player_set_playback_rate(pPlayerHandle, nSpeedValue); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr); + return -1; + } + + return 0; +} + +int MpPlayerMgrGetVideoWidthResolution(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0; + } + + int nWidth = 0; + int nHeight = 0; + int nErr = player_get_video_size(pPlayerHandle, &nWidth, &nHeight); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr); + return 0; + } + + return nWidth; +} + +int MpPlayerMgrGetVideoHeightResolution(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0; + } + + int nWidth = 0; + int nHeight = 0; + int nErr = player_get_video_size(pPlayerHandle, &nWidth, &nHeight); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr); + return 0; + } + + return nHeight; +} + +bool MpPlayerMgrSetSubtitle(char *szSubtitlePath) +{ + VideoLogInfo("%s", szSubtitlePath); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(!szSubtitlePath) + { + VideoLogInfo("[ERR] subtitle path is null."); + return false; + } + + int nErr = player_set_subtitle_path(pPlayerHandle, szSubtitlePath); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + int nRet = player_set_display_mode (pPlayerHandle , nMethodMode); + if(nRet != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nRet); + return false; + } + return true; +} + +bool MpPlayerMgrSetRotate(MpVideoRotation nRotation) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nRotVal = PLAYER_DISPLAY_ROTATION_NONE; + + if(nRotation == VIDEO_SCREEN_PORTRAIT) { + nRotVal = PLAYER_DISPLAY_ROTATION_NONE; + } + else if(nRotation == VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN) { + nRotVal = PLAYER_DISPLAY_ROTATION_180; + } + else if(nRotation == VIDEO_SCREEN_LANDSCAPE) { + nRotVal = PLAYER_DISPLAY_ROTATION_270; + } + else if(nRotation == VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN) { + nRotVal = PLAYER_DISPLAY_ROTATION_90; + } + + int nRet = player_set_x11_display_rotation (pPlayerHandle , nRotVal); + if(nRet != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nRet); + return false; + } + return true; +} + +bool MpPlayerMgrSetUseragentForStreaming(const char *szUserAgent) +{ + VideoLogInfo("!!!!!! NO EXIST FUNCTION FOR SETTING USER AGENT. !!!!!!"); + + return true; +} + +bool MpPlayerMgrSetProxyAddressForStreaming(const char *szProxyAddress) +{ + VideoLogInfo("!!!!!! NO EXIST FUNCTION FOR SETTING PROXY ADDRESS. !!!!!!"); + return true; +} + +bool MpPlayerMgrSetCookieForStreaming(const char *szCookie) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(!szCookie) + { + VideoLogInfo("No exist cookie."); + return false; + } + + VideoLogInfo(""); + + int nRet = player_set_streaming_cookie(pPlayerHandle , szCookie, strlen(szCookie)); + if(nRet == PLAYER_ERROR_INVALID_PARAMETER) + { + VideoLogInfo("PLAYER_ERROR_INVALID_PARAMETER"); + return false; + } + + return true; +} + +bool MpPlayerMgrStartCapture() +{ + VideoLogInfo(""); + return true; +} + +bool MpPlayerMgrCaptureVideo(void *pCallbackFunc, void *pUserData) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo(""); + return false; + } + + VideoLogInfo(""); + + int nRet = player_capture_video(pPlayerHandle, pCallbackFunc, pUserData); + if(nRet == PLAYER_ERROR_INVALID_PARAMETER) + { + VideoLogInfo("PLAYER_ERROR_INVALID_PARAMETER"); + return false; + } + + if(nRet == PLAYER_ERROR_INVALID_OPERATION) + { + VideoLogInfo("PLAYER_ERROR_INVALID_OPERATION"); + return false; + } + + if(nRet == PLAYER_ERROR_INVALID_STATE) + { + VideoLogInfo("PLAYER_ERROR_INVALID_STATE"); + return false; + } + + return true; +} + +int MpPlayerMgrGetBufferingPosition(void) +{ + int nStartPos = 0; + int nCurrentPos = 0; + + if(player_get_streaming_download_progress(pPlayerHandle,&nStartPos, &nCurrentPos) != PLAYER_ERROR_NONE) + { + VideoLogError(""); + return 0; +} + + return nCurrentPos; +} + +bool MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + // !!! CHECK player_buffering_cb !!! + if(player_set_buffering_cb(pPlayerHandle, pCallbackFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo(""); + return false; + } + + return true; +} + +int MpPlayerMgrGetFileStreamType(void) +{ + VideoLogInfo(""); + +// jdlee + return FILE_STREAM_TYPE_VIDEO; +} + +bool MpPlayerMgrSetScaling(bool bScale) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + VideoLogInfo(""); + + if(player_enable_evas_display_scaling(pPlayerHandle, bScale) != PLAYER_ERROR_NONE) { + VideoLogInfo("[ERR]"); + return false; + } + return true; +} + +player_state_e MpPlayerMgrGetPlayerState(void) +{ + int ret = 0; + player_state_e player_state = PLAYER_STATE_NONE; + ret = player_get_state(pPlayerHandle, &player_state); + if (ret != PLAYER_ERROR_NONE) { + player_state = PLAYER_STATE_NONE; + } + return player_state; +} + +void MpPlayerMgrSetVolume(float volume) +{ + VideoLogInfo("volume = %f", volume); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return; + } + + if(player_set_volume(pPlayerHandle, volume, volume) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to set volume."); + } +} + +float MpPlayerMgrGetVolume(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0.0; + } + + float volume_left = 0.0; + float volume_right = 0.0; + + if(player_get_volume(pPlayerHandle, &volume_left, &volume_right) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to get volume."); + return 0.0; + } + + return volume_left; +} + +int MpPlayerMgrGetClosedCaptionCount(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0; + } + int nCount = 0; + + if(player_get_track_count(pPlayerHandle, PLAYER_TRACK_TYPE_TEXT, &nCount) != PLAYER_ERROR_NONE) + { + VideoLogError("[ERR] player_get_track_count."); + return 0; + } + + VideoLogError("== %d ===========================================", nCount); + + return nCount; +} + diff --git a/src/mp-video-progressbar.c b/src/mp-video-progressbar.c new file mode 100644 index 0000000..66f8c84 --- /dev/null +++ b/src/mp-video-progressbar.c @@ -0,0 +1,752 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-value-define.h" +#include "mp-video-service-ctrl.h" +#include "mp-video-progressbar.h" + +#define PROGRESS_BAR_START_TERM 130 +#define PROGRESS_BAR_WIDTH_TERM 200 + +#define PROGRESS_ADJUSTMENT_TIME_INTERVAL 2.0 +#define PROGRESS_ADJUSTMENT_RUN_INTERVAL 0.3 + +#define PROGRESS_ADJUSTMENT_MOVE_LIMIT 20 +#define PROGRESS_ADJUSTMENT_MODE_LIMIT 20 + + +static Evas_Object *pProgressbarEdj = NULL; +static Ecore_Timer *pProgressbarTimer = NULL; + +static Ecore_Timer *pProgressAdjustCheckTimer = NULL; +static Ecore_Timer *pProgressAdjustRunTimer = NULL; + +static bool bIsEventSkip = FALSE; +static bool bIsDrag = FALSE; +static int nDragPosition = 0; + +static bool bIsAdjustmentMode = FALSE; +static int nDownPosX = 0; +static int nOldPosX = 0; +static bool bPrevAdjustment = FALSE; + + +static void MpVideoProgressbarSetAdjustmentMode(bool bShow) +{ + VideoLogInfo(""); + + if(bShow) { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_SHOW, "*"); + } + else { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_HIDE, "*"); + } +} + + +static void MpVideoProgressbarSetPointerVisible(bool bVisible) +{ + VideoLogInfo(""); + + if(bVisible) { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_SHOW, "*"); + } + else { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_HIDE, "*"); + } +} + +/* + * Internal function + */ +static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData) +{ + //VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + nPlayedRatio = ((double)nDragPosition / (double)pAppData->nDuration); + + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, + PLAY_TIME_ARGS(nDragPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", + nPlayedRatio, 0.0); + + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", + szPlayingTime); + + if(bIsAdjustmentMode) { + edje_object_part_text_set(pProgressbarEdj, "progress.adjustment.txt", + szPlayingTime); + } + + return EINA_TRUE; +} + +static void MpVideoProgressbarUpdateBufferingValue(void *pUserData) +{ + //VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + double buffering_ratio = 0.0; + pAppData-> + VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition(pAppData); + + buffering_ratio = ((double)pAppData->nBufferingPosition / (double)100); + + //VideoLogInfo("%d:%lf", pAppData->nBufferingPosition, buffering_ratio); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.buffering", + buffering_ratio, 0.0); +} + +/* + * Callback function. + */ +static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData) +{ + /* VideoLogInfo(""); */ + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pAppData->nDuration < 1) { + VideoLogInfo("Try to update duration time."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData); + return EINA_TRUE; + } + + if (bIsEventSkip || bIsDrag) + return EINA_TRUE; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration); + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoProgressbarUpdateBufferingValue(pUserData); + } + + return EINA_TRUE; +} + +static Eina_Bool MpVideoProgressbarAdjustmentTimerCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR] No exist userdata."); + return EINA_FALSE; + } + VideoAppData *pAppData = (VideoAppData *)pUserData; + + bIsAdjustmentMode = TRUE; + + VideoLogInfo("%d, %d",pAppData->nCurPosition , nDragPosition); + + pAppData->nSetPosition = nDragPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode); + MpVideoProgressbarUpdateValue(pUserData); + return EINA_FALSE; +} + +static Eina_Bool MpVideoProgressbarAdjustmentRunTimerCb(void *pUserData) +{ +// VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + + if(bPrevAdjustment) { + pAppData->nSetPosition = nDragPosition - 1000; + } + else { + pAppData->nSetPosition = nDragPosition + 1000; + } + + if (pAppData->nSetPosition < 0) { + pAppData->nSetPosition = 0; + } + + if (pAppData->nSetPosition > pAppData->nDuration) { + pAppData->nSetPosition = pAppData->nDuration; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + nDragPosition = pAppData->nSetPosition; + + MpVideoProgressbarUpdateValue((void *)pAppData); + + + + return EINA_TRUE; +} + + + +static void MpVideoProgressbarDownCb(void *pUserData, Evas * e, + Evas_Object *obj, void *event_info) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip) + return; + + MpVideoProgressbarDeleteTimer(); + MpVideoProgressbarSetPointerVisible(TRUE); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + pProgressAdjustCheckTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_TIME_INTERVAL, + MpVideoProgressbarAdjustmentTimerCb, (void *)pUserData); + + } + bIsDrag = TRUE; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + nDownPosX = ev->canvas.x; + nOldPosX = ev->canvas.x;; + current = ev->canvas.x - term; + w = w - w_term; + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + + nDragPosition = ratio * pAppData->nDuration; + pAppData->nSetPosition = nDragPosition; + + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE; + } + pAppData->bSeekComplete = FALSE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + else { + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME; + } + } + + MpVideoProgressbarUpdateValue(pUserData); + +} + +static void MpVideoProgressbarUpCb(void *pUserData, Evas * e, Evas_Object *obj, + void *event_info) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip) + return; + + bIsDrag = FALSE; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + MpVideoProgressbarSetPointerVisible(FALSE); + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(bIsAdjustmentMode) { + bIsAdjustmentMode = FALSE; + MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + } + nOldPosX = 0; + return; + } + } + + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + current = ev->canvas.x - term; + w = w - w_term; + + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + + pAppData->nSetPosition = (int)pAppData->nDuration * ratio; + + if (pAppData->nSetPosition > pAppData->nDuration) + pAppData->nSetPosition = pAppData->nDuration; + + if (pAppData->nSetPosition < 0) + pAppData->nSetPosition = 0; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + MpVideoProgressbarCreateTimer((void *)pAppData); + + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + } + + if(!pAppData->bSeekComplete) + { + pAppData->nSeekPosition = pAppData->nSetPosition; + if((pAppData->nCurPosition < pAppData->nSeekPosition + 5000) && + (pAppData->nCurPosition > pAppData->nSeekPosition - 5000)) + { + VideoLogError("Skip for same position"); + pAppData->nSeekPosition = 0; + } + } + else + { + if((pAppData->nCurPosition < pAppData->nSetPosition + 5000) && + (pAppData->nCurPosition > pAppData->nSetPosition - 5000)) + { + VideoLogError("Skip for same position"); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + } + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + MpVideoProgressbarCreateTimer((void *)pAppData); + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + } + + } +} +static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e, + Evas_Object *obj, void *event_info) +{ +// VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip || bIsDrag == FALSE) + return; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + if(bIsAdjustmentMode) { + if((nOldPosX + PROGRESS_ADJUSTMENT_MODE_LIMIT) < ev->canvas.x) { + if(bPrevAdjustment == TRUE) { + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + bPrevAdjustment = FALSE; + nOldPosX = ev->canvas.x; + } + else if((nOldPosX - PROGRESS_ADJUSTMENT_MODE_LIMIT) > ev->canvas.x) { + if(bPrevAdjustment == FALSE) { + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + bPrevAdjustment = TRUE; + nOldPosX = ev->canvas.x; + } + + if(pProgressAdjustRunTimer == NULL) { + pProgressAdjustRunTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_RUN_INTERVAL, + MpVideoProgressbarAdjustmentRunTimerCb, (void *)pAppData); + + } + + } + else { + if(((nDownPosX + PROGRESS_ADJUSTMENT_MOVE_LIMIT) < ev->canvas.x ) || + ((nDownPosX - PROGRESS_ADJUSTMENT_MOVE_LIMIT) > ev->canvas.x)) { + VideoLogInfo("Adjustment Off"); + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + current = ev->canvas.x - term; + w = w - w_term; + + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + nDragPosition = ratio * pAppData->nDuration; + pAppData->nSetPosition = nDragPosition; + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(pAppData->bSeekComplete) { + pAppData->bSeekComplete = FALSE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + } + MpVideoProgressbarUpdateValue(pUserData); + } +} + +/* + * External function + */ +void MpVideoProgressbarSetSkipEvent(bool bSkip) +{ +// VideoLogInfo(""); + + bIsEventSkip = bSkip; +} + +void *MpVideoProgressbarGetEdjHandle(void) +{ + VideoLogInfo(""); + + if (pProgressbarEdj) { + return (void *)pProgressbarEdj; + } else { + VideoLogInfo("Progressbar edj handle is null."); + return NULL; + } +} + +void *MpVideoProgressbarInit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow); + + pProgressbarEdj = (Evas_Object *)MpUtilLoadEdjFile(pMainWindowEvas, + VIDEO_PLAYER_PROGRESS_EDJ, + PROGRESS_EDJ_GROUP); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_DOWN, + MpVideoProgressbarDownCb, pAppData); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_UP, + MpVideoProgressbarUpCb, pAppData); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_MOVE, + MpVideoProgressbarMoveCb, pAppData); + + MpVideoProgressbarUpdateDurationTime("--:--:--"); + + return (void *)pProgressbarEdj; +} + +void MpVideoProgressbarDestroy(void) +{ + VideoLogInfo(""); + + if (pProgressbarEdj) { + evas_object_del(pProgressbarEdj); + pProgressbarEdj = NULL; + } + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + bIsEventSkip = FALSE; + nDragPosition = 0; +} + +void MpVideoProgressbarCreateTimer(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if (bIsEventSkip) + return; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration); + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime); + + pProgressbarTimer = ecore_timer_add(0.3, MpVideoProgressbarTimerCb, (void *)pAppData); +} + +void MpVideoProgressbarDeleteTimer(void) +{ + VideoLogInfo(""); + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } +} + +void MpVideoProgressbarUpdateDurationTime(char *szDurationTime) +{ + VideoLogInfo(""); + + if (!szDurationTime) { + VideoLogInfo("Fail to ser duration time"); + return; + } + + edje_object_part_text_set(pProgressbarEdj, "progress.txt.total", + szDurationTime); +} + +void MpVideoProgressbarBeginOfStream(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoProgressbarDeleteTimer(); + + pAppData->nCurPosition = 0; + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00"); + + MpVideoProgressbarCreateTimer(pUserData); +} + +void MpVideoProgressbarReset(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + MpVideoProgressbarDeleteTimer(); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00"); +} + diff --git a/src/mp-video-service-ctrl.c b/src/mp-video-service-ctrl.c new file mode 100755 index 0000000..ec2a320 --- /dev/null +++ b/src/mp-video-service-ctrl.c @@ -0,0 +1,629 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-video-service-ctrl.h" + + +#define MP_VIDEO_LAUNCHED_BY_APP_KEY "launching_application" +#define MP_VIDEO_SORT_TYPE_KEY "order_type" +#define MP_VIDEO_LIST_TYPE_KEY "video_list_type" +#define MP_VIDEO_TAG_NAME_KEY "tag_name" +#define MP_VIDEO_EDIT_MODE_KEY "edit_mode" +#define MP_VIDEO_START_POS_TIME_KEY "start_pos_time" +#define MP_VIDEO_URI_PATH "path" +#define MP_VIDEO_COOKIE "cookie" +#define MP_VIDEO_MULTI_WIN_TYPE_KEY "is_multi_win_type" +#define MP_VIDEO_LAUNCH_TYPE "launch-type" +#define MP_VIDEO_SHORTCUT_VIDEO "shortcut-videoplayer" + +static service_h pAppSvcHandle = NULL; +static int nPlayerType = MP_NONE_VIEW_TYPE; +static int nPrevPlayerType = MP_NONE_VIEW_TYPE; +static int nGalleryLatestTime = 0; +static char *g_szStreamingCookie = NULL; +static bool bIsShortcutType = FALSE; + + +///////////////////////////////////////////////////////////////////////////// +// Internal Function + +bool MpVideoServiceCtrlCheckMime(service_h pVideoServiceHandle, char **szMediaUri) +{ + VideoLogInfo(""); + + if(!pVideoServiceHandle) + { + VideoLogInfo("[ERR] No Exist Service handle."); + return FALSE; + } + + bool bRet = TRUE; + char *szMimeContent = NULL; + + if(service_get_extra_data(pVideoServiceHandle, AUL_K_MIME_CONTENT, &szMimeContent) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist mime type."); + bRet = FALSE; + } + + if(szMimeContent) + { + *szMediaUri = (char*)malloc(strlen(szMimeContent) + 1); + memset(*szMediaUri, 0, strlen(szMimeContent) + 1); + strncpy(*szMediaUri, szMimeContent, strlen(szMimeContent)); + VideoLogInfo("Mime content : %s", *szMediaUri); + free(szMimeContent); + bRet = TRUE; + } + else + { + VideoLogInfo("No exist MIME type."); + bRet = FALSE; + } + + return bRet; +} + +bool MpVideoServiceCtrlCheckBundle(service_h pVideoServiceHandle, char **szMediaUri) +{ + if(!pVideoServiceHandle) + { + VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value."); + return FALSE; + } + + bool bRet = TRUE; + char *szStrVideoURI = NULL; + + if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_URI_PATH, &szStrVideoURI) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist KEY of video/streaming URI."); + bRet = FALSE; + return bRet; + } + + if(szStrVideoURI) + { + *szMediaUri = (char*)malloc(strlen(szStrVideoURI) + 1); + memset(*szMediaUri, 0, strlen(szStrVideoURI) + 1); + strncpy(*szMediaUri, szStrVideoURI, strlen(szStrVideoURI)); + VideoLogInfo("Video/Streaming URI path : %s", *szMediaUri); + free(szStrVideoURI); + szStrVideoURI = NULL; + bRet = TRUE; + } + else + { + VideoLogInfo("No exist video/streaming URI."); + bRet = FALSE; + } + + return bRet; +} + +bool MpVideoServiceCtrlCheckAUL(service_h pVideoServiceHandle, char **szMediaUri) +{ + if(!pVideoServiceHandle) + { + VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value."); + return FALSE; + } + + + char *pGetOperation = NULL; + + service_get_operation(pVideoServiceHandle, &pGetOperation); + + if(pGetOperation == NULL) + { + return FALSE; + } + + if(!strcmp(SERVICE_OPERATION_VIEW , pGetOperation)) + { + char *szStrVideoURI = NULL; + + service_get_uri(pVideoServiceHandle, &szStrVideoURI); + + if(szStrVideoURI) + { + *szMediaUri = (char*)malloc(strlen(szStrVideoURI) + 1); + memset(*szMediaUri, 0, strlen(szStrVideoURI) + 1); + strncpy(*szMediaUri, szStrVideoURI, strlen(szStrVideoURI)); + VideoLogInfo("Video/Streaming URI path : %s", *szMediaUri); + free(szStrVideoURI); + szStrVideoURI = NULL; + } + else + { + VideoLogInfo("[ERR] No exist video/streaming URI."); + + if(pGetOperation) + { + free(pGetOperation); + pGetOperation = NULL; + } + + return FALSE; + } + } + else + { + VideoLogInfo("No exist Operation."); + + if(pGetOperation) + { + free(pGetOperation); + pGetOperation = NULL; + } + + return FALSE; + } + + VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s", *szMediaUri); + + if(pGetOperation) + { + free(pGetOperation); + pGetOperation = NULL; + } + + return TRUE; +} + + +bool MpVideoServiceCtrlParseUri(service_h pVideoServiceHandle, char** szMediaUri) +{ + VideoLogInfo(""); + + if(!MpVideoServiceCtrlCheckMime(pVideoServiceHandle, szMediaUri)) + { + if(!MpVideoServiceCtrlCheckBundle(pVideoServiceHandle, szMediaUri)) + { + if(!MpVideoServiceCtrlCheckAUL(pVideoServiceHandle, szMediaUri)) + { + VideoLogInfo("No exist URI path."); + return FALSE; + } + } + } + + VideoLogInfo("szMediaUri : %s", *szMediaUri); + + return TRUE; +} + +int MpVideoServiceCtrlCheckUriType(char* szMediaUri) +{ + if(!szMediaUri) + { + VideoLogInfo("[ERR] No exist media uri."); + return MP_ERROR_PLAYER_TYPE; + } + + VideoLogInfo(""); + + int nRet = 0; + + if(MpUtilCheckUriType(szMediaUri)) + { + VideoLogInfo("MP_STREAMING_PLAYER"); + nRet = MP_STREAMING_PLAYER; + } + else + { + VideoLogInfo("MP_VIDEO_PLAYER"); + nRet = MP_VIDEO_PLAYER; + } + + return nRet; +} + +bool MpVideoServiceCtrlCheckCookieForStreaming(service_h pVideoServiceHandle) +{ + if(!pVideoServiceHandle) + { + VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value."); + return FALSE; + } + + bool bRet = TRUE; + char *pStrVideoCookie = NULL; + + if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_COOKIE, &pStrVideoCookie) != SERVICE_ERROR_NONE) + { + VideoLogInfo("[ERR] No exist KEY of streaming COOKIE."); + bRet = FALSE; + } + + if(pStrVideoCookie) + { + g_szStreamingCookie = (char*)malloc(strlen(pStrVideoCookie) + 1); + memset(g_szStreamingCookie, 0, strlen(pStrVideoCookie) + 1); + strncpy(g_szStreamingCookie, pStrVideoCookie, strlen(pStrVideoCookie)); + VideoLogInfo("Video/Streaming URI path Cookie : %s", g_szStreamingCookie); + free(pStrVideoCookie); + } + else + { + VideoLogInfo("[ERR] No exist video/streaming URI."); + bRet = FALSE; + } + + return TRUE; +} + +int MpVideoServiceCtrlCheckStartPositionTime(service_h pVideoServiceHandle, char *szBundleKey) +{ + VideoLogInfo(""); + + if(!pVideoServiceHandle) + { + VideoLogInfo("No exist Service handle data."); + return 0; + } + + int nStartPositionTime = 0; + char *szStartPosTime = NULL; + + if(service_get_extra_data(pVideoServiceHandle, szBundleKey, &szStartPosTime) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist mime type."); + return 0; + } + + if(!szStartPosTime) + { + VideoLogInfo("No exist pointer of position time."); + return 0; + } + + nStartPositionTime = atoi(szStartPosTime); + + VideoLogInfo("Start position time : %d", nStartPositionTime); + + free(szStartPosTime); + + if(nStartPositionTime < 0) + { + nStartPositionTime = 0; + } + + return nStartPositionTime; +} + +bool MpVideoServiceCtrlGetTagNameOfGallery(service_h pVideoServiceHandle, char *szBundleKey, char *szTagName) +{ + VideoLogInfo(""); + + if(!pVideoServiceHandle) + { + VideoLogInfo("No exist Service handle."); + return FALSE; + } + + if(!szBundleKey) + { + VideoLogInfo("No exist Service handle kay."); + return FALSE; + } + + if(!szTagName) + { + VideoLogInfo("No exist pAppData."); + return FALSE; + } + + bool nRet = TRUE; + char *szVideoTagName = NULL; + + if(service_get_extra_data(pVideoServiceHandle, szBundleKey, &szVideoTagName) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist mime type."); + nRet = FALSE; + } + + if(szVideoTagName) + { + strncpy(szTagName, szVideoTagName, STR_LEN_MAX - 1); + VideoLogInfo("szTagName : %s", szTagName); + free(szVideoTagName); + nRet = TRUE; + } + else + { + VideoLogInfo("No exist pointer of szVideoTagName."); + nRet = FALSE; + } + + return nRet; +} + +int MpVideoServiceCtrlCheckLauncher(service_h pVideoServiceHandle) +{ + VideoLogInfo(""); + + if(!pVideoServiceHandle) + { + VideoLogInfo("No exist Service handle data."); + return MP_VIDEO_PLAYER_SIMPLE; + } + + char *szLaunchingByOtherApp = NULL; + + if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_LAUNCHED_BY_APP_KEY, &szLaunchingByOtherApp) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY"); + return MP_VIDEO_PLAYER_SIMPLE; + } + + if(!szLaunchingByOtherApp) + { + VideoLogInfo("No exist pointer of szLaunchingByOtherApp"); + return MP_VIDEO_PLAYER_SIMPLE; + } + + MpPlayerViewType nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE; + + if(!strcmp(szLaunchingByOtherApp, "gallery")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_GALLERY; + + nGalleryLatestTime = MpVideoServiceCtrlCheckStartPositionTime(pVideoServiceHandle, MP_VIDEO_START_POS_TIME_KEY); + } + else if(!strcmp(szLaunchingByOtherApp, "image_viewer")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_GALLERY; + } + else if(!strcmp(szLaunchingByOtherApp, "email")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_EMAIL; + } + else if(!strcmp(szLaunchingByOtherApp, "message")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_MMS; + } + else if(!strcmp(szLaunchingByOtherApp, "light_play_view")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE; + } + else + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE; + } + + VideoLogInfo("Start position time : %d", nTmpLaunchingAppType); + + free(szLaunchingByOtherApp); + + return (int)nTmpLaunchingAppType; +} + +bool MpVideoServiceCtrlCheckShortcut(service_h pVideoServiceHandle) +{ + if(!pVideoServiceHandle) + { + VideoLogInfo("No exist Service handle."); + return FALSE; + } + + VideoLogInfo(""); + + char *pGetOperation = NULL; + + service_get_operation(pVideoServiceHandle, &pGetOperation); + + if(pGetOperation == NULL) + { + bIsShortcutType = FALSE; + return bIsShortcutType; + } + + if(!strcmp(pGetOperation, SERVICE_OPERATION_DEFAULT)) + { + char *szOperationType = NULL; + + if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_LAUNCH_TYPE, &szOperationType) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY"); + bIsShortcutType = FALSE; + } + + if(!szOperationType) + { + VideoLogInfo("No exist pointer of szOperationType"); + bIsShortcutType = FALSE; + } + else + { + if(!strcmp(szOperationType, MP_VIDEO_SHORTCUT_VIDEO)) + { + bIsShortcutType = TRUE; + } + else + { + bIsShortcutType = FALSE; + } + + if(szOperationType) + { + free(szOperationType); + szOperationType = NULL; + } + } + } + + return bIsShortcutType; +} + + + +///////////////////////////////////////////////////////////////////////////// +// External Function + +void MpVideoServiceCtrlReset(void) +{ + VideoLogInfo(""); + + pAppSvcHandle = NULL; + + nGalleryLatestTime = 0; + + if(g_szStreamingCookie) + { + free(g_szStreamingCookie); + g_szStreamingCookie = NULL; + } +} + +int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char** szMediaUri) +{ + if(!pAppServiceHandle) + { + VideoLogInfo(""); + return MP_ERROR_PLAYER_TYPE; + } + + VideoLogInfo(""); + + MpVideoServiceCtrlReset(); + + pAppSvcHandle = (service_h)pAppServiceHandle; + nPlayerType = MP_NONE_VIEW_TYPE; + + if(!MpVideoServiceCtrlParseUri(pAppSvcHandle, szMediaUri)) + { + VideoLogInfo("MP_VIDEO_PLAYER_LIST"); + nPlayerType = MP_VIDEO_PLAYER; + } + + if(!*szMediaUri) + { + return nPlayerType; + } + else + { + VideoLogInfo("szMediaUri : %s", *szMediaUri); + } + + int nUriType = 0; + + nUriType = MpVideoServiceCtrlCheckUriType(*szMediaUri); + + if(nUriType == MP_VIDEO_PLAYER) + { + nPlayerType = MpVideoServiceCtrlCheckLauncher(pAppSvcHandle); + } + + if(nUriType == MP_STREAMING_PLAYER) + { + nPlayerType = MP_STREAMING_PLAYER; + MpVideoServiceCtrlCheckCookieForStreaming(pAppSvcHandle); + } + + return nPlayerType; + } + +int MpVideoServiceCtrlGetLatestTime(void) +{ + VideoLogInfo(""); + + if(nGalleryLatestTime < 0) + { + nGalleryLatestTime = 0; + } + + return nGalleryLatestTime; +} + +int MpVideoServiceCtrlGetPlayerTypeWithoutLog(void) +{ + if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType) + { + nPlayerType = MP_ERROR_PLAYER_TYPE; + } + + return nPlayerType; +} + +int MpVideoServiceCtrlGetPlayerType(void) +{ + VideoLogInfo(""); + + if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType) + { + nPlayerType = MP_ERROR_PLAYER_TYPE; + } + + VideoLogInfo("nPlayerType : %d", nPlayerType); + + return nPlayerType; +} + +void MpVideoServiceCtrlSetPlayerType(int nSetPlayerType) +{ + VideoLogInfo("nSetPlayerType : %d", nSetPlayerType); + + if(MP_ERROR_PLAYER_TYPE < nSetPlayerType || MP_MAX_PLAYER_TYPE > nSetPlayerType) + { + MpVideoServiceCtrlSetPrevPlayerType(nPlayerType); + nPlayerType = nSetPlayerType; + } +} + +int MpVideoServiceCtrlGetPrevPlayerType(void) +{ + VideoLogInfo(""); + + if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType) + { + nPrevPlayerType = MP_ERROR_PLAYER_TYPE; + } + + VideoLogInfo("nPrevPlayerType : %d", nPrevPlayerType); + + return nPrevPlayerType; +} + +void MpVideoServiceCtrlSetPrevPlayerType(int nSetPlayerType) +{ + VideoLogInfo("nSetPlayerType : %d", nSetPlayerType); + + if(MP_ERROR_PLAYER_TYPE < nSetPlayerType || MP_MAX_PLAYER_TYPE > nSetPlayerType) + { + nPrevPlayerType = nSetPlayerType; + } +} + +char* MpVideoServiceCtrlGetCookieForStreaming(void) +{ + VideoLogInfo(""); + + if(!g_szStreamingCookie) + { + VideoLogInfo("No exist streaming cookie."); + return NULL; + } + + return g_szStreamingCookie; +} \ No newline at end of file diff --git a/src/mp-video-sound-path-ctrl.c b/src/mp-video-sound-path-ctrl.c new file mode 100755 index 0000000..72666e8 --- /dev/null +++ b/src/mp-video-sound-path-ctrl.c @@ -0,0 +1,605 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-sound-path-ctrl.h" + +#define MP_VIDEO_SOUND_PATH_NUM 10 +#define MP_VIDEO_SOUND_PATH_SPEAKER "Speaker" +#define MP_VIDEO_SOUND_PATH_EARJACK "Headphones" + +static Evas_Object *pVideoSoundPathPopUpHandle = NULL; +//static Evas_Object *pVideoSoundPathpPopupWindow = NULL; +static Evas_Object *pGroupRadio = NULL; +static Evas_Object *pGenList = NULL; + +static char **szSoundPathItems = NULL; +static bool bIsConnectBluetooth = FALSE; +static bool bIsConnectEarjack = FALSE; + +void MpVideoSoundpathDeleteRadioButton(void) +{ + VideoLogInfo(""); + + if (pGroupRadio) { + evas_object_del(pGroupRadio); + pGroupRadio = NULL; + } +} + +void MpVideoSoundpathDeletePopupHandle(void) +{ + VideoLogInfo(""); + + int nCount = 0; + + if(szSoundPathItems) + { + for(nCount = 0; nCount < MP_VIDEO_SOUND_PATH_NUM; nCount++) + { + if(szSoundPathItems[nCount]) + { + free(szSoundPathItems[nCount]); + szSoundPathItems[nCount] = NULL; + } + } + free(szSoundPathItems); + szSoundPathItems = NULL; + } + + MpVideoSoundpathDeleteRadioButton(); + + if (pGenList) { + evas_object_del(pGenList); + pGenList = NULL; + } + + if (pVideoSoundPathPopUpHandle) { + evas_object_del(pVideoSoundPathPopUpHandle); + pVideoSoundPathPopUpHandle = NULL; + } + + MpUtilSetAlphaOfMainWindow(TRUE); + + /* + if (pVideoSoundPathpPopupWindow) { + evas_object_del(pVideoSoundPathpPopupWindow); + pVideoSoundPathpPopupWindow = NULL; + } + */ +} + +static char *MpVideoSoundpathGetLabelOfGenlistItemCb(const void *pUserData, + Evas_Object *pObject, + const char *pPart) +{ + VideoLogInfo(""); + + int nIndex = (int)pUserData; + + if (!strcmp(pPart, "elm.text")) { + VideoLogInfo("Index : %d", nIndex); + return strdup(szSoundPathItems[nIndex]); + } + + return NULL; +} + +static Evas_Object *MpVideoSoundpathGetIconOfGenlistItemCb(const void + *pUserData, + Evas_Object *pObject, + const char *pPart) +{ + VideoLogInfo(""); + + int nIndex = (int)pUserData; + Evas_Object *pTmpRadio = NULL; + + if (!strcmp(pPart, "elm.icon")) { + VideoLogInfo("Index : %d", nIndex); + pTmpRadio = elm_radio_add(pObject); + elm_radio_state_value_set(pTmpRadio, nIndex); + evas_object_show(pTmpRadio); + elm_radio_group_add(pTmpRadio, pGroupRadio); + } + + return pTmpRadio; +} + +static void MpVideoSoundpathSelectSoundPathItemCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if(pUserData == NULL) + { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nIndex = 0; + Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo; + + if(pItem) + { + nIndex = (int)elm_object_item_data_get(pItem); + VideoLogInfo("Select sound path : %s", szSoundPathItems[nIndex]); + + if(!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_SPEAKER)) + { + int nRet = 0; + nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_SPEAKER); + + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + } + else if (!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_EARJACK)) + { + int nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_WIRED_ACCESSORY); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogInfo("[ERR] set_system_policy(0x%x)", nRet); + } + else + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK); + } + } + else + { + //int nRet = sound_manager_set_route_policy(SOUND_ROUTE_DEFAULT); + int nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_BLUETOOTH); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogInfo("[ERR] set_system_policy(0x%x)", nRet); + } + else + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH); + } + } + } + + MpVideoSoundpathDeletePopupHandle(); +} + +static void MpVideoSoundpathPopupCb(void *pUserData, Evas_Object *pObject, + void *pEventInfo) +{ + VideoLogInfo(""); + + if (pUserData == NULL) { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + MpVideoSoundpathDeletePopupHandle(); +} + +static void MpVideoSoundpathCurrentState() +{ + VideoLogInfo(""); + + bool bBluetoothConnect = 0; + char *szBluetoothName = NULL; + bIsConnectEarjack = FALSE; + bIsConnectBluetooth = FALSE; + + /* Speaker */ + strncpy(szSoundPathItems[MP_SOUND_PATH_SPEAKER], MP_VIDEO_SOUND_PATH_SPEAKER, STR_LEN_MAX - 1); + + /* Check and Add earjack sound path. */ + if(MpUtilIsConnectEarjack()) + { + VideoLogInfo("Connect earjack."); + bIsConnectEarjack = TRUE; + strncpy(szSoundPathItems[MP_SOUND_PATH_EARJACK], MP_VIDEO_SOUND_PATH_EARJACK, STR_LEN_MAX - 1); + } + else + { + VideoLogInfo("No connect earjack."); + } + + /* Add bluetooth stereo sound path. */ + if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName)) + { + VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path."); + } + else + { + if(bBluetoothConnect) + { + if(szBluetoothName) + { + VideoLogInfo("Connect szBluetoothName : %s", szBluetoothName); + bIsConnectBluetooth = TRUE; + strncpy(szSoundPathItems[MP_SOUND_PATH_BLUETOOTH], szBluetoothName, STR_LEN_MAX - 1); + free(szBluetoothName); + szBluetoothName = NULL; + } + } + else + { + if(szBluetoothName) + { + free(szBluetoothName); + szBluetoothName = NULL; + } + VideoLogInfo("Unactivate Bluetooth stereo A2DP."); + } + } + +} + +void MpVideoSoundpathSetRadioButton(void) +{ + VideoLogInfo(""); + + sound_device_in_e in; + sound_device_out_e out; + + sound_manager_get_active_device(&in, &out); + + switch(out) + { + case SOUND_DEVICE_OUT_SPEAKER: + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + break; + + case SOUND_DEVICE_OUT_WIRED_ACCESSORY: + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK); + break; + + case SOUND_DEVICE_OUT_BT_A2DP: + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH); + break; + + default: + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + break; + } + +/* + bool bBluetoothConnect = 0; + char *szBluetoothName = NULL; + sound_route_policy_e nPolicy = 0; + + if(sound_manager_get_route_policy(&nPolicy) != SOUND_MANAGER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to get sound path route policy."); + return; + } + + if(nPolicy == SOUND_ROUTE_DEFAULT) + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT"); + + if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName)) + { + VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path."); + } + + if(bBluetoothConnect) + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH); + } + else if(MpUtilIsConnectEarjack()) + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK); + } + else + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + } + } + else if(nPolicy == SOUND_ROUTE_IGNORE_A2DP) + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP"); + + if(MpUtilIsConnectEarjack()) + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK); + } + else + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + } + } + else + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY"); + + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + } +*/ +} + +/* + * External function + */ +bool MpVideoSoundpathShow(void *pUserData) +{ + if (pUserData == NULL) { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + VideoLogInfo(""); + + MpVideoSoundpathIsConnectOtherSoundpath(); + + if (!bIsConnectBluetooth && !bIsConnectEarjack) { + VideoLogInfo("Soundpath is only speaker."); + return FALSE; + } + + Evas_Object *pBox = NULL; + Evas_Object *pButton = NULL; + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoSoundpathDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + /* Popup handle */ + //pVideoSoundPathpPopupWindow = (Evas_Object *)MpUtilCreateWindow("soundpath_popup_window"); + //pVideoSoundPathPopUpHandle = elm_popup_add(pVideoSoundPathpPopupWindow); + pVideoSoundPathPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + + szSoundPathItems = (char **)calloc(1, sizeof(char *) * MP_VIDEO_SOUND_PATH_NUM); + int idx = 0; + for(idx = 0; idx < MP_VIDEO_SOUND_PATH_NUM; idx++) + { + szSoundPathItems[idx] = (char *)calloc(1, STR_LEN_MAX * sizeof(char)); + } + + MpVideoSoundpathCurrentState(); + + elm_object_style_set(pVideoSoundPathPopUpHandle, "menustyle"); + elm_object_part_text_set(pVideoSoundPathPopUpHandle, "title,text", MP_VIDEO_SOUND_PATH); + evas_object_size_hint_weight_set(pVideoSoundPathPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + pButton = elm_button_add(pVideoSoundPathPopUpHandle); + elm_object_style_set (pButton, "popup_button/default"); + elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_BUTTON_CANCEL)); + elm_object_part_content_set(pVideoSoundPathPopUpHandle, "button1", pButton); + evas_object_smart_callback_add(pButton, "clicked", MpVideoSoundpathPopupCb, (void*)pAppData); + + /* Set item of Genlist. */ + Elm_Genlist_Item_Class *st_Itc = NULL; + st_Itc = elm_genlist_item_class_new(); + st_Itc->item_style = "1text.1icon.3"; + st_Itc->func.text_get = (void *)MpVideoSoundpathGetLabelOfGenlistItemCb; + st_Itc->func.content_get = (void *)MpVideoSoundpathGetIconOfGenlistItemCb; + st_Itc->func.state_get = NULL; + st_Itc->func.del = NULL; + + /* Create genlist handle */ + pGenList = elm_genlist_add(pVideoSoundPathPopUpHandle); + evas_object_size_hint_weight_set(pGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(pGenList, EVAS_HINT_FILL, EVAS_HINT_FILL); + + //MpUtilRotateWindow(MpUtilGetRotationState(), pVideoSoundPathpPopupWindow); + + pGroupRadio = elm_radio_add(pGenList); + + if (bIsConnectBluetooth) { + elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_BLUETOOTH, NULL, + ELM_GENLIST_ITEM_NONE, + MpVideoSoundpathSelectSoundPathItemCb, + pAppData); + } + + if (bIsConnectEarjack) { + elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_EARJACK, NULL, + ELM_GENLIST_ITEM_NONE, + MpVideoSoundpathSelectSoundPathItemCb, + pAppData); + } + + elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_SPEAKER, NULL, + ELM_GENLIST_ITEM_NONE, + MpVideoSoundpathSelectSoundPathItemCb, + pAppData); + + elm_genlist_item_class_free(st_Itc); + + MpVideoSoundpathSetRadioButton(); + + pBox = elm_box_add(pVideoSoundPathPopUpHandle); + if(bIsConnectBluetooth && bIsConnectEarjack) + { + evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get()); + } + else if(bIsConnectBluetooth || bIsConnectEarjack) + { + evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 225 * elm_config_scale_get()); + } + else + { + evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 451 * elm_config_scale_get()); + } + + elm_box_pack_end(pBox, pGenList); + elm_object_content_set(pVideoSoundPathPopUpHandle, pBox); + + evas_object_show(pGenList); + evas_object_show(pVideoSoundPathPopUpHandle); + + return TRUE; +} + +void MpVideoSoundpathHide(void) +{ + VideoLogInfo(""); + + MpVideoSoundpathDeletePopupHandle(); +} + +void MpVideoSoundpathRotatePopupWindow(int nRotateMode) +{ + /* + if (!pVideoSoundPathpPopupWindow) { + VideoLogInfo("No exist genlist popup window handle."); + return; + } + + VideoLogInfo(""); + + MpUtilRotateWindow(nRotateMode, pVideoSoundPathpPopupWindow); + */ + + return; +} + +bool MpVideoSoundpathIsConnectOtherSoundpath(void) +{ + VideoLogInfo(""); + + bool bBluetoothConnect = 0; + char *szBluetoothName = NULL; + + bIsConnectEarjack = FALSE; + bIsConnectBluetooth = FALSE; + + if(MpUtilIsConnectEarjack()) + { + VideoLogInfo("Connect earjack."); + bIsConnectEarjack= TRUE; + return TRUE; + } + sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName); + + if(bBluetoothConnect) + { + if(szBluetoothName) { + free(szBluetoothName); + szBluetoothName = NULL; + } + + VideoLogInfo("Connect bluetooth."); + bIsConnectBluetooth = TRUE; + return TRUE; + } + + if(szBluetoothName) { + free(szBluetoothName); + szBluetoothName = NULL; + } + + VideoLogInfo("Only spaker."); + return FALSE; +} + +int MpVideoSoundpathGetCurrConnectedSoundpath(void) +{ + VideoLogInfo(""); + + sound_device_in_e in; + sound_device_out_e out; + MpSoundPathType nType = MP_SOUND_PATH_SPEAKER; + + sound_manager_get_active_device(&in, &out); + + switch(out) + { + case SOUND_DEVICE_OUT_SPEAKER: + nType = MP_SOUND_PATH_SPEAKER; + break; + + case SOUND_DEVICE_OUT_WIRED_ACCESSORY: + nType = MP_SOUND_PATH_EARJACK; + break; + + case SOUND_DEVICE_OUT_BT_A2DP: + nType = MP_SOUND_PATH_BLUETOOTH; + break; + + default: + nType = MP_SOUND_PATH_SPEAKER; + break; + } + + return nType; + +/* + bool bBluetoothConnect = 0; + char *szBluetoothName = NULL; + sound_route_policy_e nPolicy = 0; + + if(sound_manager_get_route_policy(&nPolicy) != SOUND_MANAGER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to get sound path route policy."); + return MP_SOUND_PATH_SPEAKER; + } + + if(nPolicy == SOUND_ROUTE_DEFAULT) + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT"); + + if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName)) + { + VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path."); + } + + if(bBluetoothConnect) + { + return MP_SOUND_PATH_BLUETOOTH; + } + else if(MpUtilIsConnectEarjack()) + { + return MP_SOUND_PATH_EARJACK; + } + else + { + return MP_SOUND_PATH_SPEAKER; + } + } + else if(nPolicy == SOUND_ROUTE_IGNORE_A2DP) + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP"); + + if(MpUtilIsConnectEarjack()) + { + return MP_SOUND_PATH_EARJACK; + } + else + { + return MP_SOUND_PATH_SPEAKER; + } + } + else + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY"); + + return MP_SOUND_PATH_SPEAKER; + } + + return MP_SOUND_PATH_SPEAKER; +*/ +} diff --git a/src/mp-video-streaming-ctrl.c b/src/mp-video-streaming-ctrl.c new file mode 100644 index 0000000..dbb2a36 --- /dev/null +++ b/src/mp-video-streaming-ctrl.c @@ -0,0 +1,818 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-type-define.h" +#include "mp-video-string-define.h" +#include "mp-video-streaming-ctrl.h" + + +#define NETWORK_TIMEOUT 30.0 + +static MpNetworkType nNetworkStatus = MP_NETWORK_TYPE_OFF; +static MpNetworkWifiState nWifiState = MP_NETWORK_WIFI_OFF; +static MpNetworkCellularState nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + +static Ecore_Pipe *pEcorePipeHandleForPause = NULL; +static Ecore_Pipe *pEcorePipeHandleForResume = NULL; + +static Eina_Bool bIsInitCallbackFunc = FALSE; + +static Ecore_Timer *pNetworkTimeoutTimer = NULL; + + + +/* + * Callback function. + */ + +static void MpVideoStreamingCtrlExitCb(void *pUserData, Evas_Object *pObject, + void *pEventInfo) +{ + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); +} + +static int MpVideoStreamingCtrlResumeCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return 0; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData); + + return 0; +} + +static Eina_Bool MpVideoStreamingCtrlPopupCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return EINA_FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoStreamingCtrlExitCb); + + return EINA_FALSE; +} + +static int MpVideoStreamingCtrlPauseCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return 0; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData); + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT, + MpVideoStreamingCtrlPopupCb, + pAppData); + + return 0; +} + + +static void MpVideoStreamingCtrlNetworkOnOffCb(keynode_t *pKeyNode,void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + char *szkeyname = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if (!strcmp(szkeyname, VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND)) { + switch(vconf_keynode_get_int(pKeyNode)) + { + case MP_NETWORK_CLOSE: + VideoLogInfo("MP_NETWORK_CLOSE"); + if(pEcorePipeHandleForPause) { + if(!ecore_pipe_write(pEcorePipeHandleForPause, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + break; + + case MP_NETWORK_ON: + VideoLogInfo("MP_NETWORK_ON"); + if(pEcorePipeHandleForResume) { + if(!ecore_pipe_write(pEcorePipeHandleForResume, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + break; + + default: + VideoLogInfo("UNKNOWN NETWORK CONFIG"); + break; + } + } else { + } +} + +static void MpVideoStreamingCtrlNetworkStatusCb(keynode_t *pKeyNode,void *pUserData) +{ + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + VideoLogInfo(""); + char *szkeyname = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if (!strcmp(szkeyname, VCONFKEY_NETWORK_STATUS)) { + switch(vconf_keynode_get_int(pKeyNode)) + { + case VCONFKEY_NETWORK_OFF: + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("MP_NETWORK_TYPE_OFF"); + /* + if(pEcorePipeHandleForPause) { + if(!ecore_pipe_write(pEcorePipeHandleForPause, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + */ + break; + + case VCONFKEY_NETWORK_CELLULAR: + VideoLogInfo("MP_NETWORK_TYPE_CELLULAR"); + /* + if(pEcorePipeHandleForResume) { + if(!ecore_pipe_write(pEcorePipeHandleForResume, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + nNetworkStatus = MP_NETWORK_TYPE_CELLULAR; + */ + break; + + case VCONFKEY_NETWORK_WIFI: + VideoLogInfo("MP_NETWORK_TYPE_WIFI"); + /* + if(pEcorePipeHandleForResume) { + if(!ecore_pipe_write(pEcorePipeHandleForResume, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + nNetworkStatus = MP_NETWORK_TYPE_WIFI; + */ + break; + + default: + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("UNKNOWN NETWORK STATE"); + if(pEcorePipeHandleForPause) { + if(!ecore_pipe_write(pEcorePipeHandleForPause, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + break; + } + } + else { + if(pEcorePipeHandleForPause) { + if(!ecore_pipe_write(pEcorePipeHandleForPause, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + } +} + +static void MpVideoStreamingCtrlChangeIpCb(keynode_t *pKeyNode, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + char *szkeyname = NULL; + char *szTmp = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if(szkeyname == NULL) { + VideoLogInfo("key name value is NULL"); + return; + } + + if (!strcmp(szkeyname, VCONFKEY_NETWORK_IP)) { + szTmp = vconf_keynode_get_str(pKeyNode); + + if(szTmp == NULL) { + VideoLogInfo("node string value is NULL"); + return; + } + + VideoLogInfo("Network ip address : %s", szTmp); + } + else { + VideoLogInfo("Invalid ip address."); + } +} + +static void MpVideoStreamingCtrlWiFiStateCb(keynode_t *pKeyNode, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + char *szkeyname = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if (!strcmp(szkeyname, VCONFKEY_NETWORK_WIFI_STATE)) { + switch(vconf_keynode_get_int(pKeyNode)) + { + case VCONFKEY_NETWORK_WIFI_OFF: + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF"); + break; + + case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED: + nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED; + VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED"); + break; + + case VCONFKEY_NETWORK_WIFI_CONNECTED: + nWifiState = MP_NETWORK_WIFI_CONNECTED; + VideoLogInfo("MP_NETWORK_WIFI_CONNECTED"); + break; + + default: + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF - default"); + break; + } + } else { + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value"); + } +} + +static void MpVideoStreamingCtrlCellularStateCb(keynode_t *pKeyNode,void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + char *szkeyname = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if (!strcmp(szkeyname, VCONFKEY_NETWORK_CELLULAR_STATE)) { + switch(vconf_keynode_get_int(pKeyNode)) + { + case VCONFKEY_NETWORK_CELLULAR_ON: + nCellularState = MP_NETWORK_CELLULAR_ON; + VideoLogInfo("MP_NETWORK_CELLULAR_ON"); + break; + + case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF: + nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF; + VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF: + nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF; + VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE: + nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE; + VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE"); + break; + + case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE : + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE"); + break; + + default: + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default"); + break; + } + } else { + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value"); + } +} + +static void MpVideoStreamingCtrlPipeInit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pEcorePipeHandleForPause) { + ecore_pipe_del(pEcorePipeHandleForPause); + pEcorePipeHandleForPause = NULL; + } + + pEcorePipeHandleForPause = ecore_pipe_add( + (Ecore_Pipe_Cb)MpVideoStreamingCtrlPauseCb, + (void *)pAppData); + + if(pEcorePipeHandleForResume) { + ecore_pipe_del(pEcorePipeHandleForResume); + pEcorePipeHandleForResume = NULL; + } + + pEcorePipeHandleForResume = ecore_pipe_add( + (Ecore_Pipe_Cb)MpVideoStreamingCtrlResumeCb, + (void *)pAppData); + +} + +/* + * Internal function. + */ + +bool MpVideoStreamingCtrlSetNotifyNetworkOnOff(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, + MpVideoStreamingCtrlNetworkOnOffCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set network on/off notification."); + return FALSE; + } + + return TRUE; +} + +bool MpVideoStreamingCtrlSetNotifyNetworkStatus(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS, + MpVideoStreamingCtrlNetworkStatusCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set network status notification."); + return FALSE; + } + + return TRUE; +} + +bool MpVideoStreamingCtrlSetNotifyChangingIp(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_IP, + MpVideoStreamingCtrlChangeIpCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set ip address changing notification."); + return FALSE; + } + + return TRUE; +} + +bool MpVideoStreamingCtrlSetNotifyWiFiState(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_WIFI_STATE, + MpVideoStreamingCtrlWiFiStateCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set wifi state notification."); + return FALSE; + } + + return TRUE; +} + +bool MpVideoStreamingCtrlSetNotifyCellularState(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CELLULAR_STATE, + MpVideoStreamingCtrlCellularStateCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set cellular notification."); + return FALSE; + } + + return TRUE; +} + + +/* + * External function. + */ +bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress) +{ + VideoLogInfo(""); + + char *szTmp = NULL; + + szTmp = vconf_get_str(VCONFKEY_NETWORK_IP); + if (szTmp) { + memset(szRetIpAddress, 0, sizeof(char) * STR_LEN_MAX); + strncpy(szRetIpAddress, szTmp, STR_LEN_MAX - 1); + + VideoLogInfo("Current network ip address : %s", szRetIpAddress); + + if(szTmp) + free(szTmp); + + return TRUE; + } + + return FALSE; +} + +bool MpVideoStreamingCtrlGetProxy(char* szRetProxy) +{ + VideoLogInfo(""); + + char *szTmp = NULL; + + szTmp = vconf_get_str(VCONFKEY_NETWORK_PROXY); + if (szTmp) { + memset(szRetProxy, 0, sizeof(char) * STR_LEN_MAX); + strncpy(szRetProxy, szTmp, STR_LEN_MAX - 1); + + VideoLogInfo("Current network ip address : %s", szRetProxy); + + if(szTmp) + free(szTmp); + + return TRUE; + } + + return FALSE; +} + +bool MpVideoStreamingCtrlIsNetworkOn(void) +{ + VideoLogInfo(""); + + int ntmpCheckNetworkON = 0; + + if (!vconf_get_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, &ntmpCheckNetworkON)) { + switch(ntmpCheckNetworkON) + { + case MP_NETWORK_CLOSE: + VideoLogInfo("Network close."); + return FALSE; + + case MP_NETWORK_ON: + VideoLogInfo("Network on."); + return TRUE; + } + } else { + VideoLogInfo("Network close."); + } + + return FALSE; +} + +int MpVideoStreamingCtrlGetNetworkStatus(void) +{ + VideoLogInfo(""); + + int ntmpGetNetworkStatus = 0; + + if (!vconf_get_int(VCONFKEY_NETWORK_STATUS, &ntmpGetNetworkStatus)) { + switch(ntmpGetNetworkStatus) + { + case VCONFKEY_NETWORK_OFF: + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("MP_NETWORK_TYPE_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR: + nNetworkStatus = MP_NETWORK_TYPE_CELLULAR; + VideoLogInfo("MP_NETWORK_TYPE_CELLULAR"); + break; + + case VCONFKEY_NETWORK_WIFI: + nNetworkStatus = MP_NETWORK_TYPE_WIFI; + VideoLogInfo("MP_NETWORK_TYPE_WIFI"); + break; + + default: + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("MP_NETWORK_TYPE_OFF - default"); + break; + } + } else { + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("MP_NETWORK_TYPE_OFF - invalid value"); + } + + return nNetworkStatus; +} + +int MpVideoStreamingCtrlGetWifiState() +{ + VideoLogInfo(""); + + int ntmpGetWifiState = 0; + + if (!vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &ntmpGetWifiState)) { + switch(ntmpGetWifiState) + { + case VCONFKEY_NETWORK_WIFI_OFF: + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF"); + break; + + case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED: + nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED; + VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED"); + break; + + case VCONFKEY_NETWORK_WIFI_CONNECTED: + nWifiState = MP_NETWORK_WIFI_CONNECTED; + VideoLogInfo("MP_NETWORK_WIFI_CONNECTED"); + break; + + default: + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF - default"); + break; + } + } else { + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value"); + } + + return nWifiState; + +} + +int MpVideoStreamingCtrlGetCellularState() +{ + VideoLogInfo(""); + + int ntmpGetCellularState = 0; + + if (!vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &ntmpGetCellularState)) { + switch(ntmpGetCellularState) + { + case VCONFKEY_NETWORK_CELLULAR_ON: + nCellularState = MP_NETWORK_CELLULAR_ON; + VideoLogInfo("MP_NETWORK_CELLULAR_ON"); + break; + + case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF: + nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF; + VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF: + nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF; + VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE: + nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE; + VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE"); + break; + + case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE : + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE"); + break; + + default: + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default"); + break; + } + } else { + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value"); + } + + return nCellularState; +} + +void MpVideoStreamingCtrlDestroy(void *pUserData) +{ + VideoLogInfo(""); + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + if(pEcorePipeHandleForPause) { + ecore_pipe_del(pEcorePipeHandleForPause); + pEcorePipeHandleForPause = NULL; + } + + if(pEcorePipeHandleForResume) { + ecore_pipe_del(pEcorePipeHandleForResume); + pEcorePipeHandleForResume = NULL; + } +} + + + +bool MpVideoStreamingCtrlInit(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + char szTmp[STR_LEN_MAX] = {0}; + bool bNetworkState = FALSE; + + if(bIsInitCallbackFunc == EINA_FALSE) { + MpVideoStreamingCtrlPipeInit(pUserData); + + MpVideoStreamingCtrlSetNotifyNetworkStatus(pUserData); + MpVideoStreamingCtrlSetNotifyChangingIp(pUserData); + MpVideoStreamingCtrlSetNotifyWiFiState(pUserData); + MpVideoStreamingCtrlSetNotifyCellularState(pUserData); + + bIsInitCallbackFunc = EINA_TRUE; + } + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + switch(MpVideoStreamingCtrlGetNetworkStatus()) + { + case MP_NETWORK_TYPE_OFF: + VideoLogInfo("MP_NETWORK_TYPE_OFF"); + pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT, + MpVideoStreamingCtrlPopupCb, + pAppData); + bNetworkState = FALSE; + break; + + case MP_NETWORK_TYPE_CELLULAR: + VideoLogInfo("MP_NETWORK_TYPE_CELLULAR"); + if(MpVideoStreamingCtrlGetCellularState() == MP_NETWORK_CELLULAR_ON) + bNetworkState = TRUE; + break; + + case MP_NETWORK_TYPE_WIFI: + VideoLogInfo("MP_NETWORK_TYPE_WIFI"); + if(MpVideoStreamingCtrlGetWifiState() == MP_NETWORK_WIFI_CONNECTED) + bNetworkState = TRUE; + break; + } + + if(bNetworkState) { + MpVideoStreamingCtrlGetIpAddress(szTmp); + VideoLogInfo("Current IP Address : %s", szTmp); + + memset(szTmp, 0, STR_LEN_MAX); + MpVideoStreamingCtrlGetProxy(szTmp); + VideoLogInfo("Current Proxy Address : %s", szTmp); + + memset(pAppData->szProxyAddress, 0, STR_LEN_MAX); + strncpy(pAppData->szProxyAddress, szTmp, STR_LEN_MAX - 1); + } + + return bNetworkState; +} diff --git a/src/mp-video-streaming-view.c b/src/mp-video-streaming-view.c new file mode 100644 index 0000000..b084677 --- /dev/null +++ b/src/mp-video-streaming-view.c @@ -0,0 +1,718 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-progressbar.h" +#include "mp-video-animation-ctrl.h" +#include "mp-video-streaming-view.h" +#include "mp-video-service-ctrl.h" + +#define CTRL_PANEL_SHOW_TIME 5.0 + +static Evas_Object *pNaviFrameHandle = NULL; +static Evas_Object *pStreamingViewNaviControlBar = NULL; +static Evas_Object *pBufferingAnimationHandle = NULL; + +static Evas_Object *pStreamingViewLayout = NULL; +static Evas_Object *pStreamingViewPanelEdj = NULL; +static Evas_Object *pStreamingViewCtrlEdj = NULL; +static Evas_Object *pStreamingViewOptionEdj = NULL; +static Evas_Object *pStreamingViewProgressbarEdj = NULL; + +static Ecore_Timer *pStreamingViewCtrlPanelHideTimer = NULL; +static Elm_Object_Item *pNaviFrameItemStreamingView = NULL; + +static ChangeStreamingViewCbFunc pChangeViewUserCbFunc = NULL; + +static bool bIsStreamingViewScreenLock = FALSE; +static bool bSwitchStreamingViewUI = TRUE; +static bool bIsStreamingHightQuality = TRUE; +static bool bIsChangeResolution = FALSE; +static bool bIsStreamingViewOnlyAudio = FALSE; +static VideoStreamingViewState nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE; + +/* + * Callback function. + */ + +static void MpVideoStreamingViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) { + VideoLogInfo("Press Pause button."); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + } +} + +static void MpVideoStreamingViewPressResumeButtonCb(void *pUserData, + Evas_Object *pObject, + const char *szEmission, + const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) { + VideoLogInfo("Press Resume/Play button."); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } +} + +static void MpVideoStreamingViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + edje_object_signal_callback_del(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb); + + MpVideoStreamingViewPop(pNaviFrameHandle, pUserData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb, pUserData); +} + +static void MpVideoStreamingViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR] No Exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData); +} + +static void MpVideoStreamingViewVolumeButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + //syspopup_launch("volume", NULL); +} + +static Eina_Bool MpVideoStreamingViewCtrlPanelHideCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No Exist pUserData."); + return EINA_FALSE; + } + + if(bIsStreamingViewOnlyAudio) + { + VideoLogInfo("Not hide control panel and UI because of audio only."); + return EINA_FALSE; + } + + if (MpVideoStreamingViewGetBufferingState()) { + VideoLogInfo("skip for Buffering"); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pStreamingViewCtrlPanelHideTimer) { + ecore_timer_del(pStreamingViewCtrlPanelHideTimer); + pStreamingViewCtrlPanelHideTimer = NULL; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + + return EINA_FALSE; + +} + +static void MpVideoStreamingViewChangedCameraStatusCb(void *pNode, void *pUserData) +{ + if(!pUserData) +{ + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!MpUtilIsCameraOff()) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + } + +static void MpVideoStreamingViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + + evas_object_hide(pStreamingViewLayout); + } + +static void MpVideoStreamingViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData); +} + + +/* + * Internal function + */ + +void MpVideoStreamingViewInitLayout(void *pParent, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pStreamingViewLayout = elm_layout_add(pParent); + if (pStreamingViewLayout) { + Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow); + + elm_layout_file_set(pStreamingViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP); + + // Option Button (Screen size, Share, Info, 5.1 Surround) + pStreamingViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP); + elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pStreamingViewOptionEdj); + edje_object_signal_emit(pStreamingViewOptionEdj, SIGNAL_OPTION_MODE_WEB, "*"); + + pStreamingViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP); + pStreamingViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP); + pBufferingAnimationHandle = MpVideoAnimationCtrlInit(pMainWindowEvas); + + edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_CONTROL, pStreamingViewCtrlEdj); + elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_ANIMATION, pBufferingAnimationHandle); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*"); + + MpVideoAnimationCtrlShow(); + + pStreamingViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData); + MpVideoProgressbarSetSkipEvent(TRUE); + if (pStreamingViewProgressbarEdj) { + edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pStreamingViewProgressbarEdj); + } else { + VideoLogInfo("Progressbar edj handle is null."); + } + + elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_CONTROL, pStreamingViewPanelEdj); + + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_MODE_STREAMING, "*"); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_PLAY_PAUSE_PRESS, + SIGNAL_CONTROL_PART_PLAY_BUTTON, + (void *)MpVideoStreamingViewPressPauseButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_PLAY_RESUME_PRESS, + SIGNAL_CONTROL_PART_PLAY_BUTTON, + (void *)MpVideoStreamingViewPressResumeButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_BACK_BUTTON_DOWN, + SIGNAL_CONTROL_PART_BACK_BUTTON, + (void *)MpVideoStreamingViewBackButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_VOL_BUTTON_DOWN, + SIGNAL_CONTROL_PART_VOL_BUTTON, + (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_VOL_BUTTON_UP, + SIGNAL_CONTROL_PART_VOL_BUTTON, + (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_MUTE_BUTTON_DOWN, + SIGNAL_CONTROL_PART_MUTE_BUTTON, + (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_MUTE_BUTTON_UP, + SIGNAL_CONTROL_PART_MUTE_BUTTON, + (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData); + + MpUtilRegisteCameraStatusCbFunc((void *)MpVideoStreamingViewChangedCameraStatusCb, pUserData); + } +} + +void MpVideoStreamingViewInit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pNaviFrameHandle|| !pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + MpVideoStreamingViewInitLayout(pNaviFrameHandle, pUserData); +} + + + +/* + * External function + */ +void MpVideoStreamingViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeStreamingViewCbFunc pChangeViewCb) +{ + VideoLogInfo(""); + + pNaviFrameHandle = pNaviFrame; + pChangeViewUserCbFunc = pChangeViewCb; + + MpVideoStreamingViewInit(pUserData); + + pNaviFrameItemStreamingView = elm_naviframe_item_push(pNaviFrameHandle,MP_STREAMING_PLAYER_STR, NULL, NULL, pStreamingViewLayout, "video/1line"); + + elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoStreamingViewShowLayoutFinish, pUserData); + elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoStreamingViewHideLayoutFinish, pUserData); + + int nRotate = MpUtilGetRotationState(); + if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL) + { + MpVideoStreamingViewPortrate(); + } + else + { + MpVideoStreamingViewLandscape(); + } + + +} + +void MpVideoStreamingViewPop(void *pNaviFrame, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } +} + +void MpVideoStreamingViewDestroy(void *pUserData) +{ + VideoLogInfo(""); + + MpVideoStreamingViewHideControlPanel(pUserData); + MpVideoProgressbarDestroy(); + MpVideoAnimationCtrlDestroy(); + + pNaviFrameHandle = NULL; + pBufferingAnimationHandle = NULL; + pNaviFrameItemStreamingView = NULL; + pStreamingViewProgressbarEdj = NULL; + + if (pStreamingViewNaviControlBar) { + evas_object_del(pStreamingViewNaviControlBar); + pStreamingViewNaviControlBar = NULL; + } + + if (pStreamingViewLayout) { + evas_object_del(pStreamingViewLayout); + pStreamingViewLayout = NULL; + } + + if (pStreamingViewPanelEdj) { + evas_object_del(pStreamingViewPanelEdj); + pStreamingViewPanelEdj = NULL; + } + + if (pStreamingViewCtrlEdj) { + evas_object_del(pStreamingViewCtrlEdj); + pStreamingViewCtrlEdj = NULL; + } + + if (pStreamingViewCtrlPanelHideTimer) { + ecore_timer_del(pStreamingViewCtrlPanelHideTimer); + pStreamingViewCtrlPanelHideTimer = NULL; + } + + if (pStreamingViewOptionEdj) { + evas_object_del(pStreamingViewOptionEdj); + pStreamingViewOptionEdj = NULL; + } + + bIsStreamingViewScreenLock = FALSE; + bIsStreamingViewOnlyAudio = FALSE; + + bSwitchStreamingViewUI = TRUE; + nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE; + + bIsStreamingHightQuality = TRUE; + bIsChangeResolution = FALSE; +} + +void MpVideoStreamingViewInitAfterBeginOfStream(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + MpVideoProgressbarSetSkipEvent(FALSE); + MpVideoProgressbarBeginOfStream((void *)pAppData); + + if (pAppData->nDuration > 1) { + char szDurationTime[PLAY_TIME_LENGTH] = { 0 }; + snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, + PLAY_TIME_ARGS(pAppData->nDuration / 1000)); + MpVideoProgressbarUpdateDurationTime(szDurationTime); + } + + MpVideoAnimationCtrlHide(); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), + SIGNAL_MAIN_ANIMATION_HIDE, "*"); + + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*"); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData); + + if(pAppData->nDuration < 1) + pAppData->nDuration = 1; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); +} + +void MpVideoStreamingViewUpdatePauseKey(void) +{ + VideoLogInfo(""); + + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*"); +} + +void MpVideoStreamingViewUpdateResumeKey(void) +{ + VideoLogInfo(""); + + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*"); +} + +void MpVideoStreamingViewShowControlPanel(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!pStreamingViewPanelEdj) { + VideoLogInfo("No exist play control panel edc."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) { + VideoLogInfo(""); + return; + } + + bSwitchStreamingViewUI = TRUE; + MpVideoProgressbarCreateTimer((void *)pAppData); + + evas_object_show(pStreamingViewLayout); + + elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm"); + + int nRotate = MpUtilGetRotationState(); + if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL) + { + elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*"); + } + else + { + elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*"); + } + + if (pStreamingViewCtrlPanelHideTimer) { + ecore_timer_del(pStreamingViewCtrlPanelHideTimer); + pStreamingViewCtrlPanelHideTimer = NULL; + } + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsStreamingViewOnlyAudio == TRUE) { + } else { + pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData); + } + + MpVideoStreamingViewActivate(); +} + +void MpVideoStreamingViewHideControlPanel(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) { + VideoLogInfo(""); + return; + } + + if (!pStreamingViewPanelEdj) { + VideoLogInfo("No exist play control panel edc."); + return; + } + + if(bIsStreamingViewOnlyAudio) + { + VideoLogInfo("Not hide control panel and UI because of audio only."); + return; + } + + bSwitchStreamingViewUI = FALSE; + MpVideoProgressbarDeleteTimer(); + + elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm"); + elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*"); + + if (pStreamingViewCtrlPanelHideTimer) { + ecore_timer_del(pStreamingViewCtrlPanelHideTimer); + pStreamingViewCtrlPanelHideTimer = NULL; + } +} + +void MpVideoStreamingViewActivate(void) +{ + VideoLogInfo(""); + + nStreamingViewState = MP_STREAMING_VIEW_STATE_ACTIVATE; +} + +void MpVideoStreamingViewUnactivate(void) +{ + VideoLogInfo(""); + + nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE; +} + +void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide) +{ + VideoLogInfo(""); + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (MpVideoStreamingViewGetBufferingState()) + { + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*"); + } + else + { + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*"); + if(bLayoutHide) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + } + } +} + +void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate) +{ + if (nSetBufferingRate > 95) { + MpVideoAnimationCtrlHide(); + MpVideoProgressbarSetSkipEvent(FALSE); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*"); + } else { + MpVideoProgressbarSetSkipEvent(TRUE); + MpVideoAnimationCtrlShow(); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*"); + + if(nSetBufferingRate >= 0) + MpVideoAnimationCtrlSetPercent(nSetBufferingRate); + } +} + +bool MpVideoStreamingViewGetBufferingState(void) +{ + VideoLogInfo(""); + + return MpVideoAnimationCtrlGetActiveState(); +} + +bool MpVideoStreamingViewIsTopView(void) +{ + VideoLogInfo(""); + + Evas_Object *pTmpContents = NULL; + Elm_Object_Item *pTmpItem = NULL; + + if (!pNaviFrameHandle) { + VideoLogInfo("[ERR] No exist navigationbar handle."); + return FALSE; + } + + pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle); + pTmpContents = elm_object_item_content_get(pTmpItem); + if (pTmpContents) { + if (pTmpContents == pStreamingViewLayout) { + VideoLogInfo("Streaming display view is staing in top view."); + return TRUE; + } else { + VideoLogInfo("Streaming display view is not staied in top view."); + return FALSE; + } + } else { + VideoLogInfo("[ERR] No exist naviFrame top item."); + return FALSE; + } + + return FALSE; +} + +void MpVideoStreamingViewShowNocontentImage(void *pUserData) +{ + VideoLogInfo(""); + + if (pStreamingViewLayout) { + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*"); + } + + bIsStreamingViewOnlyAudio = TRUE; + + MpVideoStreamingViewShowControlPanel(pUserData); +} + +void MpVideoStreamingViewHideNocontentImage(void) +{ + VideoLogInfo(""); + + if (pStreamingViewLayout) { + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*"); + } + + bIsStreamingViewOnlyAudio = FALSE; +} + +void MpVideoStreamingViewPortrate(void) +{ + VideoLogInfo(""); + + elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*"); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*"); + edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*"); + edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*"); + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_PORTRATE_MODE, "*"); +} + +void MpVideoStreamingViewLandscape(void) +{ + VideoLogInfo(""); + + elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE, "*"); +} + +void MpVideoStreamingViewUpdateProgressBar(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + MpVideoProgressbarCreateTimer(pUserData); + +} diff --git a/src/mp-video-subtitle-ctrl.c b/src/mp-video-subtitle-ctrl.c new file mode 100755 index 0000000..b497c4f --- /dev/null +++ b/src/mp-video-subtitle-ctrl.c @@ -0,0 +1,352 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-service-ctrl.h" +#include "mp-video-subtitle-ctrl.h" + +#define MP_VIDEO_SUBTITLE_MENU_NUM 2 + +#define MP_SUBTITLE_FONT_SMALL 22 +#define MP_SUBTITLE_FONT_MEDIUM 35 +#define MP_SUBTITLE_FONT_LARGE 48 +#define MP_SUBTITLE_MIN_VALUE 3 + + +/* subtitle edc layout */ +static Evas_Object *pSubTitleEdj = NULL; + +static bool bExistSubtitleFile = FALSE; +static char *szSubtitleFileUri = NULL; +static char szSubTitleExtWildkey[MP_SUBTITLE_TYPE_MAX][5] = { ".srt", ".sub", ".smi" }; + +static MpSubTitleSizeType nSubtitleSize = MP_SUBTITLE_SIZE_SMALL; + +static bool bShowStatus = TRUE; + + +/* + * Internal function + */ + +static void MpVideoSubtitleCtrlClear(void) +{ + VideoLogInfo(""); + + bExistSubtitleFile = FALSE; + + if(szSubtitleFileUri) + { + free(szSubtitleFileUri); + szSubtitleFileUri = NULL; + } + + if(pSubTitleEdj) { + evas_object_del(pSubTitleEdj); + pSubTitleEdj = NULL; + } + +} + +/* + * External function + */ + +bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath) +{ + if (!szMediaUriPath) { + VideoLogInfo("No Exist szMediaUri."); + return FALSE; + } + + if (strlen(szMediaUriPath) < 1) { + VideoLogInfo("No Exist szMediaUri."); + return FALSE; + } + + VideoLogInfo(""); + + struct stat buf; + int nCount = 0; + int nStrLength = 0; + + bExistSubtitleFile = FALSE; + + if(szSubtitleFileUri == NULL) + { + szSubtitleFileUri = calloc(1, sizeof(char) * STR_LEN_MAX); + } + + char *szExt; + + szExt = strrchr(szMediaUriPath, '.'); + + if (szExt) { + nStrLength = strlen(szMediaUriPath) - strlen(szExt); + } + else { + nStrLength = strlen(szMediaUriPath); + } + + for (nCount = 0; nCount < MP_SUBTITLE_TYPE_MAX; nCount++) + { + memset(szSubtitleFileUri, 0, STR_LEN_MAX); + strncpy(szSubtitleFileUri, szMediaUriPath, nStrLength); + strcat(szSubtitleFileUri, szSubTitleExtWildkey[nCount]); + VideoLogInfo("%s",szSubtitleFileUri); + + if (!stat(szSubtitleFileUri, &buf)) { + VideoLogInfo("Success finding subtitle file. - %d", nCount); + bExistSubtitleFile = TRUE; + break; + } else { + memset(szSubtitleFileUri, 0, STR_LEN_MAX); + } + } + + if (!bExistSubtitleFile) { + VideoLogInfo("Fail finding subtitle file."); + } + + return bExistSubtitleFile; +} + +void *MpVideoSubtitleCtrlInit(void *pUserData, void *pParent) +{ + if (pUserData == NULL) { + VideoLogInfo("[ERR]No have pUserData"); + return NULL; + } + + if (pParent == NULL) { + VideoLogInfo("[ERR]No have pParent"); + return NULL; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoSubtitleCtrlClear(); + + if(!MpVideoSubtitleCtrlCheckSubtitleFile(pAppData->szMediaUri)) { + VideoLogInfo("Sub tiltle file is not exist."); + } + + pSubTitleEdj = elm_layout_add(pParent); + elm_layout_file_set(pSubTitleEdj, VIDEO_PLAYER_SUBTITLE_EDJ, SUBTITLE_EDJ_GROUP); + + return (void *)pSubTitleEdj; +} + +void MpVideoSubtitleCtrlDestroy(void) +{ + VideoLogInfo(""); + + MpVideoSubtitleCtrlClear(); +} + +void MpVideoSubtitleCtrlUpdate(char *szTxt) +{ + VideoLogInfo("%d",strlen(szTxt)); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + + edje_object_part_text_set(_EDJ(pSubTitleEdj), "subtitle.label.txt",szTxt); +} + + +bool MpVideoSubtitleCtrlIsExistSubtitle(void) +{ + VideoLogInfo(""); + + return bExistSubtitleFile; +} + +bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUri) +{ + VideoLogInfo(""); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return FALSE; + } + + if (strlen(szSubtitleFileUri) < 1) { + VideoLogInfo("[ERR]No have szSubtitleFileUri"); + return FALSE; + } + + strncpy(szSubtitleUri, szSubtitleFileUri, STR_LEN_MAX -1); + + return TRUE; +} + +void MpVideoSubtitleCtrlSetLayoutShow(bool bShow) +{ + VideoLogInfo(""); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + if(bShow) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LAYOUT_SHOW, "*"); + } + else { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LAYOUT_HIDE, "*"); + } + +} + +void MpVideoSubtitleCtrlSetSizeMode(int nSizeMode) +{ + VideoLogInfo(""); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + + MpSubTitleSizeType type = nSizeMode; + + if(type == MP_SUBTITLE_SIZE_LARGE) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_LARGE, "*"); + } + else if(type == MP_SUBTITLE_SIZE_MEDIUM) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_MEDIUM, "*"); + } + else if(type == MP_SUBTITLE_SIZE_SMALL) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_SMALL, "*"); + } + + nSubtitleSize = type; + +} + +int MpVideoSubtitleCtrlGetSizeMode() +{ + VideoLogInfo(""); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return -1; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return -1; + } + + return nSubtitleSize; +} + + + +void MpVideoSubtitleCtrlSetRotate(int nRotateStatus) +{ + VideoLogInfo(""); + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + + if(nRotateStatus == VIDEO_ROTATE_PORTRAIT_NORMAL || + nRotateStatus == VIDEO_ROTATE_PORTRAIT_REVERSE) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_PORTRATE_MODE, "*"); + + } + else if(nRotateStatus == VIDEO_ROTATE_LANDSCAPE_NORMAL || + nRotateStatus == VIDEO_ROTATE_LANDSCAPE_REVERSE) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LANDSCAPE_MODE, "*"); + } +} + +void MpVideoSubtitleCtrlSetShowStatus(bool bShow) +{ + VideoLogInfo(""); + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + if(bShowStatus != bShow) { + bShowStatus = bShow; + if(bShow) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_TXT_SHOW, "*"); + + } + else { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_TXT_HIDE, "*"); + } + } +} + +bool MpVideoSubtitleCtrlGetShowStatus() +{ + VideoLogInfo(""); + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return FALSE; + } + + return bShowStatus; +} + +void MpVideoSubtitleCtrlSetLockScreen(bool bShow) +{ + VideoLogInfo(""); + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + + if(bShow) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_LOCKSCREEN_SHOW, "*"); + } + else { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_LOCKSCREEN_HIDE, "*"); + } + +} + diff --git a/src/mp-video-view-mgr.c b/src/mp-video-view-mgr.c new file mode 100644 index 0000000..f06ce87 --- /dev/null +++ b/src/mp-video-view-mgr.c @@ -0,0 +1,1370 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +#include +#include +#include + +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-external-ug.h" +#include "mp-video-view-mgr.h" +#include "mp-video-type-define.h" +#include "mp-util-media-service.h" +#include "mp-video-display-view.h" +#include "mp-video-string-define.h" +#include "mp-video-streaming-view.h" +#include "mp-video-service-ctrl.h" +#include "mp-video-volume-ctrl.h" + +#define MULTIMEDIA_KEY_LONG_PRESS_INTERVAL 4.0 +#define DETAIL_POPUP_STR_LEN_MAX 20 +#define LAYOUT_VISIBLE_OFF_TIMER_INTERVAL 1.0 + + +static Evas_Object *pMainLayout = NULL; +static Evas_Object *pBackGround = NULL; +static Evas_Object *pNaviFrame = NULL; +static Evas_Object *pConformant = NULL; +static Evas_Object *pGesture = NULL; +static Evas_Object *pEventRect = NULL; +static Evas_Object *pDisplayViewVolume = NULL; + +static MpVideoRotateType nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL; + +static Ecore_Event_Handler *pHWKeyEventDownHandler = NULL; +static Ecore_Event_Handler *pHWKeyEventUpHandler = NULL; + +static bool bIsLongPressForward = FALSE; +static bool bIsKeyCancle = FALSE; +static bool bShowLayout = FALSE; + +static Ecore_Timer *pLongPressSpeedPlayingTimer = NULL; +static Ecore_Timer *pLongPressVolumeKeyTimer = NULL; +static Ecore_Timer *pLayoutVisibleOffTimer = NULL; + +static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData); +static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData); +static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData); + +/* + * Callback function. + */ +static Eina_Bool MpVideoViewCtrlLayoutVisibleOffTimerCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + if(pLayoutVisibleOffTimer) + { + ecore_timer_del(pLayoutVisibleOffTimer); + pLayoutVisibleOffTimer = NULL; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpUtilLayoutVisibleOff(pAppData->pMainWindow); + + return EINA_FALSE; +} + +static Eina_Bool MpVideoViewCtrlVolumeKeyDownTimerCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + MpVideoViewCtrlShowVolume(); + int nVol; + nVol = MpVideoVolumeCtrlGetVolume() - 1; + MpVideoVolumeCtrlSetVolume(nVol); + + return EINA_TRUE; +} + +static Eina_Bool MpVideoViewCtrlVolumeKeyUpTimerCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + MpVideoViewCtrlShowVolume(); + int nVol; + nVol = MpVideoVolumeCtrlGetVolume() + 1; + MpVideoVolumeCtrlSetVolume(nVol); + + return EINA_TRUE; +} + + +static Eina_Bool MpVideoViewCtrlHardkeyDownCb(void *pUserData, int nType, void *pEvent) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent; + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo("Key down : %s", pKeyEvent->keyname); + + if(!strcmp(pKeyEvent->keyname, END_KEY)) + { + VideoLogInfo("Back(End) key"); + } + else if(!strcmp(pKeyEvent->keyname, HOME_KEY)) + { + VideoLogInfo("Home key"); + } + else if(!strcmp(pKeyEvent->keyname, VOLUME_DOWN_KEY)) + { + MpVideoViewCtrlShowVolume(); + int nVol; + nVol = MpVideoVolumeCtrlGetVolume() - 1; + MpVideoVolumeCtrlSetVolume(nVol); + + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + pLongPressVolumeKeyTimer = ecore_timer_add(0.3, MpVideoViewCtrlVolumeKeyDownTimerCb, (void *)pAppData); + } + else if(!strcmp(pKeyEvent->keyname, VOLUME_UP_KEY)) + { + MpVideoViewCtrlShowVolume(); + int nVol; + nVol = MpVideoVolumeCtrlGetVolume() + 1; + MpVideoVolumeCtrlSetVolume(nVol); + + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + + pLongPressVolumeKeyTimer = ecore_timer_add(0.3, MpVideoViewCtrlVolumeKeyUpTimerCb, (void *)pAppData); + } + else if(!strcmp(pKeyEvent->keyname, POWER_KEY)) + { + VideoLogInfo("Power key"); + + MpUtilLcdOffForPowerButton(); + } + else if(!strcmp(pKeyEvent->keyname, PAUSE_KEY)) + { + VideoLogInfo("Pause key down"); + } + else if(!strcmp(pKeyEvent->keyname, PLAY_KEY)) + { + VideoLogInfo("Play key down"); + } + else if(!strcmp(pKeyEvent->keyname, STOP_KEY)) + { + VideoLogInfo("Stop key down"); + } + else if(!strcmp(pKeyEvent->keyname, NEXT_KEY)) + { + VideoLogInfo("Next key down"); + } + else if(!strcmp(pKeyEvent->keyname, PREV_KEY)) + { + VideoLogInfo("Prev key down"); + } + else if(!strcmp(pKeyEvent->keyname, FORWARD_KEY)) + { + VideoLogInfo("Forward key down"); + bIsLongPressForward = TRUE; + MpVideoVideoViewCtrlLongpressSpeedKeyDown(pUserData); + } + else if(!strcmp(pKeyEvent->keyname, REWIND_KEY)) + { + VideoLogInfo("Rewind key down"); + bIsLongPressForward = FALSE; + MpVideoVideoViewCtrlLongpressSpeedKeyDown(pUserData); + } + else if(!strcmp(pKeyEvent->keyname, KEY_CANCLE)) + { + VideoLogInfo("Cancel key down"); + bIsKeyCancle = TRUE; + } + + return EINA_FALSE; +} + +static Eina_Bool MpVideoViewCtrlHardkeyUpCb(void *pUserData, int nType, void *pEvent) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo("Key Up : %s", pKeyEvent->keyname); + + if(bIsKeyCancle) + { + VideoLogInfo("KEY CANCLE."); + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + bIsKeyCancle = FALSE; + return EINA_FALSE; + } + + if(!strcmp(pKeyEvent->keyname, END_KEY)) + { + VideoLogInfo("End key up"); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + else if(!strcmp(pKeyEvent->keyname, VOLUME_DOWN_KEY)) + { + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + } + else if(!strcmp(pKeyEvent->keyname, VOLUME_UP_KEY)) + { + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + } + else if(!strcmp(pKeyEvent->keyname, HOME_KEY)) + { + VideoLogInfo("Home key up"); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + + MpVideoServiceCtrlSetPrevPlayerType(MpVideoServiceCtrlGetPlayerType()); + } + else if(!strcmp(pKeyEvent->keyname, POWER_KEY)) + { + VideoLogInfo("Power key up"); + } + else if(!strcmp(pKeyEvent->keyname, PAUSE_KEY)) + { + VideoLogInfo("Pause key up"); + if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + else if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } + else if(!strcmp(pKeyEvent->keyname, PLAY_KEY)) + { + VideoLogInfo("Play key up"); + if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + else if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } + else if(!strcmp(pKeyEvent->keyname, STOP_KEY)) + { + VideoLogInfo("Stop key up"); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + else if(!strcmp(pKeyEvent->keyname, NEXT_KEY)) + { + VideoLogInfo("Next key up"); + } + else if(!strcmp(pKeyEvent->keyname, PREV_KEY)) + { + VideoLogInfo("Prev key up"); + } + else if(!strcmp(pKeyEvent->keyname, FORWARD_KEY)) + { + VideoLogInfo("Forward key up"); + MpVideoVideoViewCtrlLongpressSpeedKeyUp(pUserData); + } + else if(!strcmp(pKeyEvent->keyname, REWIND_KEY)) + { + VideoLogInfo("Rewind key up"); + MpVideoVideoViewCtrlLongpressSpeedKeyUp(pUserData); + } + else + { + } + + return EINA_FALSE; +} + +static Evas_Event_Flags MpVideoViewCtrlGestureNTabStartCb(void *pUserData , void *pEventInfo) +{ + VideoLogInfo(""); + + return EVAS_EVENT_FLAG_NONE; +} + + +static Evas_Event_Flags MpVideoViewCtrlGestureNTabEndCb(void *pUserData , void *pEventInfo) +{ + VideoLogInfo(""); + + Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) pEventInfo; + if(p->n == 1) { + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bShowLayout) { + int nWidth = 0; + int nHeight = 0; + int nMinY = 0; + int nMaxY = 0; + + evas_object_geometry_get(pMainLayout, NULL, NULL, &nWidth, &nHeight); + + if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL || + MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE) + { + nMinY = (elm_config_scale_get() * 223); + nMaxY = nHeight - ( elm_config_scale_get() * 215); + } + else + { + nMinY = (elm_config_scale_get() * 223); + nMaxY = nHeight - ( elm_config_scale_get() * 204); + } + + if(p->y > nMinY && p->y < nMaxY) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + } + } else { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + } + } + + return EVAS_EVENT_FLAG_NONE; +} + + +static Evas_Event_Flags MpVideoViewCtrlGestureNTabAbortCb(void *pUserData , void *pEventInfo) +{ + VideoLogInfo(""); + + return EVAS_EVENT_FLAG_NONE; +} + +/* + * Internal function. + */ +static void MpVideoViewCtrlScreenRotationInit(int nRotateMode, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpUtilRotateWindow(nRotateMode, pAppData->pMainWindow); + nVideoRotateType = nRotateMode; + MpVideoViewCtrlSetRotation(nVideoRotateType, FALSE, pUserData); +} + +static Evas_Object *MpVideoViewCtrlCreateBg(Evas_Object *pWindow) +{ + if(!pWindow) + { + VideoLogError("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + return NULL; +} + +void* MpVideoViewCtrlCreateConformant(void *pParent) +{ + if(!pParent) + { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + Evas_Object *pTmpConform = NULL; + + pTmpConform = elm_conformant_add(pParent); + evas_object_size_hint_weight_set(pTmpConform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_conformant_set(pParent, EINA_TRUE); + elm_win_resize_object_add(pParent, pTmpConform); + evas_object_show(pTmpConform); + + pConformant = pTmpConform; + + return pTmpConform; +} + +static Evas_Object *MpVideoViewCtrlCreateMainLayout(Evas_Object *pParent) +{ + if(!pParent) + { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + if(pMainLayout) + { + evas_object_del(pMainLayout); + pMainLayout = NULL; + } + + pMainLayout = elm_layout_add(pParent); + + elm_layout_theme_set(pMainLayout, "layout", "application", "video_no_indicator"); + evas_object_size_hint_weight_set(pMainLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_content_set(pParent, pMainLayout); + pBackGround = MpVideoViewCtrlCreateBg(pParent); + evas_object_show(pMainLayout); + + return pMainLayout; +} + +static void MpVideoViewCtrlCreateEventRect(void *pUserData, Evas_Object *pParent) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + if(!pParent) + { + VideoLogInfo("[ERR]"); + return; +} + + VideoLogInfo(""); + + pEventRect = evas_object_rectangle_add(evas_object_evas_get(pParent)); + evas_object_color_set(pEventRect, 0, 0, 0, 0); + + elm_object_part_content_set(pParent, "elm.swallow.event", pEventRect); + + pGesture = elm_gesture_layer_add(pEventRect); + + elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_START, MpVideoViewCtrlGestureNTabStartCb, pUserData); + elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_END, MpVideoViewCtrlGestureNTabEndCb, pUserData); + elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_ABORT, MpVideoViewCtrlGestureNTabAbortCb, pUserData); + + evas_object_repeat_events_set(pEventRect, EINA_TRUE); + + elm_gesture_layer_attach(pGesture, pEventRect); + + evas_object_show(pEventRect); + + +} +static Evas_Object *MpVideoViewCtrlCreateVolume(void *pUserData, Evas_Object *pParent) +{ + if(!pParent) + { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + if(pDisplayViewVolume) + { + evas_object_del(pDisplayViewVolume); + pDisplayViewVolume = NULL; + } + + pDisplayViewVolume = MpVideoVolumeCtrlInit(pParent, pUserData); + + return pDisplayViewVolume; +} + +static void MpVideoViewCtrlShowNaviFrame(void) +{ + VideoLogInfo(""); + + if(pNaviFrame) + { + elm_object_part_content_set(pMainLayout, "elm.swallow.content", pNaviFrame); + evas_object_show(pNaviFrame); + } + } + +static Evas_Object *MpVideoViewCtrlCreateNaviFrame(Evas_Object *pParent, void* pUserData) +{ + if(!pParent) + { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + if(pNaviFrame) + { + evas_object_del(pNaviFrame); + pNaviFrame = NULL; + } + + pNaviFrame = elm_naviframe_add(pParent); + + elm_object_part_content_set(pParent, "elm.swallow.content", pNaviFrame); + + elm_naviframe_prev_btn_auto_pushed_set(pNaviFrame, EINA_FALSE); + + evas_object_show(pNaviFrame); + + return pNaviFrame; +} + +static void MpVideoViewCtrlSetVideoViews(VideoAppData *pAppData, int nPlayerType) +{ + VideoLogInfo("%p",pAppData); + + MpVideoServiceCtrlSetPlayerType(nPlayerType); + + switch(nPlayerType) + { + case MP_VIDEO_PLAYER: + VideoLogInfo("MP_VIDEO_PLAYER"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_VIDEO_PLAYER_SIMPLE: + VideoLogInfo("MP_VIDEO_PLAYER_SIMPLE"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_VIDEO_PLAYER_EMAIL: + VideoLogInfo("MP_VIDEO_PLAYER_EMAIL"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_VIDEO_PLAYER_MMS: + VideoLogInfo("MP_VIDEO_PLAYER_MMS"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_VIDEO_PLAYER_GALLERY: + VideoLogInfo("MP_VIDEO_PLAYER_GALLERY"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_STREAMING_PLAYER: + VideoLogInfo("MP_STREAMING_PLAYER"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoStreamingViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + default: + VideoLogInfo("[ERR] No exist player tpye."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } +} + +static Eina_Bool MpVideoVideoViewCtrlSpeedKeyLongPressCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) + { + if(pLongPressSpeedPlayingTimer) + { + ecore_timer_del(pLongPressSpeedPlayingTimer); + pLongPressSpeedPlayingTimer = NULL; + } + + return EINA_FALSE; + } + + ++pAppData->nPlayingSpeed; + + if(bIsLongPressForward) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData); + } + + return EINA_TRUE; +} + +static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X; + + if(bIsLongPressForward) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData); + } + + if(pLongPressSpeedPlayingTimer) + { + ecore_timer_del(pLongPressSpeedPlayingTimer); + pLongPressSpeedPlayingTimer = NULL; + } + + pLongPressSpeedPlayingTimer = ecore_timer_add(MULTIMEDIA_KEY_LONG_PRESS_INTERVAL, MpVideoVideoViewCtrlSpeedKeyLongPressCb, (void *)pAppData); +} + +static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + bIsLongPressForward = FALSE; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + + if(pLongPressSpeedPlayingTimer) + { + ecore_timer_del(pLongPressSpeedPlayingTimer); + pLongPressSpeedPlayingTimer = NULL; + } +} + +static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoViewCtrlHideVolume(); + + MpVideoViewCtrlSetVideoViews((VideoAppData*)pUserData, nChangePlayerView); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching(pAppData); + } + +/* + * External function. + */ +bool MpVideoViewCtrlInit(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoLogInfo(""); + + if(pHWKeyEventDownHandler) + { + ecore_event_handler_del(pHWKeyEventDownHandler); + pHWKeyEventDownHandler = NULL; + } + + if(pHWKeyEventUpHandler) + { + ecore_event_handler_del(pHWKeyEventUpHandler); + pHWKeyEventUpHandler = NULL; + } + + pHWKeyEventDownHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpVideoViewCtrlHardkeyDownCb, (void *)pAppData); + pHWKeyEventUpHandler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, (void *)MpVideoViewCtrlHardkeyUpCb, (void *)pAppData); + + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + + MpVideoViewCtrlCreateConformant(pAppData->pMainWindow); + MpVideoViewCtrlCreateMainLayout(pConformant); + MpVideoViewCtrlCreateEventRect((void *)pAppData, pMainLayout); + MpVideoViewCtrlCreateVolume(pAppData, pMainLayout); + MpVideoViewCtrlCreateNaviFrame(pMainLayout, (void*)pAppData); + MpVideoViewCtrlSetVideoViews(pAppData, MpVideoServiceCtrlGetPlayerType()); + MpVideoViewCtrlScreenRotationInit(MpUtilGetRotationState(), (void *)pAppData); + + return TRUE; +} + +void MpVideoViewCtrlDestroy(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + MpExternalUgUnload(); + + MpVideoVolumeCtrlDestroy(); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewDestroy(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewDestroy(pUserData); + } + + if(pGesture) + { + evas_object_del(pGesture); + pGesture = NULL; + } + + if(pEventRect) + { + evas_object_del(pEventRect); + pEventRect = NULL; + } + + if(pHWKeyEventDownHandler) + { + ecore_event_handler_del(pHWKeyEventDownHandler); + pHWKeyEventDownHandler = NULL; + } + + if(pHWKeyEventUpHandler) + { + ecore_event_handler_del(pHWKeyEventUpHandler); + pHWKeyEventUpHandler = NULL; + } + + if(pMainLayout) + { + evas_object_del(pMainLayout); + pMainLayout = NULL; + } + + if(pLongPressSpeedPlayingTimer) + { + ecore_timer_del(pLongPressSpeedPlayingTimer); + pLongPressSpeedPlayingTimer = NULL; + } + + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + + if(pLayoutVisibleOffTimer) + { + ecore_timer_del(pLayoutVisibleOffTimer); + pLayoutVisibleOffTimer = NULL; + } + + if(pDisplayViewVolume) + { + evas_object_del(pDisplayViewVolume); + pDisplayViewVolume = NULL; + } + + if(pBackGround) + { + evas_object_del(pBackGround); + pBackGround = NULL; + } + + bIsLongPressForward = FALSE; + bIsKeyCancle = FALSE; + + nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL; +} + +void MpVideoViewCtrlSetRotation(int nRotateMode, bool bLayoutHide, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(nRotateMode == VIDEO_ROTATE_UNKNOWN) + { + nRotateMode = MpUtilGetRotationState(); + } + + nVideoRotateType = nRotateMode; + + MpUtilSetRotationState(nVideoRotateType); + + if(MpVideoVolumeCtrlGetShowStatus()) + { + MpVideoViewCtrlHideVolume(); + } + + if(nVideoRotateType == VIDEO_ROTATE_PORTRAIT_NORMAL || nVideoRotateType == VIDEO_ROTATE_PORTRAIT_REVERSE) + { + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_VOLUME_PORTRAIT_MODE, "*"); + } + else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE) + { + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_VOLUME_LANDSCAPE_MODE, "*"); + } + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + if(nVideoRotateType == VIDEO_ROTATE_PORTRAIT_NORMAL || nVideoRotateType == VIDEO_ROTATE_PORTRAIT_REVERSE) + { + MpVideoDisplayViewPortrate(bLayoutHide, pUserData); + } + else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE) + { + MpVideoDisplayViewLandscape(bLayoutHide, pUserData); + } + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewRotation((void *)pAppData, nVideoRotateType, bLayoutHide); + } + + MpUtilRotateWindow(nVideoRotateType, pAppData->pMainWindow); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen(pAppData, nVideoRotateType); +} + +void MpVideoViewCtrlInitAfterBeginOfStream(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewInitAfterBeginOfStream(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewInitAfterBeginOfStream(pUserData); + } +} + +void MpVideoViewCtrlPause(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewUpdatePauseKey(); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewUpdatePauseKey(); + } +} + +void MpVideoViewCtrlResume(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewUpdateResumeKey(); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewUpdateResumeKey(); + } +} + +void MpVideoViewShowLayout(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pLayoutVisibleOffTimer) + { + ecore_timer_del(pLayoutVisibleOffTimer); + pLayoutVisibleOffTimer = NULL; + } + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_SHOW, "*"); + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + MpVideoViewCtrlShowNaviFrame(); + bShowLayout = TRUE; + + MpVideoDisplayViewActivate(); + MpVideoDisplayViewShowControlPanel(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_SHOW, "*"); + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + MpVideoViewCtrlShowNaviFrame(); + bShowLayout = TRUE; + + MpVideoStreamingViewActivate(); + MpVideoStreamingViewShowControlPanel(pUserData); + } +} + +void MpVideoViewHideLayout(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + if(MpVideoStreamingViewGetBufferingState()) + { + VideoLogInfo("skip for Buffering"); + return; + } + } + + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_HIDE, "*"); + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_HIDE); + + bShowLayout = FALSE; + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewHideControlPanel(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewHideControlPanel(pUserData); + } +} +void MpVideoViewCtrlShowFinish(void *pUserData) +{ + VideoLogInfo(""); + +} + +void MpVideoViewCtrlHideFinish(void *pUserData, bool bLayoutOff) +{ + if(!pUserData) + { + VideoLogError("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pNaviFrame) + { + elm_object_part_content_unset(pMainLayout, "elm.swallow.content"); + evas_object_hide(pNaviFrame); + } + + if(pLayoutVisibleOffTimer) + { + ecore_timer_del(pLayoutVisibleOffTimer); + pLayoutVisibleOffTimer = NULL; + } + + if(bLayoutOff) + { + pLayoutVisibleOffTimer = ecore_timer_add(LAYOUT_VISIBLE_OFF_TIMER_INTERVAL, MpVideoViewCtrlLayoutVisibleOffTimerCb, (void *)pAppData); + } + + +} + +void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + +// VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + if(MpUtilCheckRTSPType(pAppData->szMediaUri)) + { + if(nSetBufferingRate == 0) + { + MpVideoStreamingViewSetBufferingRate(-1); + } + else + { + MpVideoStreamingViewSetBufferingRate(nSetBufferingRate); + } + } + else + { + if(nSetBufferingRate >= 0) + { + MpVideoStreamingViewSetBufferingRate(nSetBufferingRate); + } + } + } +} + +void MpVideoViewCtrlChangeTitle(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoAppData *pAppData = (VideoAppData *)pUserData; + + memset(pAppData->szSubtitle, 0, sizeof(char) * STR_LEN_MAX); + + MpVideoDisplayViewChangeNaviFrameTitle(pUserData); + } +} + +bool MpVideoViewCtrlIsTopView(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoLogInfo(""); + + bool bIstopView = FALSE; + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoLogInfo("VIDEO PLAYER"); + bIstopView = MpVideoDisplayViewIsTopView(); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + VideoLogInfo("STREAMING PLAYER"); + bIstopView = MpVideoStreamingViewIsTopView(); + } + + return bIstopView; +} + +void MpVideoViewCtrlShowNocontentImage(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewShowNocontentImage(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewShowNocontentImage(pUserData); + } +} + +void MpVideoViewCtrlHideNocontentImage(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewHideNocontentImage(); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewHideNocontentImage(); + } +} + +void MpVideoViewCtrlResetProgressBar(void *pUserData) +{ + VideoLogInfo(""); + + MpVideoDisplayViewResetProgressBar(pUserData); +} + +void MpVideoViewCtrlUpdateProgressbar(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData."); + return; + } + VideoLogInfo(""); + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoLogInfo("VIDEO PLAYER"); + MpVideoDisplayViewUpdateProgressBar(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + VideoLogInfo("STREAMING PLAYER"); + MpVideoStreamingViewUpdateProgressBar(pUserData); + } +} + + +bool MpVideoViewCtrlIsPauseByUser(void *pUserData) +{ + if(!pUserData) +{ + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoLogInfo(""); + + return MpVideoDisplayViewIsPauseByUser(); +} + +void MpVideoViewCtrlShowVolume() +{ + VideoLogInfo(""); + + if(MpVideoVolumeCtrlGetShowStatus()) + { + return; + } + + elm_object_part_content_set(pMainLayout, "elm.swallow.volume", pDisplayViewVolume); + + MpVideoVolumeCtrlShow(); + +} +void MpVideoViewCtrlHideVolume() +{ + VideoLogInfo(""); + + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + + elm_object_part_content_unset(pMainLayout, "elm.swallow.volume"); + + MpVideoVolumeCtrlHide(); + +} diff --git a/src/mp-video-volume-ctrl.c b/src/mp-video-volume-ctrl.c new file mode 100644 index 0000000..ce0b246 --- /dev/null +++ b/src/mp-video-volume-ctrl.c @@ -0,0 +1,450 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "video-player.h" + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-volume-ctrl.h" + +//#include "mp-video-statistics.h" + +#define VOLUME_CTRL_HIDE_TIMER_INTERVAL 3.0 +#define VOLUME_CTRL_DRAG_TIMER_INTERVAL 0.3 + + +typedef struct __MpVolumeCtrlData MpVolumeCtrlData; + +struct __MpVolumeCtrlData{ + VideoAppData *pAppData; + + Evas_Object *pLayout; + + Ecore_Timer *pHideTimer; + Ecore_Timer *pDragTimer; + + int nMaxVol; + int nMinVol; + + int nCurVol; + +}; + +static MpVolumeCtrlData *pVolumeData = NULL; + +static void MpVideoVolumeCtrlUpdateTextValue(void *pUserData) +{ + + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("Volume ctrl data is null."); + return; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + char szVol[3] = {0,}; + snprintf(szVol, 3, "%d", pCtrlData->nCurVol); + + VideoLogError("%d , %s", pCtrlData->nCurVol, szVol); + + edje_object_part_text_set(_EDJ(pCtrlData->pLayout), "volume.progress.circle.txt", szVol); + +} + +static void MpVideoVolumeCtrlUpdateDragValue(void *pUserData) +{ + + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("Volume ctrl data is null."); + return; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + + double fVolPos = 0.0; + fVolPos = ((double)pCtrlData->nCurVol/(double)pCtrlData->nMaxVol); + edje_object_part_drag_value_set(_EDJ(pCtrlData->pLayout), "volume.progress.drag", fVolPos, 0.0); + +} + +static int MpVideoVolumeCtrlGetMaxVolume() +{ + VideoLogInfo(""); + + int nRet = SOUND_MANAGER_ERROR_NONE; + int nMax = 0; + nRet = sound_manager_get_max_volume (SOUND_TYPE_MEDIA, &nMax); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogError("Sound manage get max volue fail : %d", nRet); + return -1; + } + + return nMax; +} +static int MpVideoVolumeCtrlGetCurVolume() +{ + VideoLogInfo(""); + + int nRet = SOUND_MANAGER_ERROR_NONE; + int nVol = 0; + nRet = sound_manager_get_volume (SOUND_TYPE_MEDIA, &nVol); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogError("Sound manage get current volue fail : %d", nRet); + return -1; + } + + return nVol; +} + +static void MpVideoVolumeCtrlSetCurVolume(int nVol) +{ + VideoLogInfo(""); + + int nRet = SOUND_MANAGER_ERROR_NONE; + nRet = sound_manager_set_volume (SOUND_TYPE_MEDIA, nVol); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogError("Sound manage get current volue fail : %d", nRet); + return; + } + + return; +} + +static Eina_Bool MpVideoVolumeCtrlHideTimerCb(void *pUserData) +{ + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return EINA_FALSE; + } + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + pCtrlData->pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pCtrlData->pAppData); + + return EINA_FALSE; +} + + +static Eina_Bool MpVideoVolumeCtrlDragTimerCb(void *pUserData) +{ + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return EINA_FALSE; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + double fVolPos = 0.0; + + edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL); + + pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos); + + MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol); + + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); + + return EINA_TRUE; +} + + + +static void MpVideoVolumeCtrlDragStartcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return; + } + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + pCtrlData->pDragTimer = ecore_timer_add(VOLUME_CTRL_DRAG_TIMER_INTERVAL, MpVideoVolumeCtrlDragTimerCb, (void *)pCtrlData); +} + +static void MpVideoVolumeCtrlDragStopcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return; + } + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + pCtrlData->pHideTimer = ecore_timer_add(VOLUME_CTRL_HIDE_TIMER_INTERVAL, MpVideoVolumeCtrlHideTimerCb, (void *)pCtrlData); + + if(pCtrlData->pDragTimer) + { + ecore_timer_del(pCtrlData->pDragTimer); + pCtrlData->pDragTimer = NULL; + } + + double fVolPos = 0.0; + edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL); + pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos); + + MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol); + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); +} + +static void MpVideoVolumeCtrlDragcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + double fVolPos = 0.0; + edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL); + pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos); + + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); + +} + + +void *MpVideoVolumeCtrlInit(void *pParent, void* pUserData) +{ + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return NULL; + } + + if(pParent == NULL) + { + VideoLogError("pParent is null."); + return NULL; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = NULL; + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pCtrlData = calloc(1, sizeof(MpVolumeCtrlData)); + + pCtrlData->nMinVol = 0; + pCtrlData->nMaxVol = MpVideoVolumeCtrlGetMaxVolume(); + pCtrlData->nCurVol = MpVideoVolumeCtrlGetCurVolume(); + + Evas_Object *layout = elm_layout_add(pParent); + elm_layout_file_set(layout, VIDEO_PLAYER_VOLUME_POPUP_EDJ, VOLUME_EDJ_GROUP); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_hide(layout); + + edje_object_signal_callback_add(_EDJ(layout), "drag,start", "volume.progress.drag", MpVideoVolumeCtrlDragStartcb, (void *)pCtrlData); + edje_object_signal_callback_add(_EDJ(layout), "drag,stop", "volume.progress.drag", MpVideoVolumeCtrlDragStopcb, (void *)pCtrlData); + edje_object_signal_callback_add(_EDJ(layout), "drag", "volume.progress.drag", MpVideoVolumeCtrlDragcb, (void *)pCtrlData); + + pCtrlData->pAppData = pAppData; + pCtrlData->pLayout = layout; + + MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol); + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); + MpVideoVolumeCtrlUpdateDragValue((void *)pCtrlData); + + pVolumeData = pCtrlData; + + return layout; + +} + +void MpVideoVolumeCtrlDestroy(void) +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return; + } + + if(pVolumeData->pLayout) + { + evas_object_del(pVolumeData->pLayout); + pVolumeData->pLayout = NULL; + + } + + if(pVolumeData->pHideTimer) + { + ecore_timer_del(pVolumeData->pHideTimer); + pVolumeData->pHideTimer = NULL; + } + + if(pVolumeData->pDragTimer) + { + ecore_timer_del(pVolumeData->pDragTimer); + pVolumeData->pDragTimer = NULL; + } + + free(pVolumeData); + pVolumeData = NULL; + +} + + +void MpVideoVolumeCtrlShow() +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return; + } + MpVolumeCtrlData *pCtrlData = pVolumeData; + + evas_object_show(pCtrlData->pLayout); + + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + pCtrlData->pHideTimer = ecore_timer_add(VOLUME_CTRL_HIDE_TIMER_INTERVAL, MpVideoVolumeCtrlHideTimerCb, (void *)pCtrlData); + +} + +void MpVideoVolumeCtrlHide() +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return; + } + + MpVolumeCtrlData *pCtrlData = pVolumeData; + + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + evas_object_hide(pCtrlData->pLayout); +} + + +void MpVideoVolumeCtrlSetVolume(int nVol) +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return; + } + MpVolumeCtrlData *pCtrlData = pVolumeData; + + if(nVol > pCtrlData->nMaxVol) + { + nVol = pCtrlData->nMaxVol; + } + + if(nVol < 0) + { + nVol = 0; + } + + MpVideoVolumeCtrlShow(); + + pCtrlData->nCurVol = nVol; + MpVideoVolumeCtrlSetCurVolume(nVol); + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); + MpVideoVolumeCtrlUpdateDragValue((void *)pCtrlData); + +} + +int MpVideoVolumeCtrlGetVolume() +{ + VideoLogInfo(""); + + return MpVideoVolumeCtrlGetCurVolume(); +} + +bool MpVideoVolumeCtrlGetShowStatus() +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return FALSE; + } + MpVolumeCtrlData *pCtrlData = pVolumeData; + + if(pCtrlData->pHideTimer) + { + return TRUE; + } + + return FALSE; +} + diff --git a/src/video-player.c b/src/video-player.c new file mode 100755 index 0000000..e1e0941 --- /dev/null +++ b/src/video-player.c @@ -0,0 +1,530 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-app-ctrl.h" +#include "mp-util-media-service.h" +#include "mp-video-string-define.h" +#include "mp-external-ug.h" +#include "mp-video-service-ctrl.h" + +static void appResume(void *pUserData); + +static bool bIsForeground = FALSE; + +static Ecore_Idler *pInitIdlerHandle = NULL; + +static Eina_Bool _mp_focus_in_cb(void *pUserData, int nType, void *pEvent) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return ECORE_CALLBACK_PASS_ON; + } + + if (!pEvent) { + VideoLogInfo("[ERR] No exist pEvent."); + return ECORE_CALLBACK_PASS_ON; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Ecore_X_Event_Window_Focus_In *ev = (Ecore_X_Event_Window_Focus_In *)pEvent; + + if (ev->win == MpUtilGetMainWindowXID()) + { + if(bIsForeground && MpVideoAppCtrlIsTopView(pUserData)) + { + VideoLogInfo("resume for focus in"); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } + + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool _mp_focus_out_cb(void *pUserData, int nType, void *pEvent) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return ECORE_CALLBACK_PASS_ON; + } + + if (!pEvent) { + VideoLogInfo("[ERR] No exist pEvent."); + return ECORE_CALLBACK_PASS_ON; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)pEvent; + + if (ev->win == MpUtilGetMainWindowXID()) + { + if(bIsForeground && MpVideoAppCtrlIsTopView(pUserData)) + { + VideoLogInfo("pause for focus in"); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + } + + return ECORE_CALLBACK_PASS_ON; + +} + + +static Eina_Bool _mp_client_message_cb(void *pUserData, int nType, void *pEvent) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return ECORE_CALLBACK_PASS_ON; + } + + if (!pEvent) { + VideoLogInfo("[ERR] No exist pEvent."); + return ECORE_CALLBACK_PASS_ON; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Ecore_X_Event_Client_Message *ev = (Ecore_X_Event_Client_Message *) pEvent; + + if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) + { + if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) + { + VideoLogInfo("quickpanel show"); + if(MpVideoAppCtrlIsTopView(pUserData) && bIsForeground) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + } + else + { + VideoLogInfo("quickpanel hide"); + if(MpVideoAppCtrlIsTopView(pUserData) && bIsForeground) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } + } + + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool _mp_app_init_idler_cb(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return ECORE_CALLBACK_CANCEL; + } + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _mp_client_message_cb, (void *)pAppData); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _mp_focus_in_cb, (void *)pAppData); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _mp_focus_out_cb, (void *)pAppData); + + pInitIdlerHandle = NULL; + + return ECORE_CALLBACK_CANCEL; + +} + +static void _mp_alloc_service_value(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->szSubtitle = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szVideoTitle = calloc(1, sizeof(char) * STR_LEN_MAX); + + pAppData->szMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szPreMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szNextMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX); + + pAppData->szProxyAddress = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szUserAgent = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szCookie = calloc(1, sizeof(char) * STR_LEN_MAX); +} + + +static void _mp_free_service_value(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pAppData->szSubtitle) + { + free(pAppData->szSubtitle); + pAppData->szSubtitle = NULL; + } + + if(pAppData->szVideoTitle) + { + free(pAppData->szVideoTitle); + pAppData->szVideoTitle = NULL; + } + + if(pAppData->szMediaUri) + { + free(pAppData->szMediaUri); + pAppData->szMediaUri = NULL; + } + if(pAppData->szPreMediaUri) + { + free(pAppData->szPreMediaUri); + pAppData->szPreMediaUri = NULL; + } + + if(pAppData->szNextMediaUri) + { + free(pAppData->szNextMediaUri); + pAppData->szNextMediaUri = NULL; + } + + if(pAppData->szProxyAddress) + { + free(pAppData->szProxyAddress); + pAppData->szProxyAddress = NULL; + } + + if(pAppData->szUserAgent) + { + free(pAppData->szUserAgent); + pAppData->szUserAgent = NULL; + } + + if(pAppData->szCookie) + { + free(pAppData->szCookie); + pAppData->szCookie = NULL; + } +} + +static bool appCreate(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + _mp_alloc_service_value((void *)pAppData); + + pInitIdlerHandle = ecore_idler_add(_mp_app_init_idler_cb, (void *)pAppData); + +#ifdef TARGET + elm_config_preferred_engine_set("opengl_x11"); +#else + elm_config_preferred_engine_set("software_x11"); +#endif + + elm_theme_extension_add(NULL, VIDEO_CUSTOM_THEME); + + + MpUtilInitSession(); + + if(!MpUtilMMCstatusNoti(pAppData)) + { + VideoLogError("[ERR] Fail to set MMC notification."); + } + + bIsForeground = FALSE; + + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + + return TRUE; +} + +static void appService(service_h pAppSvcHandle, void *pUserData) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + char* szGetMediaUri = NULL; + + if(!pAppSvcHandle) + { + VideoLogInfo("[ERR] No exist pBundle."); + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + return; + } + + if(pAppData->pMainWindow == NULL) + { + VideoLogInfo("Create main window."); + pAppData->pMainWindow = (Evas_Object *)MpUtilCreateMainWindow(PACKAGE); + } + else + { + if(strlen(pAppData->szMediaUri) > 0) + { + MpVideoAppCtrlResetForRelaunching(pAppData); + } + } + + if(MpVideoServiceCtrlInitServiceParser((void*)pAppSvcHandle, &szGetMediaUri) == MP_ERROR_PLAYER_TYPE) + { + VideoLogInfo("[ERR] Fail to init service parser."); + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + return; + } + + if(szGetMediaUri) + { + strncpy(pAppData->szMediaUri, szGetMediaUri, STR_LEN_MAX); + VideoLogInfo("szGetMediaUri : %s", pAppData->szMediaUri); + free(szGetMediaUri); + } + else + { + VideoLogInfo("No exist szGetMediaUri"); + } + + if(!MpUtilBatteryStatusNoti(pAppData)) + { + VideoLogInfo("[ERR] Fail to set Battery notification."); + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + return; + } + bIsForeground = TRUE; + + MpUtilMediaSvcInitSession(); + MpUtilSetKeyGrab(HOME_KEY, KEY_GRAB_SHARED); + MpVideoAppCtrlInit(pAppData); +} + +static void appExit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + + MpUtilMultimediaVolumeKeyUngrab(); + MpUtilLcdOffForPowerButton(); + MpUtilSetKeyUngrab(HOME_KEY); + MpUtilMultimediaKeyUngrab(); + MpUtilMMCstatusNotiIgnore(); + MpUtilBatteryStatusNotiIgnore(); + MpUtilFinishSession(); + MpUtilDeletePopupHandle(); + MpUtilMediaSvcDestoryVideoList(); + MpUtilMediaSvcFinishSession(); + + _mp_free_service_value(pUserData); + + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + +#ifdef TA_SVAE_PERF_FILE + VP_PERF_DEINIT(); +#endif +} + +static void appPause(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserdata handle."); + return; + } + + VideoLogInfo(""); + + MpUtilMultimediaVolumeKeyUngrab(); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(MpVideoAppCtrlIsCheckCallStatus()) + { + VideoLogInfo("Skip for Call Pause."); + MpVideoAppCtrlInitCheckCallStatus(); + } + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoLogInfo("Pause application at video player."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + VideoLogInfo("Pause application at streaming player."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + + MpUtilDeletePopupHandle(); + + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + + evas_object_hide(pAppData->pMainWindow); +} + +static void appResume(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserdata handle."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bIsForeground) + { + VideoLogInfo("Defence overlap launching."); + return; + } + + MpUtilMultimediaVolumeKeyGrab(); + + if(!MpVideoAppCtrlIsTopView(pUserData)) + { + VideoLogError("Overlay is not staied in top."); + return; + } + + if(MpVideoAppCtrlIsExistPlayerHandle()) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData); + } + + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + + bIsForeground = TRUE; + MpVideoAppCtrlSetForCheckingForegroundwindow(TRUE); + + evas_object_show(pAppData->pMainWindow); +} + +static void appRotate(app_device_orientation_e rotateState, void *pUserData) +{ + VideoLogInfo(""); + + int nCurRotate = 0; + + switch(rotateState) + { + case APP_DEVICE_ORIENTATION_0: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL"); + nCurRotate = VIDEO_ROTATE_PORTRAIT_NORMAL; + break; + + case APP_DEVICE_ORIENTATION_90: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE"); + nCurRotate = VIDEO_ROTATE_LANDSCAPE_REVERSE; + break; + + case APP_DEVICE_ORIENTATION_180: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE"); + nCurRotate = VIDEO_ROTATE_PORTRAIT_REVERSE; + break; + + case APP_DEVICE_ORIENTATION_270: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL"); + nCurRotate = VIDEO_ROTATE_LANDSCAPE_NORMAL; + break; + } + + MpVideoAppCtrlSetRotation(nCurRotate, pUserData); +} + +int main(int argc, char *argv[]) +{ + VideoAppData pAppData; + memset(&pAppData, 0, sizeof(VideoAppData)); + + app_event_callback_s st_appEventService; + + st_appEventService.create = appCreate; + st_appEventService.terminate = appExit; + st_appEventService.pause = appPause; + st_appEventService.resume = appResume; + st_appEventService.service = appService; + st_appEventService.low_memory = NULL; + st_appEventService.low_battery = NULL; + st_appEventService.device_orientation = appRotate; + st_appEventService.language_changed = NULL; + st_appEventService.region_format_changed = NULL; + + if(app_efl_main(&argc, &argv, &st_appEventService, &pAppData) != APP_ERROR_NONE) + { + VideoLogInfo("[ERR] app_efl_main()."); + return -1; + } + + VideoLogInfo("escape app_efl_main() loop."); + + return 0; +} -- 2.7.4